feat: upgrade to vite@3 & @vitejs/plugin-vue@3

This commit is contained in:
YunYouJun 2022-10-03 01:41:11 +08:00
parent 98bdd0684f
commit 7fb9cf456c
28 changed files with 306 additions and 366 deletions

View File

@ -0,0 +1,10 @@
<template>
<div m="10">
<hr opacity="10" m="10">
<p font="serif black">
🌟 广告位招租 🌟
<br>
<del>云游君在线征婚</del>
</p>
</div>
</template>

View File

@ -1,11 +0,0 @@
<script lang="ts" setup>
import Home from 'valaxy-theme-yun/layouts/home.vue'
</script>
<template>
<Home>
<template #footer>
<UpyunSupport />
</template>
</Home>
</template>

View File

@ -1,66 +0,0 @@
<script lang="ts" setup>
import Layout from 'valaxy-theme-yun/layouts/layout.vue'
// override theme base(global) layout
</script>
<template>
<Layout>
<template #bg>
<slot name="bg" />
</template>
<template #sidebar>
<slot name="sidebar" />
</template>
<template #sidebar-child>
<slot name="sidebar-child" />
</template>
<slot />
<template #main-header>
<slot name="main-header" />
</template>
<template #main-header-after>
<slot name="main-header-after" />
</template>
<template #main>
<slot name="main" />
</template>
<template #main-content>
<slot name="main-content" />
</template>
<template #main-content-after>
<slot name="main-content-after" />
</template>
<template #main-nav-before>
<slot name="main-nav-before" />
</template>
<template #main-nav-after>
<slot name="main-nav-after" />
</template>
<template #footer>
<slot name="footer" />
<UpyunSupport />
</template>
<template #aside>
<slot name="aside" />
</template>
<template #aside-custom>
<div m="10">
<hr opacity="10" m="10">
<p font="serif black">
🌟 广告位招租 🌟
<br>
<del>云游君在线征婚</del>
</p>
</div>
</template>
</Layout>
</template>

View File

@ -18,6 +18,6 @@
},
"devDependencies": {
"nodemon": "^2.0.20",
"vite-plugin-inspect": "^0.6.0"
"vite-plugin-inspect": "^0.7.4"
}
}

View File

@ -25,3 +25,5 @@ pnpm test:space
## Vite3 打包卡住
> 原因未知,猜测与 pnpm monorepo node_modules transforming 过多有关
已解决,似乎与 `<YunFooter />` `<slot />` 有关。

View File

@ -1,6 +1,5 @@
{
"name": "@valaxyjs/monorepo",
"type": "module",
"version": "0.10.4",
"private": true,
"packageManager": "pnpm@7.3.0",

View File

@ -62,9 +62,9 @@ const YunTwikoo = config.value.comment.waline.enable
</YunCard>
</slot>
<YunFooter>
<slot name="footer" />
</YunFooter>
<slot name="main-footer-before" />
<YunFooter />
<slot name="main-footer-after" />
</div>
</slot>

View File

@ -2,27 +2,21 @@
import { capitalize, computed } from 'vue'
import { useConfig } from 'valaxy'
import { useI18n } from 'vue-i18n'
import pkg from 'valaxy/package.json'
import { useThemeConfig } from '../composables'
const { t } = useI18n()
const config = useConfig()
const themeConfig = useThemeConfig()
const year = new Date().getFullYear()
const isThisYear = computed(() => {
return year === themeConfig.value.footer.since
})
const poweredHtml = computed(() => t('footer.powered', [`<a href="${pkg.repository}" target="_blank" rel="noopener">Valaxy</a> v${pkg.version}`]))
const footerIcon = computed(() => themeConfig.value.footer.icon!)
const { t } = useI18n()
const poweredHtml = computed(() => t('footer.powered', [`<a href="${config.value.pkg.repository}" target="_blank" rel="noopener">Valaxy</a> v${config.value.pkg.version}`]))
const footerIcon = computed(() => themeConfig.value.footer.icon || { url: config.value.pkg.repository, name: config.value.pkg.name })
</script>
<template>
<footer class="va-footer p-4" text="center sm" style="color:var(--va-c-text-light)">
<footer class="va-footer p-4 text-$va-c-text-light" text="center sm">
<div v-if="themeConfig.footer.beian?.enable && themeConfig.footer.beian.icp" class="beian" m="y-2">
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">
{{ themeConfig.footer.beian.icp }}
@ -38,15 +32,14 @@ const footerIcon = computed(() => themeConfig.value.footer.icon!)
{{ year }}
</span>
<a m="x-2" class="inline-flex animate-pulse" :href="footerIcon.url" target="_blank" :title="footerIcon.title">
<a v-if="themeConfig.footer.icon" m="x-2" class="inline-flex animate-pulse" :href="footerIcon.url" target="_blank" :title="footerIcon.title">
<div :class="footerIcon.name" />
</a>
<span>{{ config.author.name }}</span>
</div>
<div v-if="themeConfig.footer.powered" class="powered" m="2">
<span v-html="poweredHtml" /> | <span>{{ t('footer.theme') }} - <a :href="themeConfig.pkg.homepage" :title="`valaxy-theme-${config.theme}`" target="_blank">{{ capitalize(config.theme) }}</a> v{{ themeConfig.pkg.version }}</span>
<span v-html="poweredHtml" /> | <span>{{ t('footer.theme') }} - <a :href="themeConfig.pkg.homepage" :title="themeConfig.pkg.name" target="_blank">{{ capitalize(config.theme) }}</a> v{{ themeConfig.pkg.version }}</span>
</div>
<slot />

View File

@ -27,9 +27,7 @@ const isHome = useLayout('home')
<router-view />
</slot>
<YunFooter>
<slot name="footer" />
</YunFooter>
<YunFooter />
</main>
<YunSearch v-if="config.search.enable" />

View File

@ -45,9 +45,6 @@ const config = useConfig()
<template #aside-custom>
<slot name="aside-custom" />
</template>
<template #footer>
<slot name="footer" />
</template>
</component>
</router-view>

10
packages/valaxy/bin/valaxy.cjs Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env node
'use strict'
const { run } = require('../dist/node/cli.cjs')
function main() {
run()
}
main()

View File

@ -1,11 +0,0 @@
#!/usr/bin/env node
'use strict'
// const path = require('path')
function main() {
const { run } = require('../dist/node/cli')
run()
}
main()

10
packages/valaxy/bin/valaxy.mjs Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env node
'use strict'
import { run } from '../dist/node/cli.mjs'
function main() {
run()
}
main()

View File

@ -1,6 +1,7 @@
import type { Ref } from 'vue'
import { computed, onMounted, onUnmounted, ref } from 'vue'
import { useFrontmatter, useLayout } from '..'
import { useFrontmatter } from './common'
import { useLayout } from './layout'
export function useActiveSidebarLinks(container: Ref<HTMLElement>, marker: Ref<HTMLElement>) {
const onScroll = throttleAndDebounce(setActiveLink, 200)

View File

@ -23,6 +23,10 @@ export async function ssgBuild(
) {
const defaultConfig: InlineConfig = {
plugins: await ViteValaxyPlugins(options),
ssr: {
// TODO: workaround until they support native ESM
noExternal: ['workbox-window', /vue-i18n/],
},
}
defaultConfig.ssgOptions = {

View File

@ -10,6 +10,7 @@ import openBrowser from 'open'
import consola from 'consola'
import { yellow } from 'kolorist'
import { hideBin } from 'yargs/helpers'
import { version } from '../package.json'
import { findFreePort } from './utils/net'
import { resolveOptions } from './options'
@ -22,7 +23,7 @@ import { build, ssgBuild } from './build'
import { build as rssBuild } from './rss'
import { getIndexHtml, mergeViteConfigs } from './common'
const cli = yargs.scriptName('valaxy')
const cli = yargs(hideBin(process.argv)).scriptName('valaxy')
.usage('$0 [args]')
.version(version)
.showHelpOnFail(false)

View File

@ -1,6 +1,7 @@
import type { VitePluginConfig as UnoCssConfig } from 'unocss/vite'
import type { Awaitable } from '@antfu/utils'
import type { DefaultThemeConfig, SiteConfig, UserSiteConfig } from '../types'
import pkg from '../package.json'
import type { ResolvedValaxyOptions } from './options'
import type { UserConfig, ValaxyAddonResolver, ValaxyConfig } from './types'
@ -43,6 +44,7 @@ export function defineAddon(
}
export const defaultSiteConfig: SiteConfig = {
pkg,
mode: 'auto',
url: '/',
lang: 'en',

View File

@ -2,8 +2,8 @@ import MarkdownIt from 'markdown-it'
import type { Theme } from 'shiki'
import Anchor from 'markdown-it-anchor'
import Emoji from 'markdown-it-emoji'
import anchorPlugin from 'markdown-it-anchor'
import emojiPlugin from 'markdown-it-emoji'
import LinkAttributes from 'markdown-it-link-attributes'
import TOC from 'markdown-it-table-of-contents'
import TaskLists from 'markdown-it-task-lists'
@ -15,7 +15,6 @@ import Katex from './markdown-it/katex'
import { type Blocks, containerPlugin } from './markdown-it/container'
import { headingPlugin } from './markdown-it/headings'
import { slugify } from './slugify'
import { parseHeader } from './markdown-it/parseHeader'
import { highlight } from './highlight'
import { highlightLinePlugin, preWrapperPlugin } from './markdown-it/highlightLines'
@ -42,7 +41,7 @@ export interface MarkdownOptions {
*/
config?: (md: MarkdownIt) => void
anchor?: {
permalink?: Anchor.AnchorOptions['permalink']
permalink?: anchorPlugin.AnchorOptions['permalink']
}
// https://github.com/Oktavilla/markdown-it-table-of-contents
toc?: {
@ -83,22 +82,22 @@ export async function setupMarkdownPlugins(md: MarkdownIt, mdOptions: MarkdownOp
},
})
md.use(Katex, mdOptions.katex)
md.use(emojiPlugin)
if (!isExcerpt) {
md.use(Anchor, {
md.use(anchorPlugin, {
slugify,
permalink: Anchor.permalink.ariaHidden({}),
permalink: anchorPlugin.permalink.ariaHidden({}),
...mdOptions.anchor,
})
.use(TOC, {
slugify,
includeLevel: [2, 3, 4],
format: parseHeader,
...mdOptions.toc,
})
}
md.use(Emoji)
.use(TaskLists)
md.use(TaskLists)
const originalRender = md.render
md.render = (...args) => {

View File

@ -1,8 +1,8 @@
// ref vitepress
import { resolveTitleFromToken } from '@mdit-vue/shared'
import type MarkdownIt from 'markdown-it'
import type { MarkdownRenderer } from '..'
import { slugify } from '../slugify'
import { deeplyParseHeader } from './parseHeader'
export const headingPlugin = (md: MarkdownIt, include = [1, 2, 3, 4]) => {
md.renderer.rules.heading_open = (tokens, i, options, env, self) => {
@ -20,9 +20,13 @@ export const headingPlugin = (md: MarkdownIt, include = [1, 2, 3, 4]) => {
const matched = content.match(/\{lang=\"(.*)\"\}/)
const lang = matched ? matched[1] : ''
const titleToken = md.parseInline(title, {})[0]
headers.push({
level: parseInt(token.tag.slice(1), 10),
title: deeplyParseHeader(title),
title: resolveTitleFromToken(titleToken, {
shouldAllowHtml: false,
shouldEscapeText: false,
}),
slug: slug || slugify(title),
lang,
})

View File

@ -1,74 +0,0 @@
// ref vitepress
// Since VuePress needs to extract the header from the markdown source
// file and display it in the sidebar or title (#238), this file simply
// removes some unnecessary elements to make header displays well at
// sidebar or title.
//
// But header's parsing in the markdown content is done by the markdown
// loader based on markdown-it. markdown-it parser will will always keep
// HTML in headers, so in VuePress, after being parsed by the markdown
// loader, the raw HTML in headers will finally be parsed by Vue-loader.
// so that we can write HTML/Vue in the header. One exception is the HTML
// wrapped by <code>(markdown token: '`') tag.
// https://v8.dev/features/import-assertions esm
import emojiData from 'markdown-it-emoji/lib/data/full.json' assert { type: 'json' }
const parseEmojis = (str: string) => {
return str.replace(
/:(.+?):/g,
(placeholder, key) => (emojiData as any)[key] || placeholder,
)
}
const unescapeHtml = (html: string) =>
html
.replace(/&quot;/g, '"')
.replace(/&#39;/g, '\'')
.replace(/&#x3A;/g, ':')
.replace(/&lt;/g, '<')
.replace(/&gt;/g, '>')
const removeMarkdownTokens = (str: string) =>
str
.replace(/(\[(.[^\]]+)\]\((.[^)]+)\))/g, '$2') // []()
.replace(/(`|\*{1,3}|_)(.*?[^\\])\1/g, '$2') // `{t}` | *{t}* | **{t}** | ***{t}*** | _{t}_
.replace(/(\\)(\*|_|`|\!|<|\$)/g, '$2') // remove escape char '\'
const remvoeCustomAnchor = (str: string) =>
str.replace(/\{#([a-z0-9\-_]+?)\}\s*$/, '') // {#custom-header}
const trim = (str: string) => str.trim()
// This method remove the raw HTML but reserve the HTML wrapped by `<code>`.
// e.g.
// Input: "<a> b", Output: "b"
// Input: "`<a>` b", Output: "`<a>` b"
export const removeNonCodeWrappedHTML = (str: string) => {
return String(str).replace(/(^|[^><`\\])<.*>([^><`]|$)/g, '$1$2')
}
const compose = (...processors: ((str: string) => string)[]) => {
if (processors.length === 0)
return (input: string) => input
if (processors.length === 1)
return processors[0]
return processors.reduce((prev, next) => {
return str => next(prev(str))
})
}
// Unescape html, parse emojis and remove some md tokens.
export const parseHeader = compose(
unescapeHtml,
parseEmojis,
remvoeCustomAnchor,
removeMarkdownTokens,
trim,
)
// Also clean the html that isn't wrapped by code.
// Because we want to support using VUE components in headers.
// e.g. https://vuepress.vuejs.org/guide/using-vue.html#badge
export const deeplyParseHeader = compose(removeNonCodeWrappedHTML, parseHeader)

View File

@ -5,11 +5,11 @@ import c from 'picocolors'
import matter from 'gray-matter'
import LRUCache from 'lru-cache'
import _debug from 'debug'
import { resolveTitleFromToken } from '@mdit-vue/shared'
import { EXTERNAL_URL_RE, getGitTimestamp, slash, transformObject } from '../utils'
import type { HeadConfig, PageData } from '../../types'
import { deeplyParseHeader } from './markdown-it/parseHeader'
import { createMarkdownRenderer } from '.'
import type { MarkdownOptions } from '.'
import type { MarkdownOptions, MarkdownRenderer } from '.'
const jsStringBreaker = '\u200B'
const vueTemplateBreaker = '<wbr>'
@ -54,16 +54,21 @@ export interface MarkdownCompileResult {
includes: string[]
}
const inferTitle = (frontmatter: Record<string, any>, content: string) => {
if (frontmatter.title)
return deeplyParseHeader(frontmatter.title)
const match = content.match(/^\s*#+\s+(.*)/m)
if (match)
return deeplyParseHeader(match[1].trim())
return ''
const inferTitle = (
md: MarkdownRenderer,
frontmatter: Record<string, any>,
title: string,
) => {
if (typeof frontmatter.title === 'string') {
const titleToken = md.parseInline(frontmatter.title, {})[0]
if (titleToken) {
return resolveTitleFromToken(titleToken, {
shouldAllowHtml: false,
shouldEscapeText: false,
})
}
}
return title
}
const getHeadMetaContent = (
@ -183,7 +188,7 @@ export async function createMarkdownToVueRenderFn(
// provide load
const pageData: PageData = {
title: inferTitle(frontmatter, content),
title: inferTitle(md, frontmatter, ''),
titleTemplate: frontmatter.titleTemplate,
description: inferDescription(frontmatter),
frontmatter,

View File

@ -0,0 +1,26 @@
import type { Plugin } from 'vite'
import { objectEntries } from '@antfu/utils'
import type { ResolvedValaxyOptions } from '../options'
import { getDefine } from './extendConfig'
export function createFixPlugins(
options: ResolvedValaxyOptions,
): Plugin[] {
const define = objectEntries(getDefine(options))
return [
{
name: 'valaxy:flags',
enforce: 'pre',
transform(code, id) {
if (id.match(/\.vue($|\?)/)) {
const original = code
define.forEach(([from, to]) => {
code = code.replace(new RegExp(from, 'g'), to)
})
if (original !== code)
return code
}
},
},
]
}

View File

@ -19,6 +19,7 @@ import { setupMarkdownPlugins } from '../markdown'
import { createUnocssPlugin } from './unocss'
import { createConfigPlugin } from './extendConfig'
import { createClientSetupPlugin } from './setupClient'
import { createFixPlugins } from './patchTransform'
import { createValaxyPlugin } from '.'
export async function ViteValaxyPlugins(
@ -218,5 +219,6 @@ export async function ViteValaxyPlugins(
}),
splitVendorChunkPlugin(),
createFixPlugins(options),
]
}

View File

@ -5,10 +5,11 @@ import type Pages from 'vite-plugin-pages'
import type { UserConfig as ViteUserConfig } from 'vite'
import type { presetAttributify, presetIcons, presetTypography, presetUno } from 'unocss'
import type { DefaultThemeConfig, UserSiteConfig } from '../types'
import type ValaxyPackage from '../package.json'
import type { ResolvedValaxyOptions } from './options'
import type { MarkdownOptions } from './markdown'
export type ValaxyConfig<ThemeConfig = DefaultThemeConfig> = UserSiteConfig<ThemeConfig> & ValaxyExtendConfig
export type ValaxyConfig<ThemeConfig = DefaultThemeConfig> = UserSiteConfig<ThemeConfig> & ValaxyExtendConfig & { pkg: typeof ValaxyPackage }
export type UserConfig<ThemeConfig = DefaultThemeConfig> = ValaxyConfig<ThemeConfig>
/**
* fn with options for theme config

View File

@ -1,5 +1,6 @@
{
"name": "valaxy",
"type": "module",
"version": "0.10.4",
"description": "📄 Vite & Vue powered static blog generator.",
"author": {
@ -18,25 +19,26 @@
"exports": {
".": {
"types": "./index.d.ts",
"require": "./dist/node/index.js",
"require": "./dist/node/index.cjs",
"import": "./dist/node/index.mjs"
},
"./client/*": "./client/*",
"./client": "./client/index.ts",
"./node": {
"types": "./dist/node/index.d.ts",
"require": "./dist/node/index.js",
"require": "./dist/node/index.cjs",
"import": "./dist/node/index.mjs"
},
"./types": "./dist/types/index.d.ts",
"./*": "./*"
},
"main": "dist/node/index.js",
"main": "dist/node/index.cjs",
"module": "dist/node/index.mjs",
"types": "index.d.ts",
"bin": {
"vala": "./bin/valaxy.js",
"valaxy": "./bin/valaxy.js"
"vala": "./bin/valaxy.cjs",
"valam": "./bin/valaxy.mjs",
"valaxy": "./bin/valaxy.cjs"
},
"files": [
"index.d.ts",
@ -61,7 +63,7 @@
"@iconify-json/carbon": "^1.1.8",
"@iconify-json/ri": "^1.1.3",
"@intlify/vite-plugin-vue-i18n": "^6.0.3",
"@vitejs/plugin-vue": "^2.3.3",
"@vitejs/plugin-vue": "^3.1.2",
"@vueuse/core": "^9.3.0",
"@vueuse/head": "^0.8.0",
"consola": "^2.15.3",
@ -96,7 +98,7 @@
"unconfig": "^0.3.6",
"unocss": "^0.45.26",
"unplugin-vue-components": "^0.22.7",
"vite": "^2.9.14",
"vite": "^3.1.4",
"vite-plugin-pages": "^0.26.0",
"vite-plugin-vue-layouts": "^0.7.0",
"vite-ssg": "0.19.2",
@ -107,6 +109,7 @@
"yargs": "^17.6.0"
},
"devDependencies": {
"@mdit-vue/shared": "^0.11.0",
"@types/cross-spawn": "^6.0.2",
"@types/ejs": "^3.1.1",
"@types/katex": "^0.14.0",

View File

@ -19,5 +19,10 @@ export default defineConfig((options) => {
'/@valaxyjs/site',
'/@valaxyjs/context',
],
outExtension({ format }) {
return {
js: `.${format === 'esm' ? 'mjs' : 'cjs'}`,
}
},
}
})

View File

@ -1,3 +1,5 @@
import type ValaxyPackage from '../package.json'
export type DefaultThemeConfig = Record<string, any>
export interface SocialLink {
@ -27,6 +29,10 @@ export interface AlgoliaSearchOptions {
// shared with valaxy node and client
export interface SiteConfig<T = DefaultThemeConfig> {
/**
* valaxy package.json
*/
pkg: typeof ValaxyPackage
/**
* enable auto (light/dark mode)
* @default 'auto'

View File

@ -54,14 +54,14 @@ importers:
valaxy: link:../../packages/valaxy
valaxy-addon-icons: workspace:*
valaxy-theme-yun: link:../../packages/valaxy-theme-yun
vite-plugin-inspect: ^0.6.0
vite-plugin-inspect: ^0.7.4
dependencies:
valaxy: link:../../packages/valaxy
valaxy-addon-icons: link:../../packages/valaxy-addon-icons
valaxy-theme-yun: link:../../packages/valaxy-theme-yun
devDependencies:
nodemon: 2.0.20
vite-plugin-inspect: 0.6.1
vite-plugin-inspect: 0.7.4
packages/create-valaxy:
specifiers:
@ -94,6 +94,7 @@ importers:
'@iconify-json/carbon': ^1.1.8
'@iconify-json/ri': ^1.1.3
'@intlify/vite-plugin-vue-i18n': ^6.0.3
'@mdit-vue/shared': ^0.11.0
'@types/cross-spawn': ^6.0.2
'@types/ejs': ^3.1.1
'@types/katex': ^0.14.0
@ -101,7 +102,7 @@ importers:
'@types/markdown-it-link-attributes': ^3.0.1
'@types/nprogress': ^0.2.0
'@types/yargs': ^17.0.13
'@vitejs/plugin-vue': ^2.3.3
'@vitejs/plugin-vue': ^3.1.2
'@vueuse/core': ^9.3.0
'@vueuse/head': ^0.8.0
consola: ^2.15.3
@ -139,7 +140,7 @@ importers:
unconfig: ^0.3.6
unocss: ^0.45.26
unplugin-vue-components: ^0.22.7
vite: ^2.9.14
vite: ^3.1.4
vite-plugin-pages: ^0.26.0
vite-plugin-vue-layouts: ^0.7.0
vite-ssg: 0.19.2
@ -153,8 +154,8 @@ importers:
'@ctrl/tinycolor': 3.4.1
'@iconify-json/carbon': 1.1.8
'@iconify-json/ri': 1.1.3
'@intlify/vite-plugin-vue-i18n': 6.0.3_vite@2.9.14+vue-i18n@9.2.2
'@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.40
'@intlify/vite-plugin-vue-i18n': 6.0.3_vite@3.1.4+vue-i18n@9.2.2
'@vitejs/plugin-vue': 3.1.2_vite@3.1.4+vue@3.2.40
'@vueuse/core': 9.3.0_vue@3.2.40
'@vueuse/head': 0.8.0_vue@3.2.40
consola: 2.15.3
@ -187,18 +188,19 @@ importers:
shiki: 0.11.1
star-markdown-css: 0.4.1
unconfig: 0.3.6
unocss: 0.45.26_vite@2.9.14
unplugin-vue-components: 0.22.7_vite@2.9.14+vue@3.2.40
vite: 2.9.14_sass@1.55.0
vite-plugin-pages: 0.26.0_vite@2.9.14
vite-plugin-vue-layouts: 0.7.0_bgfmpd7bcmjmhclxr2rtkrrk6q
vite-ssg: 0.19.2_3vxeam2qp523mad42mzwsiujk4
unocss: 0.45.26_vite@3.1.4
unplugin-vue-components: 0.22.7_vite@3.1.4+vue@3.2.40
vite: 3.1.4_sass@1.55.0
vite-plugin-pages: 0.26.0_vite@3.1.4
vite-plugin-vue-layouts: 0.7.0_rqa7paltdakk2bevhdd6jag4cm
vite-ssg: 0.19.2_anhuwci7wtosqobeegun7dnn2e
vite-ssg-sitemap: 0.4.3
vue: 3.2.40
vue-i18n: 9.2.2_vue@3.2.40
vue-router: 4.1.5_vue@3.2.40
yargs: 17.6.0
devDependencies:
'@mdit-vue/shared': 0.11.0
'@types/cross-spawn': 6.0.2
'@types/ejs': 3.1.1
'@types/katex': 0.14.0
@ -597,6 +599,24 @@ packages:
get-tsconfig: 4.2.0
dev: true
/@esbuild/android-arm/0.15.10:
resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-loong64/0.15.10:
resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-loong64/0.15.7:
resolution: {integrity: sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==}
engines: {node: '>=12'}
@ -775,7 +795,7 @@ packages:
engines: {node: '>= 14'}
dev: false
/@intlify/vite-plugin-vue-i18n/6.0.3_vite@2.9.14+vue-i18n@9.2.2:
/@intlify/vite-plugin-vue-i18n/6.0.3_vite@3.1.4+vue-i18n@9.2.2:
resolution: {integrity: sha512-6SgNzPAOCR90wvt368lKzi7f/5ZEWJn22UCGvhFsP3XvKqlF3cVzojahgQ6o+LTdCkExeM6wPgd+haFf28E9VQ==}
engines: {node: '>= 14.6'}
peerDependencies:
@ -796,7 +816,7 @@ packages:
debug: 4.3.4
fast-glob: 3.2.12
source-map: 0.6.1
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
vue-i18n: 9.2.2_vue@3.2.40
transitivePeerDependencies:
- supports-color
@ -839,6 +859,18 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: false
/@mdit-vue/shared/0.11.0:
resolution: {integrity: sha512-eiGe42y7UYpjO6/8Lg6OpAtzZrRU9k8dhpX1e/kJMTcL+tn+XkqRMJJ8I2pdrOQMSkgvIva5FNAriykqFzkdGg==}
dependencies:
'@mdit-vue/types': 0.11.0
'@types/markdown-it': 12.2.3
markdown-it: 13.0.1
dev: true
/@mdit-vue/types/0.11.0:
resolution: {integrity: sha512-ygCGP7vFpqS02hpZwEe1uz8cfImWX06+zRs08J+tCZRKb6k+easIaIHFtY9ZSxt7j9L/gAPLDo/5RmOT6z0DPQ==}
dev: true
/@nodelib/fs.scandir/2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@ -1166,12 +1198,12 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
/@unocss/astro/0.45.26_vite@2.9.14:
/@unocss/astro/0.45.26_vite@3.1.4:
resolution: {integrity: sha512-jAdbYNwjyzh05B4B7lhuHYmkNfmIZsQGhRNXogOx0t1BMzRZg9jID5xsJiujaElQL6ll53pbuRRyGV80o75n0Q==}
dependencies:
'@unocss/core': 0.45.26
'@unocss/reset': 0.45.26
'@unocss/vite': 0.45.26_vite@2.9.14
'@unocss/vite': 0.45.26_vite@3.1.4
transitivePeerDependencies:
- vite
dev: false
@ -1304,7 +1336,7 @@ packages:
'@unocss/core': 0.45.26
dev: false
/@unocss/vite/0.45.26_vite@2.9.14:
/@unocss/vite/0.45.26_vite@3.1.4:
resolution: {integrity: sha512-9BNJXBN0UG+olMbfIcVcrJgBetyO3HOP6Wx3r5Oc8iwfYSxrWQlHFF+yVJi/+oxsENfsjAgCRH7O+nF4FrXceA==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0
@ -1317,17 +1349,17 @@ packages:
'@unocss/scope': 0.45.26
'@unocss/transformer-directives': 0.45.26
magic-string: 0.26.5
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
dev: false
/@vitejs/plugin-vue/2.3.3_vite@2.9.14+vue@3.2.40:
resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
engines: {node: '>=12.0.0'}
/@vitejs/plugin-vue/3.1.2_vite@3.1.4+vue@3.2.40:
resolution: {integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^2.5.10
vite: ^3.0.0
vue: ^3.2.25
dependencies:
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
vue: 3.2.40
dev: false
@ -2544,7 +2576,6 @@ packages:
/entities/3.0.1:
resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
engines: {node: '>=0.12'}
dev: false
/entities/4.4.0:
resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
@ -2611,8 +2642,8 @@ packages:
is-date-object: 1.0.5
is-symbol: 1.0.4
/esbuild-android-64/0.14.50:
resolution: {integrity: sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==}
/esbuild-android-64/0.15.10:
resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
@ -2629,8 +2660,8 @@ packages:
dev: true
optional: true
/esbuild-android-arm64/0.14.50:
resolution: {integrity: sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==}
/esbuild-android-arm64/0.15.10:
resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
@ -2647,8 +2678,8 @@ packages:
dev: true
optional: true
/esbuild-darwin-64/0.14.50:
resolution: {integrity: sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==}
/esbuild-darwin-64/0.15.10:
resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
@ -2665,8 +2696,8 @@ packages:
dev: true
optional: true
/esbuild-darwin-arm64/0.14.50:
resolution: {integrity: sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==}
/esbuild-darwin-arm64/0.15.10:
resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
@ -2683,8 +2714,8 @@ packages:
dev: true
optional: true
/esbuild-freebsd-64/0.14.50:
resolution: {integrity: sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==}
/esbuild-freebsd-64/0.15.10:
resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
@ -2701,8 +2732,8 @@ packages:
dev: true
optional: true
/esbuild-freebsd-arm64/0.14.50:
resolution: {integrity: sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==}
/esbuild-freebsd-arm64/0.15.10:
resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
@ -2719,8 +2750,8 @@ packages:
dev: true
optional: true
/esbuild-linux-32/0.14.50:
resolution: {integrity: sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==}
/esbuild-linux-32/0.15.10:
resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
@ -2737,8 +2768,8 @@ packages:
dev: true
optional: true
/esbuild-linux-64/0.14.50:
resolution: {integrity: sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==}
/esbuild-linux-64/0.15.10:
resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
@ -2755,8 +2786,8 @@ packages:
dev: true
optional: true
/esbuild-linux-arm/0.14.50:
resolution: {integrity: sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==}
/esbuild-linux-arm/0.15.10:
resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
@ -2773,8 +2804,8 @@ packages:
dev: true
optional: true
/esbuild-linux-arm64/0.14.50:
resolution: {integrity: sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==}
/esbuild-linux-arm64/0.15.10:
resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
@ -2791,8 +2822,8 @@ packages:
dev: true
optional: true
/esbuild-linux-mips64le/0.14.50:
resolution: {integrity: sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==}
/esbuild-linux-mips64le/0.15.10:
resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
@ -2809,8 +2840,8 @@ packages:
dev: true
optional: true
/esbuild-linux-ppc64le/0.14.50:
resolution: {integrity: sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==}
/esbuild-linux-ppc64le/0.15.10:
resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
@ -2827,8 +2858,8 @@ packages:
dev: true
optional: true
/esbuild-linux-riscv64/0.14.50:
resolution: {integrity: sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==}
/esbuild-linux-riscv64/0.15.10:
resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
@ -2845,8 +2876,8 @@ packages:
dev: true
optional: true
/esbuild-linux-s390x/0.14.50:
resolution: {integrity: sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==}
/esbuild-linux-s390x/0.15.10:
resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
@ -2863,8 +2894,8 @@ packages:
dev: true
optional: true
/esbuild-netbsd-64/0.14.50:
resolution: {integrity: sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==}
/esbuild-netbsd-64/0.15.10:
resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
@ -2881,8 +2912,8 @@ packages:
dev: true
optional: true
/esbuild-openbsd-64/0.14.50:
resolution: {integrity: sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==}
/esbuild-openbsd-64/0.15.10:
resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
@ -2899,8 +2930,8 @@ packages:
dev: true
optional: true
/esbuild-sunos-64/0.14.50:
resolution: {integrity: sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==}
/esbuild-sunos-64/0.15.10:
resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
@ -2917,8 +2948,8 @@ packages:
dev: true
optional: true
/esbuild-windows-32/0.14.50:
resolution: {integrity: sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==}
/esbuild-windows-32/0.15.10:
resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
@ -2935,8 +2966,8 @@ packages:
dev: true
optional: true
/esbuild-windows-64/0.14.50:
resolution: {integrity: sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==}
/esbuild-windows-64/0.15.10:
resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@ -2953,8 +2984,8 @@ packages:
dev: true
optional: true
/esbuild-windows-arm64/0.14.50:
resolution: {integrity: sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==}
/esbuild-windows-arm64/0.15.10:
resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
@ -2971,32 +3002,34 @@ packages:
dev: true
optional: true
/esbuild/0.14.50:
resolution: {integrity: sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==}
/esbuild/0.15.10:
resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
esbuild-android-64: 0.14.50
esbuild-android-arm64: 0.14.50
esbuild-darwin-64: 0.14.50
esbuild-darwin-arm64: 0.14.50
esbuild-freebsd-64: 0.14.50
esbuild-freebsd-arm64: 0.14.50
esbuild-linux-32: 0.14.50
esbuild-linux-64: 0.14.50
esbuild-linux-arm: 0.14.50
esbuild-linux-arm64: 0.14.50
esbuild-linux-mips64le: 0.14.50
esbuild-linux-ppc64le: 0.14.50
esbuild-linux-riscv64: 0.14.50
esbuild-linux-s390x: 0.14.50
esbuild-netbsd-64: 0.14.50
esbuild-openbsd-64: 0.14.50
esbuild-sunos-64: 0.14.50
esbuild-windows-32: 0.14.50
esbuild-windows-64: 0.14.50
esbuild-windows-arm64: 0.14.50
'@esbuild/android-arm': 0.15.10
'@esbuild/linux-loong64': 0.15.10
esbuild-android-64: 0.15.10
esbuild-android-arm64: 0.15.10
esbuild-darwin-64: 0.15.10
esbuild-darwin-arm64: 0.15.10
esbuild-freebsd-64: 0.15.10
esbuild-freebsd-arm64: 0.15.10
esbuild-linux-32: 0.15.10
esbuild-linux-64: 0.15.10
esbuild-linux-arm: 0.15.10
esbuild-linux-arm64: 0.15.10
esbuild-linux-mips64le: 0.15.10
esbuild-linux-ppc64le: 0.15.10
esbuild-linux-riscv64: 0.15.10
esbuild-linux-s390x: 0.15.10
esbuild-netbsd-64: 0.15.10
esbuild-openbsd-64: 0.15.10
esbuild-sunos-64: 0.15.10
esbuild-windows-32: 0.15.10
esbuild-windows-64: 0.15.10
esbuild-windows-arm64: 0.15.10
dev: false
/esbuild/0.15.7:
@ -3960,7 +3993,7 @@ packages:
he: 1.2.0
param-case: 2.1.1
relateurl: 0.2.7
uglify-js: 3.17.0
uglify-js: 3.17.2
dev: false
/html5parser/2.0.2:
@ -4418,7 +4451,7 @@ packages:
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
whatwg-url: 10.0.0
ws: 8.8.1
ws: 8.9.0
xml-name-validator: 4.0.0
transitivePeerDependencies:
- bufferutil
@ -4536,7 +4569,6 @@ packages:
resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==}
dependencies:
uc.micro: 1.0.6
dev: false
/lint-staged/13.0.3:
resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==}
@ -4723,7 +4755,6 @@ packages:
linkify-it: 4.0.1
mdurl: 1.0.1
uc.micro: 1.0.6
dev: false
/marked/4.1.1:
resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==}
@ -4757,7 +4788,6 @@ packages:
/mdurl/1.0.1:
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
dev: false
/media-typer/0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
@ -5603,21 +5633,12 @@ packages:
glob: 7.2.3
dev: true
/rollup/2.77.0:
resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: false
/rollup/2.78.1:
resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: true
/rollup/2.79.0:
resolution: {integrity: sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==}
@ -6316,7 +6337,6 @@ packages:
/uc.micro/1.0.6:
resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
dev: false
/ufo/0.8.5:
resolution: {integrity: sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==}
@ -6327,8 +6347,8 @@ packages:
hasBin: true
dev: true
/uglify-js/3.17.0:
resolution: {integrity: sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==}
/uglify-js/3.17.2:
resolution: {integrity: sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==}
engines: {node: '>=0.8.0'}
hasBin: true
dev: false
@ -6373,7 +6393,7 @@ packages:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
/unocss/0.45.26_vite@2.9.14:
/unocss/0.45.26_vite@3.1.4:
resolution: {integrity: sha512-d8mDD6YewHfSCA2uGbBzKY/UnQRSrIDgP7gI61Ll6XY+DcLCVMn0vc1BubQGEL2K0wP9wDsI8HDR6VzDI/0w9w==}
engines: {node: '>=14'}
peerDependencies:
@ -6382,7 +6402,7 @@ packages:
'@unocss/webpack':
optional: true
dependencies:
'@unocss/astro': 0.45.26_vite@2.9.14
'@unocss/astro': 0.45.26_vite@3.1.4
'@unocss/cli': 0.45.26
'@unocss/core': 0.45.26
'@unocss/preset-attributify': 0.45.26
@ -6398,7 +6418,7 @@ packages:
'@unocss/transformer-compile-class': 0.45.26
'@unocss/transformer-directives': 0.45.26
'@unocss/transformer-variant-group': 0.45.26
'@unocss/vite': 0.45.26_vite@2.9.14
'@unocss/vite': 0.45.26_vite@3.1.4
transitivePeerDependencies:
- supports-color
- vite
@ -6409,7 +6429,7 @@ packages:
engines: {node: '>= 0.8'}
dev: true
/unplugin-vue-components/0.22.7_vite@2.9.14+vue@3.2.40:
/unplugin-vue-components/0.22.7_vite@3.1.4+vue@3.2.40:
resolution: {integrity: sha512-MJEAKJF9bRykTRvJ4WXF0FNMAyt1PX3iwpu2NN+li35sAKjQv6sC1col5aZDLiwDZDo2AGwxNkzLJFKaun9qHw==}
engines: {node: '>=14'}
peerDependencies:
@ -6428,7 +6448,7 @@ packages:
magic-string: 0.26.3
minimatch: 5.1.0
resolve: 1.22.1
unplugin: 0.9.5_vite@2.9.14
unplugin: 0.9.5_vite@3.1.4
vue: 3.2.40
transitivePeerDependencies:
- esbuild
@ -6438,7 +6458,7 @@ packages:
- webpack
dev: false
/unplugin/0.9.5_vite@2.9.14:
/unplugin/0.9.5_vite@3.1.4:
resolution: {integrity: sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==}
peerDependencies:
esbuild: '>=0.13'
@ -6457,7 +6477,7 @@ packages:
dependencies:
acorn: 8.8.0
chokidar: 3.5.3
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.5
dev: false
@ -6500,14 +6520,15 @@ packages:
engines: {node: '>= 0.8'}
dev: true
/vite-plugin-inspect/0.6.1:
resolution: {integrity: sha512-MQzIgMoPyiPDuHoO6p7QBOrmheBU/ntg0cgtgcnm21S/Xds5oak1CbVLSAvv4fK1ZpetLK+tlJ+2mlFO9fG3SQ==}
/vite-plugin-inspect/0.7.4:
resolution: {integrity: sha512-06uSil9CPWsGwICsXixx2O3vsIOLNTkQaiBijmJA84BuxYKIWJ3k0r4I96kX1WgdA3olxJxVBXOjzryzeHOSuQ==}
engines: {node: '>=14'}
peerDependencies:
vite: ^3.0.0
vite: ^3.1.0
dependencies:
'@rollup/pluginutils': 4.2.1
debug: 4.3.4
fs-extra: 10.1.0
kolorist: 1.6.0
sirv: 2.0.2
ufo: 0.8.5
@ -6515,7 +6536,7 @@ packages:
- supports-color
dev: true
/vite-plugin-pages/0.26.0_vite@2.9.14:
/vite-plugin-pages/0.26.0_vite@3.1.4:
resolution: {integrity: sha512-yJZvwHEt7puYIf19S89IvkDsWPjWleSied4H8hmdW6i8buCA93z1UAU1ipW1d8fNKrC4FzXsUHHbPm6+kl1p9w==}
peerDependencies:
'@vue/compiler-sfc': ^2.7.0 || ^3.0.0
@ -6532,13 +6553,13 @@ packages:
json5: 2.2.1
local-pkg: 0.4.2
picocolors: 1.0.0
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
yaml: 2.1.1
transitivePeerDependencies:
- supports-color
dev: false
/vite-plugin-vue-layouts/0.7.0_bgfmpd7bcmjmhclxr2rtkrrk6q:
/vite-plugin-vue-layouts/0.7.0_rqa7paltdakk2bevhdd6jag4cm:
resolution: {integrity: sha512-k5XDmRNFo4M/GmUjhbRXj2WmJiFcGoVI8l/uZ72RHyRDQr4wE/6Zq/KFq0lqXomWQxTSzakQRUswzNwtvZLE8A==}
peerDependencies:
vite: ^2.5.0 || ^3.0.0-0
@ -6548,7 +6569,7 @@ packages:
'@vue/compiler-sfc': 3.2.37
debug: 4.3.4
fast-glob: 3.2.11
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
vue: 3.2.40
vue-router: 4.1.5_vue@3.2.40
transitivePeerDependencies:
@ -6559,7 +6580,7 @@ packages:
resolution: {integrity: sha512-9ZIRBRCgM1Q4RtXXEBHIu8gotbx9LCnHZOZXtdSzR0DnjN9H5IYGY3yGoxI6VX8dScXiluxOODFlNlr7ydyI9A==}
dev: false
/vite-ssg/0.19.2_3vxeam2qp523mad42mzwsiujk4:
/vite-ssg/0.19.2_anhuwci7wtosqobeegun7dnn2e:
resolution: {integrity: sha512-r9UJJ4OTMyu9f4nNe12PMVhVkeXYp1rUKbIl6zIOz5QDYEDgFcq8hZGUMMIAcyHhB4pH5ImmjZd1hJ2fO6hOmg==}
engines: {node: '>=14.0.0'}
hasBin: true
@ -6581,7 +6602,7 @@ packages:
jsdom: 19.0.0
kolorist: 1.6.0
prettier: 2.7.1
vite: 2.9.14_sass@1.55.0
vite: 3.1.4_sass@1.55.0
vue: 3.2.40
vue-router: 4.1.5_vue@3.2.40
yargs: 17.6.0
@ -6592,31 +6613,6 @@ packages:
- utf-8-validate
dev: false
/vite/2.9.14_sass@1.55.0:
resolution: {integrity: sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==}
engines: {node: '>=12.2.0'}
hasBin: true
peerDependencies:
less: '*'
sass: '*'
stylus: '*'
peerDependenciesMeta:
less:
optional: true
sass:
optional: true
stylus:
optional: true
dependencies:
esbuild: 0.14.50
postcss: 8.4.14
resolve: 1.22.1
rollup: 2.77.0
sass: 1.55.0
optionalDependencies:
fsevents: 2.3.2
dev: false
/vite/3.1.2:
resolution: {integrity: sha512-wTDKPkiVbeT+drTPdkuvjVIC/2vKKUc1w3qNOuwgpyvPCZF6fvdxB5v5WEcCsqaYea0zrwA4+XialJKCHM3oVQ==}
engines: {node: ^14.18.0 || >=16.0.0}
@ -6644,6 +6640,34 @@ packages:
fsevents: 2.3.2
dev: true
/vite/3.1.4_sass@1.55.0:
resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
less: '*'
sass: '*'
stylus: '*'
terser: ^5.4.0
peerDependenciesMeta:
less:
optional: true
sass:
optional: true
stylus:
optional: true
terser:
optional: true
dependencies:
esbuild: 0.15.10
postcss: 8.4.17
resolve: 1.22.1
rollup: 2.78.1
sass: 1.55.0
optionalDependencies:
fsevents: 2.3.2
dev: false
/vitest/0.23.4:
resolution: {integrity: sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==}
engines: {node: '>=v14.16.0'}
@ -6919,8 +6943,8 @@ packages:
/wrappy/1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
/ws/8.8.1:
resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==}
/ws/8.9.0:
resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1