feat: add fuse full-text search & more options, close #250

This commit is contained in:
YunYouJun 2023-08-10 00:37:14 +08:00
parent 844a39523a
commit 59a5b84476
15 changed files with 416 additions and 228 deletions

6
demo/yun/.gitignore vendored
View File

@ -1,6 +1,3 @@
# valaxy
fuse-list.json
# vite-ssg
.vite-ssg-dist
.vite-ssg-temp
@ -16,3 +13,6 @@ node_modules
*.log
components.d.ts
# valaxy
public/valaxy-fuse-list.json

View File

@ -4,7 +4,7 @@
"theme": "yun"
},
"scripts": {
"build": "npm run build:ssg && npm run rss && npm run fuse",
"build": "npm run fuse && npm run build:ssg && npm run rss",
"build:spa": "valaxy build",
"build:ssg": "valaxy build --ssg --log=info",
"dev": "nodemon -w \"../../packages/valaxy/dist/*.cjs\" --exec \"valaxy . --port 3333\"",

View File

@ -93,8 +93,13 @@ export default defineSiteConfig({
search: {
enable: true,
type: 'algolia',
// type: 'fuse',
// type: 'algolia',
type: 'fuse',
},
fuse: {
options: {
keys: ['title', 'tags', 'categories', 'excerpt', 'content'],
},
},
comment: {

View File

@ -20,7 +20,7 @@
"devDependencies": {
"nodemon": "^3.0.1",
"vite": "^4.4.9",
"vitepress": "1.0.0-beta.7",
"vitepress": "1.0.0-rc.4",
"vue": "^3.3.4"
}
}

View File

@ -18,20 +18,53 @@ top: 99
::: zh-CN
Valaxy 内置了基于 [fuse.js](https://fusejs.io/) 的离线搜索(须预先通过 `valaxy fuse` 构建生成本地缓存)。
> `valaxy fuse` 默认将 `fuse` 生成在 `dist` 目录下,如果你想在本地预览效果,你可以将 `dist/fuse-list.json` 拷贝至 `public/` 文件夹下。
> `valaxy fuse` 默认将 `fuse` 生成在 `public` 目录下,并在 `.gitignore` 中添加 `public/valaxy-fuse-list.json` 忽略。
> 请在 `valaxy build` 之前使用 `valaxy fuse` 构建。
如果你想要使用全文搜索,可参考 [Options | fuse.js](https://www.fusejs.io/api/options.html) 进行设置。
譬如:
```ts
export default defineSiteConfig({
search: {
enable: true,
type: 'fuse',
},
fuse: {
options: {
keys: ['title', 'tags', 'categories', 'excerpt', 'content'],
/**
* @see https://www.fusejs.io/api/options.html#threshold
* 设置匹配阈值,越低越精确
*/
threshold: 0.8,
/**
* @see https://www.fusejs.io/api/options.html#ignoreLocation
* 忽略位置
* @default false
* 这对于搜索文档全文内容有用,若无需全文搜索,则无需设置此项
*/
ignoreLocation: true,
},
},
})
```
:::
::: en
Valaxy has built-in local search based on [fuse.js](https://fusejs.io/). The local cache should be generated in advance via `valaxy fuse`.
> `valaxy fuse` generates `fuse` in the `dist` directory by default. If you want to preview it locally, you can copy `dist/fuse-list.json` to `public` folder.
:::
> `valaxy fuse` generates `fuse` in the `public` directory by default.
> Please use `valaxy fuse` before `valaxy build`.
:::
#### 使用 {lang="zh-CN"}
#### Setup {lang="en"}
::: zh-CN
```ts
// site.config.ts
import { defineSiteConfig } from 'valaxy'
@ -49,6 +82,7 @@ export default defineSiteConfig({
:::
::: en
```ts {7}
// site.config.ts
import { defineSiteConfig } from 'valaxy'
@ -72,7 +106,7 @@ export default defineSiteConfig({
"theme": "yun"
},
"scripts": {
"build": "npm run build:ssg && npm run rss && npm run fuse",
"build": "npm run fuse && npm run build:ssg && npm run rss",
"build:ssg": "valaxy build --ssg",
"fuse": "valaxy fuse",
"rss": "valaxy rss"

View File

@ -46,19 +46,19 @@
},
"devDependencies": {
"@antfu/eslint-config": "^0.40.2",
"@microsoft/api-extractor": "^7.36.3",
"@microsoft/api-extractor": "^7.36.4",
"@types/debug": "^4.1.8",
"@types/markdown-it-attrs": "^4.1.0",
"@types/markdown-it-container": "^2.0.6",
"@types/markdown-it-emoji": "^2.0.2",
"@types/node": "^20.4.8",
"@types/node": "^20.4.9",
"@types/prompts": "^2.4.4",
"@types/resolve": "^1.20.2",
"@types/semver": "^7.5.0",
"cross-env": "^7.0.3",
"cypress": "^12.17.3",
"eslint": "^8.46.0",
"eslint-plugin-cypress": "^2.13.3",
"eslint-plugin-cypress": "^2.14.0",
"https-localhost": "^4.7.1",
"husky": "^8.0.3",
"lint-staged": "^13.2.3",

View File

@ -3,14 +3,9 @@ import type { UseFuseOptions } from '@vueuse/integrations/useFuse'
import { useFuse } from '@vueuse/integrations/useFuse'
import { computed, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { useBodyScrollLock } from 'valaxy'
import { useBodyScrollLock, useSiteConfig } from 'valaxy'
import { useRouter } from 'vue-router'
export interface FuseDataItem {
title: string
excerpt: string
link: string
}
import type { FuseListItem } from 'valaxy/types'
const props = defineProps<{
open: boolean
@ -23,23 +18,28 @@ const { lockBodyScroll, unlockBodyScroll } = useBodyScrollLock(searchContainer)
const { t } = useI18n()
const fuseListData = ref<any[]>([])
// const { data } = await useFetch('/fuse-list.json').get().json()
// console.log(data)
const fuseListData = ref<FuseListItem[]>([])
const siteConfig = useSiteConfig()
const keys = computed(() => {
const keys = ['title', 'excerpt']
return keys
const ks = siteConfig.value.fuse.options.keys || []
return ks.length === 0
? ['title', 'tags', 'categories', 'excerpt']
: ks
})
const input = ref('')
// todo export options
const fuseOptions = computed<UseFuseOptions<FuseDataItem>>(() => ({
const fuseOptions = computed<UseFuseOptions<FuseListItem>>(() => ({
fuseOptions: {
...siteConfig.value.fuse.options,
keys: keys.value,
// isCaseSensitive: isCaseSensitive.value,
// threshold: exactMatch.value ? 0 : undefined,
// threshold: 0.99,
// ignoreLocation: true,
},
includeMatches: true,
findAllMatches: true,
// resultLimit: resultLimit.value,
// matchAllWhenSearchEmpty: matchAllWhenSearchEmpty.value,
}))
@ -51,11 +51,14 @@ watch(() => props.open, async () => {
if (!props.open)
return
fetch('/fuse-list.json')
const fuseListDataPath = siteConfig.value.fuse.dataPath.startsWith('http')
? siteConfig.value.fuse.dataPath
: `${import.meta.env.BASE_URL}${siteConfig.value.fuse.dataPath}`
fetch(fuseListDataPath)
.then(res => res.json())
.then((data) => {
if (Array.isArray(data))
fuseListData.value = data as unknown as any[]
fuseListData.value = data
searchInputRef.value?.focus()
})
@ -78,6 +81,8 @@ function jumpToLink(link: string) {
v-if="open" ref="searchContainer"
class="yun-popup yun-search-popup yun-fuse-search flex-center" flex="col"
>
{{ keys }}
<div class="yun-search-input-container flex-center" w="full">
<input ref="searchInputRef" v-model="input" class="yun-search-input" :placeholder="t('search.placeholder')">
</div>

View File

@ -0,0 +1,2 @@
node_modules/
dist/

View File

@ -1,25 +1,24 @@
import fs from 'fs-extra'
import type { ResolvedValaxyOptions } from 'valaxy'
import { type ResolvedValaxyOptions } from 'valaxy'
import { ensurePrefix } from '@antfu/utils'
import consola from 'consola'
import fg from 'fast-glob'
import matter from 'gray-matter'
import { cyan, dim } from 'kolorist'
import type { Argv } from 'yargs'
import type { FuseListItem } from 'valaxy/types'
import { resolveOptions } from '../options'
import { setEnvProd } from '../utils/env'
import { commonOptions } from './options'
export interface FuseListItem {
title: string
excerpt: string
author: string
tags: string[]
categories: string[]
link: string
}
/**
* @description Generate Fuse List Data for Search
* @param options
* @returns
*/
export async function generateFuseList(options: ResolvedValaxyOptions) {
consola.info(`Generate List for Fuse Search by (${cyan('fuse.js')}) ...`)
consola.start(`Generate List for Fuse Search by (${cyan('fuse.js')}) ...`)
// generate
const files = await fg(`${options.userRoot}/pages/posts/**/*.md`)
@ -40,7 +39,8 @@ export async function generateFuseList(options: ResolvedValaxyOptions) {
if (data.password)
continue
posts.push({
const keys = options.config.siteConfig.fuse.options.keys || []
const fuseListItem: FuseListItem = {
title: data.title || '',
tags: (typeof data.tags === 'string' ? [data.tags] : data.tags) || [],
categories: data.categories || [],
@ -48,7 +48,11 @@ export async function generateFuseList(options: ResolvedValaxyOptions) {
excerpt: excerpt || content.slice(0, 100),
// encode for chinese url
link: encodeURI(i.replace(`${options.userRoot}/pages`, '').replace(/\.md$/, '')),
})
}
if (keys.includes('content'))
fuseListItem.content = content || ''
posts.push(fuseListItem)
}
return posts
@ -66,14 +70,30 @@ export function registerFuseCommand(cli: Argv<object>) {
.strict()
.help(),
async ({ root }) => {
consola.info('Please generate it before build.')
setEnvProd()
const options = await resolveOptions({ userRoot: root }, 'build')
const fuseList = await generateFuseList(options)
await fs.ensureDir('./dist')
const target = `${options.userRoot}/dist/fuse-list.json`
fs.writeJSONSync(target, fuseList)
consola.info(`Generate fuse list in ${dim(target)}`)
const dataPath = ensurePrefix(options.config.siteConfig.fuse.dataPath, '/')
const publicRelativeFolder = `public${dataPath}`
const publicFolder = `${options.userRoot}/${publicRelativeFolder}`
await fs.ensureFile(publicFolder)
fs.writeJSONSync(publicFolder, fuseList)
consola.success(`Generate fuse list in ${dim(publicFolder)}`)
try {
const gitignore = await fs.readFile(`${options.userRoot}/.gitignore`, 'utf-8')
const publicRelativeFolder = `public${dataPath}`
if (!gitignore.includes(publicRelativeFolder)) {
await fs.appendFile(`${options.userRoot}/.gitignore`, `\n# valaxy\n${publicRelativeFolder}\n`)
consola.success(`Add ${dim(dataPath)} to ${dim('.gitignore')}`)
}
}
catch {}
},
)
}

View File

@ -67,6 +67,12 @@ export const defaultSiteConfig: SiteConfig = {
enable: false,
type: 'fuse',
},
fuse: {
dataPath: 'valaxy-fuse-list.json',
options: {
keys: [],
},
},
comment: {
enable: false,

View File

@ -104,7 +104,7 @@
"shiki": "^0.14.3",
"star-markdown-css": "^0.4.2",
"unconfig": "^0.3.10",
"unocss": "^0.54.2",
"unocss": "^0.54.3",
"unplugin-vue-components": "^0.25.1",
"vite": "^4.4.9",
"vite-plugin-pages": "^0.31.0",
@ -128,7 +128,7 @@
"@types/ejs": "^3.1.2",
"@types/html-to-text": "^9.0.1",
"@types/katex": "^0.16.2",
"@types/markdown-it": "^12.2.3",
"@types/markdown-it": "^13.0.0",
"@types/nprogress": "^0.2.0",
"@types/yargs": "^17.0.24",
"debug": "^4.3.4",

View File

@ -1,5 +1,7 @@
import type { ZoomOptions } from 'medium-zoom'
import type { FuseOptions } from '@vueuse/integrations/useFuse'
import type { ValaxyAddon } from '../types'
import type { FuseListItem } from './node'
export type DefaultThemeConfig = {
/**
@ -128,6 +130,32 @@ export interface SiteConfig {
type: 'algolia' | 'engine' | 'fuse'
}
/**
*
* fuse search
* @see https://fusejs.io/
* @description
* Please set search.type to 'fuse'
*/
fuse: {
/**
* @default 'valaxy-fuse-list.json'
* @description
*/
dataPath: string
/**
* @see https://fusejs.io/api/options.html
*/
options: FuseOptions<FuseListItem> & {
/**
* @default ['title', 'tags', 'categories', 'excerpt']
* @description
* @see https://fusejs.io/api/options.html#keys
*/
keys: FuseOptions<FuseListItem>['keys']
}
}
/**
* comment: waline/...
*/

View File

@ -3,3 +3,6 @@ export * from './addon'
export * from './config'
export * from './data'
export * from './posts'
// used in node, but without node deps
export * from './node'

View File

@ -0,0 +1,9 @@
export interface FuseListItem {
title: string
excerpt?: string
author: string
tags: string[]
categories: string[]
link: string
content?: string
}

View File

@ -12,8 +12,8 @@ importers:
specifier: ^0.40.2
version: 0.40.2(eslint@8.46.0)(typescript@5.1.6)
'@microsoft/api-extractor':
specifier: ^7.36.3
version: 7.36.3(@types/node@20.4.8)
specifier: ^7.36.4
version: 7.36.4(@types/node@20.4.9)
'@types/debug':
specifier: ^4.1.8
version: 4.1.8
@ -27,8 +27,8 @@ importers:
specifier: ^2.0.2
version: 2.0.2
'@types/node':
specifier: ^20.4.8
version: 20.4.8
specifier: ^20.4.9
version: 20.4.9
'@types/prompts':
specifier: ^2.4.4
version: 2.4.4
@ -48,8 +48,8 @@ importers:
specifier: ^8.46.0
version: 8.46.0
eslint-plugin-cypress:
specifier: ^2.13.3
version: 2.13.3(eslint@8.46.0)
specifier: ^2.14.0
version: 2.14.0(eslint@8.46.0)
https-localhost:
specifier: ^4.7.1
version: 4.7.1
@ -159,10 +159,10 @@ importers:
version: 3.0.1
vite:
specifier: ^4.4.9
version: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
version: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vitepress:
specifier: 1.0.0-beta.7
version: 1.0.0-beta.7(@types/node@20.4.8)(search-insights@2.7.0)
specifier: 1.0.0-rc.4
version: 1.0.0-rc.4(@types/node@20.4.9)(search-insights@2.7.0)
vue:
specifier: ^3.3.4
version: 3.3.4
@ -291,7 +291,7 @@ importers:
version: 13.0.1
markdown-it-anchor:
specifier: ^8.6.7
version: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@13.0.1)
version: 8.6.7(@types/markdown-it@13.0.0)(markdown-it@13.0.1)
markdown-it-attrs:
specifier: ^4.1.6
version: 4.1.6(markdown-it@13.0.1)
@ -335,14 +335,14 @@ importers:
specifier: ^0.3.10
version: 0.3.10
unocss:
specifier: ^0.54.2
version: 0.54.2(postcss@8.4.27)(vite@4.4.9)
specifier: ^0.54.3
version: 0.54.3(postcss@8.4.27)(vite@4.4.9)
unplugin-vue-components:
specifier: ^0.25.1
version: 0.25.1(vue@3.3.4)
vite:
specifier: ^4.4.9
version: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
version: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vite-plugin-pages:
specifier: ^0.31.0
version: 0.31.0(vite@4.4.9)
@ -402,8 +402,8 @@ importers:
specifier: ^0.16.2
version: 0.16.2
'@types/markdown-it':
specifier: ^12.2.3
version: 12.2.3
specifier: ^13.0.0
version: 13.0.0
'@types/nprogress':
specifier: ^0.2.0
version: 0.2.0
@ -625,7 +625,7 @@ packages:
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.18
'@jridgewell/trace-mapping': 0.3.19
/@antfu/eslint-config-basic@0.40.2(@typescript-eslint/eslint-plugin@6.2.1)(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6):
resolution: {integrity: sha512-2zAgwjsOFQ1b7MJmnzQAeyyqqqQjy7/b2ZG1oqWlLTxVda4B/msOyrMdO7nYSmqZFK+cdOi5rGT2pBFeX8EBkA==}
@ -2578,7 +2578,7 @@ packages:
dependencies:
'@intlify/bundle-utils': 7.0.2(vue-i18n@9.2.2)
'@intlify/shared': 9.3.0-beta.24
'@rollup/pluginutils': 5.0.2(rollup@2.79.1)
'@rollup/pluginutils': 5.0.2
'@vue/compiler-sfc': 3.3.4
debug: 4.3.4(supports-color@8.1.1)
fast-glob: 3.3.0
@ -2633,6 +2633,10 @@ packages:
resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
engines: {node: '>=6.0.0'}
/@jridgewell/resolve-uri@3.1.1:
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
engines: {node: '>=6.0.0'}
/@jridgewell/set-array@1.1.2:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
@ -2656,6 +2660,12 @@ packages:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.14
/@jridgewell/trace-mapping@0.3.19:
resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
/@mdit-vue/plugin-component@0.12.0:
resolution: {integrity: sha512-LrwV3f0Y6H7b7m/w1Y3bkGuR3HOiBK4QiHHW3HuRMza6MZodDQbj8Baik5/V5GiSg1/ltijS1CymVcycd1EfTw==}
dependencies:
@ -2719,29 +2729,29 @@ packages:
resolution: {integrity: sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA==}
dev: true
/@microsoft/api-extractor-model@7.27.5(@types/node@20.4.8):
resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==}
/@microsoft/api-extractor-model@7.27.6(@types/node@20.4.9):
resolution: {integrity: sha512-eiCnlayyum1f7fS2nA9pfIod5VCNR1G+Tq84V/ijDrKrOFVa598BLw145nCsGDMoFenV6ajNi2PR5WCwpAxW6Q==}
dependencies:
'@microsoft/tsdoc': 0.14.2
'@microsoft/tsdoc-config': 0.16.2
'@rushstack/node-core-library': 3.59.6(@types/node@20.4.8)
'@rushstack/node-core-library': 3.59.7(@types/node@20.4.9)
transitivePeerDependencies:
- '@types/node'
dev: true
/@microsoft/api-extractor@7.36.3(@types/node@20.4.8):
resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==}
/@microsoft/api-extractor@7.36.4(@types/node@20.4.9):
resolution: {integrity: sha512-21UECq8C/8CpHT23yiqTBQ10egKUacIpxkPyYR7hdswo/M5yTWdBvbq+77YC9uPKQJOUfOD1FImBQ1DzpsdeQQ==}
hasBin: true
dependencies:
'@microsoft/api-extractor-model': 7.27.5(@types/node@20.4.8)
'@microsoft/api-extractor-model': 7.27.6(@types/node@20.4.9)
'@microsoft/tsdoc': 0.14.2
'@microsoft/tsdoc-config': 0.16.2
'@rushstack/node-core-library': 3.59.6(@types/node@20.4.8)
'@rushstack/rig-package': 0.4.0
'@rushstack/ts-command-line': 4.15.1
'@rushstack/node-core-library': 3.59.7(@types/node@20.4.9)
'@rushstack/rig-package': 0.4.1
'@rushstack/ts-command-line': 4.15.2
colors: 1.2.5
lodash: 4.17.21
resolve: 1.22.2
resolve: 1.22.4
semver: 7.5.4
source-map: 0.6.1
typescript: 5.0.4
@ -2844,6 +2854,20 @@ packages:
rollup: 2.79.1
dev: true
/@rollup/pluginutils@5.0.2:
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
'@types/estree': 1.0.1
estree-walker: 2.0.2
picomatch: 2.3.1
dev: false
/@rollup/pluginutils@5.0.2(rollup@2.79.1):
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
@ -2857,34 +2881,35 @@ packages:
estree-walker: 2.0.2
picomatch: 2.3.1
rollup: 2.79.1
dev: true
/@rushstack/node-core-library@3.59.6(@types/node@20.4.8):
resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==}
/@rushstack/node-core-library@3.59.7(@types/node@20.4.9):
resolution: {integrity: sha512-ln1Drq0h+Hwa1JVA65x5mlSgUrBa1uHL+V89FqVWQgXd1vVIMhrtqtWGQrhTnFHxru5ppX+FY39VWELF/FjQCw==}
peerDependencies:
'@types/node': '*'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@types/node': 20.4.8
'@types/node': 20.4.9
colors: 1.2.5
fs-extra: 7.0.1
import-lazy: 4.0.0
jju: 1.4.0
resolve: 1.22.2
resolve: 1.22.4
semver: 7.5.4
z-schema: 5.0.5
dev: true
/@rushstack/rig-package@0.4.0:
resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==}
/@rushstack/rig-package@0.4.1:
resolution: {integrity: sha512-AGRwpqlXNSp9LhUSz4HKI9xCluqQDt/obsQFdv/NYIekF3pTTPzc+HbQsIsjVjYnJ3DcmxOREVMhvrMEjpiq6g==}
dependencies:
resolve: 1.22.2
resolve: 1.22.4
strip-json-comments: 3.1.1
dev: true
/@rushstack/ts-command-line@4.15.1:
resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==}
/@rushstack/ts-command-line@4.15.2:
resolution: {integrity: sha512-5+C2uoJY8b+odcZD6coEe2XNC4ZjGB4vCMESbqW/8DHRWC/qIHfANdmN9F1wz/lAgxz72i7xRoVtPY2j7e4gpQ==}
dependencies:
'@types/argparse': 1.0.38
argparse: 1.0.10
@ -2965,7 +2990,7 @@ packages:
resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
dependencies:
'@types/jsonfile': 6.1.1
'@types/node': 20.4.8
'@types/node': 20.4.9
dev: true
/@types/html-to-text@9.0.1:
@ -2979,7 +3004,7 @@ packages:
/@types/jsonfile@6.1.1:
resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==}
dependencies:
'@types/node': 20.4.8
'@types/node': 20.4.9
dev: true
/@types/katex@0.16.2:
@ -3012,6 +3037,13 @@ packages:
dependencies:
'@types/linkify-it': 3.0.2
'@types/mdurl': 1.0.2
dev: true
/@types/markdown-it@13.0.0:
resolution: {integrity: sha512-mPTaUl5glYfzdJFeCsvhXQwZKdyszNAZcMm5ZTP5SfpTu+vIbog7J3z8Fa4x/Fzv5TB4R6OA/pHBYIYmkYOWGQ==}
dependencies:
'@types/linkify-it': 3.0.2
'@types/mdurl': 1.0.2
/@types/mdast@3.0.12:
resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==}
@ -3029,20 +3061,24 @@ packages:
/@types/ms@0.7.31:
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
/@types/node@16.18.39:
resolution: {integrity: sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==}
/@types/node@16.18.40:
resolution: {integrity: sha512-+yno3ItTEwGxXiS/75Q/aHaa5srkpnJaH+kdkTVJ3DtJEwv92itpKbxU+FjPoh2m/5G9zmUQfrL4A4C13c+iGA==}
dev: true
/@types/node@18.15.13:
resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==}
dev: true
/@types/node@18.17.3:
resolution: {integrity: sha512-2x8HWtFk0S99zqVQABU9wTpr8wPoaDHZUcAkoTKH+nL7kPv3WUI9cRi/Kk5Mz4xdqXSqTkKP7IWNoQQYCnDsTA==}
/@types/node@18.17.4:
resolution: {integrity: sha512-ATL4WLgr7/W40+Sp1WnNTSKbgVn6Pvhc/2RHAdt8fl6NsQyp4oPCi2eKcGOvA494bwf1K/W6nGgZ9TwDqvpjdw==}
dev: true
/@types/node@20.4.8:
resolution: {integrity: sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==}
dev: true
/@types/node@20.4.9:
resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==}
/@types/normalize-package-data@2.4.1:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
@ -3055,7 +3091,7 @@ packages:
/@types/prompts@2.4.4:
resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==}
dependencies:
'@types/node': 20.4.8
'@types/node': 20.4.9
kleur: 3.0.3
dev: true
@ -3114,7 +3150,7 @@ packages:
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
requiresBuild: true
dependencies:
'@types/node': 20.4.8
'@types/node': 20.4.9
dev: true
optional: true
@ -3412,27 +3448,27 @@ packages:
vue: 3.3.4
dev: false
/@unocss/astro@0.54.2(vite@4.4.9):
resolution: {integrity: sha512-g195oae1c4sT1eKhDe6Td7l0KGUXiOXu3syKwqCtiTGol9fPG4tb2V20vT9SouDTWhIpcc0+TyNEcOYAKJB28Q==}
/@unocss/astro@0.54.3(vite@4.4.9):
resolution: {integrity: sha512-/gmnSIIsYtAVPbcIGXuuaoCM71x8s8I0VtsEQZicNB51ux7BhSyXIQ5CE/W384NqTaqJt7gHVfbjn+io4ZSJXw==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/reset': 0.54.2
'@unocss/vite': 0.54.2(vite@4.4.9)
'@unocss/core': 0.54.3
'@unocss/reset': 0.54.3
'@unocss/vite': 0.54.3(vite@4.4.9)
transitivePeerDependencies:
- rollup
- vite
dev: false
/@unocss/cli@0.54.2:
resolution: {integrity: sha512-k4FUlGSEeTRE6h57PxqZ4Yfrz7LhDclJj6V4dHAvbilbRiUu94OKHgSaiRQI1D5GweJS3D5h/MF6rnKOV6Yk0A==}
/@unocss/cli@0.54.3:
resolution: {integrity: sha512-IZkza5EWYVgYC5ZbJyFw7xUpoucpvaF/lW2pqXcjywONadq18TWwvu+LPExOZ37ycHE0uid50tzfN4oqgtJIXQ==}
engines: {node: '>=14'}
hasBin: true
dependencies:
'@ampproject/remapping': 2.2.1
'@rollup/pluginutils': 5.0.2(rollup@2.79.1)
'@unocss/config': 0.54.2
'@unocss/core': 0.54.2
'@unocss/preset-uno': 0.54.2
'@rollup/pluginutils': 5.0.2
'@unocss/config': 0.54.3
'@unocss/core': 0.54.3
'@unocss/preset-uno': 0.54.3
cac: 6.7.14
chokidar: 3.5.3
colorette: 2.0.20
@ -3445,158 +3481,158 @@ packages:
- rollup
dev: false
/@unocss/config@0.54.2:
resolution: {integrity: sha512-C5ktHfNCJMOZWhjHgK3e8qF5XJVN10jsRGzfiSZRCcO4q8uMoLhqJwJUpGlxKTwX5n/CRREL9555r3wiKt5f0w==}
/@unocss/config@0.54.3:
resolution: {integrity: sha512-afyJTtYZxq0N5ZpFlVcQfwVzDZjyKrHS/gL0SrXRBfj0W3s2FuPeDDMC6QOFLUwKH58snI6bzzE7ao7kLTRecA==}
engines: {node: '>=14'}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
unconfig: 0.3.10
dev: false
/@unocss/core@0.54.2:
resolution: {integrity: sha512-PyyJOJtZ2K0BVSawAA/5X46w3Vgj/39jy+2EGKrT0KD4pbYid8oQo84OkXEEms5gAnIAAZHayGqs43zi/FRp0A==}
/@unocss/core@0.54.3:
resolution: {integrity: sha512-XAVfnq6hO7Zaa5VnsFKi1KQKgUS3jOhZYgdedIgJVx2WkmkpM/UQ2lummIlB27uHp0o+Wzf5kueKlMS3q+2lvA==}
dev: false
/@unocss/extractor-arbitrary-variants@0.54.2:
resolution: {integrity: sha512-VZ1NCwjwO5UM1HPUDZk/uDjKdb1kN4rRIPhzKJXd2N4TwIVXC/gGVwy92jE26KcoWMlWSbBzjVNLfj1yGfnTRw==}
/@unocss/extractor-arbitrary-variants@0.54.3:
resolution: {integrity: sha512-Vab8pb1EQZ4KO63N/w2nvean8DlAhTurupmNWEqLzj7XsfH6IMJiUyonYXxTUKWY8oLsHEh3OOTuLMv7NV7bSQ==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/inspector@0.54.2:
resolution: {integrity: sha512-i2Ciuyolk836qFL7f4K+uDCaDfIlEYm5p5/nDu5wClZ1BxhUjQGSFMRqqE6slPFrZG2tW6QU76beMi4qk1EEBw==}
/@unocss/inspector@0.54.3:
resolution: {integrity: sha512-1DyYr1Oe/OT4u7CH6Zrga1IIG41r3gJnvTA0I49QcGCE5rRR1lk/RFX4Js1exlRsWfqTCue9c1J32K5ymyCn1w==}
dependencies:
gzip-size: 6.0.0
sirv: 2.0.3
dev: false
/@unocss/postcss@0.54.2(postcss@8.4.27):
resolution: {integrity: sha512-SgCbdQzEfMYs9BwJxvkEx7i//KyHHqae/2BVtAUp0xRGWkcaOOsi28lpodhtZTGOtA486hrAcNnohQno9WCMYA==}
/@unocss/postcss@0.54.3(postcss@8.4.27):
resolution: {integrity: sha512-LPVSa+euzeh9Nzsb/IJI2ZeW0SUeifn0dRmPtB3bTOHkVeVba8IFWPzU3grC+m2tU9ysiTLs/9U2tLObljfC3g==}
engines: {node: '>=14'}
peerDependencies:
postcss: ^8.4.21
dependencies:
'@unocss/config': 0.54.2
'@unocss/core': 0.54.2
'@unocss/config': 0.54.3
'@unocss/core': 0.54.3
css-tree: 2.3.1
fast-glob: 3.3.1
magic-string: 0.30.2
postcss: 8.4.27
dev: false
/@unocss/preset-attributify@0.54.2:
resolution: {integrity: sha512-mH1Qc+Omg6Fr6gMspZl9GfBq9bR/GeYnWy3qosL4b3wUmKuRFi7JONUuFA9pKaA+k5xZ85A+4ksDTf6kxjoguQ==}
/@unocss/preset-attributify@0.54.3:
resolution: {integrity: sha512-DuxNOCByPfboDXN/80RxiD3O5yWJwzQRsIGlHNufs6HEj+hET6ArSBZuxph7gnfSdZUZxi9YonSZjop61iC5TA==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/preset-icons@0.54.2:
resolution: {integrity: sha512-wDHTSmpWT5WcCWyg85AZwW5ESyQfoDZuV+06eKB6VL8mdZXJFs/F0F32xiBrzDPHpQQaIqdXqOMSluMpP56+7A==}
/@unocss/preset-icons@0.54.3:
resolution: {integrity: sha512-RIZ9gewKqKuvnDvi66rHzBShiWjUPS4I1JchKMkofX8h4uJniPtQFb2Yy5YRzm0YL5eZPWjLQK5uHiNN+EhMkg==}
dependencies:
'@iconify/utils': 2.1.7
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
ofetch: 1.1.1
transitivePeerDependencies:
- supports-color
dev: false
/@unocss/preset-mini@0.54.2:
resolution: {integrity: sha512-56eaoO0BLtoQFt6GbenH7WFahiCImn3nvTOCSGszKWDD6TWg8pHy6fUWdk3CRludqp2snqLmmibQZxXdoxi9+g==}
/@unocss/preset-mini@0.54.3:
resolution: {integrity: sha512-HgjoAn3TwO0jimNPoEF5q8mOHUlHChKfIdTdPUGg4zIfFK+lPBSsmTJFnTRNx/Hr2YkaiTV2C9pDBRFazw/zwQ==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/extractor-arbitrary-variants': 0.54.2
'@unocss/core': 0.54.3
'@unocss/extractor-arbitrary-variants': 0.54.3
dev: false
/@unocss/preset-tagify@0.54.2:
resolution: {integrity: sha512-QdL4Z3TsrisbUFibyGxiWxjMdjgbm7FWBrtlDdxIZevrpPmkeOFm/cMNHNR8qh0FYjc/QTJ+x/Ey9YtLoEm/MQ==}
/@unocss/preset-tagify@0.54.3:
resolution: {integrity: sha512-5151PeVaZ3EqGR6Xla2KPtsh/B+f7ghC83Tv9e4TPnRisNteWsj4CzwvqQoKv9xWeHVBkvhaXl5msv/mbtrKEA==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/preset-typography@0.54.2:
resolution: {integrity: sha512-JzsX/dOV1I5RGziMLRMx3vMLll9nqalKEpd0wVwf52uBQ+/zSN7Yxt3vVePF/e772gFldxnJCqfjVpB+w6crWw==}
/@unocss/preset-typography@0.54.3:
resolution: {integrity: sha512-Fm6d9huYax0f0L48we7QER5+XCicp1O9CvP+10AwXgizBwrqmXo+BFafodc65QPOAnGUixmGpJjSgm6kN/76Hw==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/preset-mini': 0.54.2
'@unocss/core': 0.54.3
'@unocss/preset-mini': 0.54.3
dev: false
/@unocss/preset-uno@0.54.2:
resolution: {integrity: sha512-eL1ozNAIWft86+XZFC7JyUiREVp/Ld1iRDionCGINo06GUohyB9VB5WKP/JcPyvK0CuGmzTo6FLe92RNyUxeRg==}
/@unocss/preset-uno@0.54.3:
resolution: {integrity: sha512-uz1uh/LYQ9lXkGOrBMx+aBtwphl9GA1u1aooMuP4bxXqsaA/jlcoJGb1PD+y2b4aDoY27Vc/IhLVxwMVd42Emw==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/preset-mini': 0.54.2
'@unocss/preset-wind': 0.54.2
'@unocss/core': 0.54.3
'@unocss/preset-mini': 0.54.3
'@unocss/preset-wind': 0.54.3
dev: false
/@unocss/preset-web-fonts@0.54.2:
resolution: {integrity: sha512-VEF/o3ZGXRm4aYMvqiwl9E8dwwwqhRWIAIqUVyjtO7X6v/1QDT/t5ytO4JpESH5mEuL3CWukZ+PC9TRW+KtP2g==}
/@unocss/preset-web-fonts@0.54.3:
resolution: {integrity: sha512-z8hmt1voo8UpWJvPFiNR+y83gXuN+/l1l4SHZ/yiVQtSsO7R/po6p0qTb0t1hNlk4tUcAz8Olq8ArmU3x8QyJA==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
ofetch: 1.1.1
dev: false
/@unocss/preset-wind@0.54.2:
resolution: {integrity: sha512-XuQzlqNGgLf3GcnRx3q/LidaUyPEFE4+Xsw0lsJQTlVWzmX+6qxkCONJ/SaNi9Mx+JjLFp3C3EuSi4L3v+GNPA==}
/@unocss/preset-wind@0.54.3:
resolution: {integrity: sha512-il9OtJ9WWQBFLXRJBZc9ItMh5ILC5ZML+fnRpjkQ2y+tq29/eQzw23WusYuSWpS5fT/IwiGKDBGPteRx7ZZwYA==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/preset-mini': 0.54.2
'@unocss/core': 0.54.3
'@unocss/preset-mini': 0.54.3
dev: false
/@unocss/reset@0.54.2:
resolution: {integrity: sha512-awM74dNKWjl6p9mGqCGIzy3ivy8YJTX7OfQ4CywjyRjrhqZKTgEVV5W7lAr58cOCvariuskWtgfVcyM55uWM3Q==}
/@unocss/reset@0.54.3:
resolution: {integrity: sha512-5FjdfZKvwJ0JrUr2rVWnZzHfg7jOCMaJjD93VvCdFIr8Q9dChSzuZoWGCcx6EEsZm5zEfpB7+qwwz6Y2lN9vxg==}
dev: false
/@unocss/scope@0.54.2:
resolution: {integrity: sha512-P5jTWGqyCVL5vtgulvwXm7EdoG78PLZhwwIO2pTDu7ODHxpVYE48G27EvTsjPN/Yr5WLcC4C7TXoWbv9bt3Khg==}
/@unocss/scope@0.54.3:
resolution: {integrity: sha512-bR9TQ4430KgjGoGKM6SRO41tbntbC3z/8xIjJ7W1VVHo7pxnfdqBI7cDqL5kF3bIDdhszVwpsCMsc1PiURPu6A==}
dev: false
/@unocss/transformer-attributify-jsx-babel@0.54.2:
resolution: {integrity: sha512-xRKK5iJccoAr3xif9zSvIgzTnYRoinZ4nt4C9MLByRINjOZXoA5FOzdXOThCq+NaYjJTp0k4Ux/R/SW2e6fvGA==}
/@unocss/transformer-attributify-jsx-babel@0.54.3:
resolution: {integrity: sha512-M9c3Q1Xik/+P1l4db/g/PIoRrfwlara9KFz3JPSNcortF8I5OFf6vDV0JMWTVvv/PSy2sgMbihTUF97eYOPVpA==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/transformer-attributify-jsx@0.54.2:
resolution: {integrity: sha512-FAnznmqgs9Y5rvch+It+cKtl9bVcCI04GR/uG78Z3IuNXldCUdqDsNHLFRxGcsfHHZfOt7VqFTZpJ7Xf+cUHcA==}
/@unocss/transformer-attributify-jsx@0.54.3:
resolution: {integrity: sha512-3JdoFXpT5QLf3TdLxt28iwmjMmeujjsnZsT7ZP9mN83h/Dka+mUQHhQPMwSzSvNUursXMamiqRximC8PwozJng==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/transformer-compile-class@0.54.2:
resolution: {integrity: sha512-MQgjnL8fUJsGlc63o4wwTie/bGX4bevwbrjGcgx/pOCT5h5jpy7NqKjn7kzAtQ94Fu/HveowyZjrXrft2zKivA==}
/@unocss/transformer-compile-class@0.54.3:
resolution: {integrity: sha512-KgkMmr9TEd/SIrniGKull/iH2dCAf88ozVWoMuyay/DqUCfAFq5vlQ+2lmhSv3mANS0BIVQwP4lONmrw38iQVw==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/transformer-directives@0.54.2:
resolution: {integrity: sha512-PTMNjTddOrsLGpW/3tUuAG96B9rw5/GAHtz4EBHou/v+eWX0UUBWHF6YflzOqexxZmp5BQKO0jzkIs96Eiz8lA==}
/@unocss/transformer-directives@0.54.3:
resolution: {integrity: sha512-0aowyhk9pL2ZQ8avb6Yr21w8Fe3m/55j7meulXPyLxAbXw5qatRx37TBeKVJ9BbvnfBQtj/49z9jXj2bXNpoMA==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
css-tree: 2.3.1
dev: false
/@unocss/transformer-variant-group@0.54.2:
resolution: {integrity: sha512-hOl3x63rTaGl6kdLMLZ31Hl7SASxxVNc2Z7IWpZDMZX0qbK/lK6TPvI/VJaXqznUtA8qvyDYBVx7XAEMnTOANw==}
/@unocss/transformer-variant-group@0.54.3:
resolution: {integrity: sha512-4YZSi2LBTvrvPKDFZdb7rmqAlFr+hf4f92MfmPDRPwFp/qvJeO2UoBUCkiZoTjLHzCykHuLEJUiXgr3QNO2D1A==}
dependencies:
'@unocss/core': 0.54.2
'@unocss/core': 0.54.3
dev: false
/@unocss/vite@0.54.2(vite@4.4.9):
resolution: {integrity: sha512-TxK9au16W0SfQF/3I4aT8q8ZctHusVboDoS09EMKbJLhMPGuNTawUmTCmM6rtlNadWRNx4qPyK91dHFylnxApg==}
/@unocss/vite@0.54.3(vite@4.4.9):
resolution: {integrity: sha512-UxVo7WQpTAr5uHyjLKW1xs5kcecctUXsPApUChFxQwHRUeMT1gnBftd0r7dtSwdsdELClbIUgRVCrpFAPy2Y3g==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0
dependencies:
'@ampproject/remapping': 2.2.1
'@rollup/pluginutils': 5.0.2(rollup@2.79.1)
'@unocss/config': 0.54.2
'@unocss/core': 0.54.2
'@unocss/inspector': 0.54.2
'@unocss/scope': 0.54.2
'@unocss/transformer-directives': 0.54.2
'@rollup/pluginutils': 5.0.2
'@unocss/config': 0.54.3
'@unocss/core': 0.54.3
'@unocss/inspector': 0.54.3
'@unocss/scope': 0.54.3
'@unocss/transformer-directives': 0.54.3
chokidar: 3.5.3
fast-glob: 3.3.1
magic-string: 0.30.2
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
transitivePeerDependencies:
- rollup
dev: false
@ -3608,7 +3644,7 @@ packages:
vite: ^4.0.0
vue: ^3.2.25
dependencies:
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vue: 3.3.4
/@vitest/expect@0.34.1:
@ -4846,7 +4882,7 @@ packages:
dependencies:
'@cypress/request': 2.88.12
'@cypress/xvfb': 1.2.4(supports-color@8.1.1)
'@types/node': 16.18.39
'@types/node': 16.18.40
'@types/sinonjs__fake-timers': 8.1.1
'@types/sizzle': 2.3.3
arch: 2.2.0
@ -5360,8 +5396,8 @@ packages:
source-map: 0.6.1
dev: false
/eslint-import-resolver-node@0.3.8:
resolution: {integrity: sha512-tEe+Pok22qIGaK3KoMP+N96GVDS66B/zreoVVmiavLvRUEmGRtvb4B8wO9jwnb8d2lvHtrkhZ7UD73dWBVnf/Q==}
/eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
debug: 3.2.7(supports-color@8.1.1)
is-core-module: 2.13.0
@ -5370,7 +5406,7 @@ packages:
- supports-color
dev: true
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.8)(eslint@8.46.0):
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@ -5394,7 +5430,7 @@ packages:
'@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.6)
debug: 3.2.7(supports-color@8.1.1)
eslint: 8.46.0
eslint-import-resolver-node: 0.3.8
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
dev: true
@ -5409,13 +5445,13 @@ packages:
- typescript
dev: true
/eslint-plugin-cypress@2.13.3(eslint@8.46.0):
resolution: {integrity: sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==}
/eslint-plugin-cypress@2.14.0(eslint@8.46.0):
resolution: {integrity: sha512-eW6tv7iIg7xujleAJX4Ujm649Bf5jweqa4ObPEIuueYRyLZt7qXGWhCY/n4bfeFW/j6nQZwbIBHKZt6EKcL/cg==}
peerDependencies:
eslint: '>= 3.2.1'
dependencies:
eslint: 8.46.0
globals: 11.12.0
globals: 13.20.0
dev: true
/eslint-plugin-es-x@7.2.0(eslint@8.46.0):
@ -5455,8 +5491,8 @@ packages:
debug: 3.2.7(supports-color@8.1.1)
doctrine: 2.1.0
eslint: 8.46.0
eslint-import-resolver-node: 0.3.8
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.8)(eslint@8.46.0)
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.1)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0)
get-tsconfig: 4.6.2
is-glob: 4.0.3
minimatch: 3.1.2
@ -6718,6 +6754,7 @@ packages:
resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
dependencies:
has: 1.0.3
dev: false
/is-core-module@2.13.0:
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
@ -7388,7 +7425,7 @@ packages:
resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
dev: true
/markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@13.0.1):
/markdown-it-anchor@8.6.7(@types/markdown-it@13.0.0)(markdown-it@13.0.1):
resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==}
peerDependencies:
'@types/markdown-it': '*'
@ -7397,7 +7434,7 @@ packages:
'@types/markdown-it':
optional: true
dependencies:
'@types/markdown-it': 12.2.3
'@types/markdown-it': 13.0.0
markdown-it: 13.0.1
dev: false
@ -8386,7 +8423,7 @@ packages:
/resolve@1.19.0:
resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
dependencies:
is-core-module: 2.12.1
is-core-module: 2.13.0
path-parse: 1.0.7
dev: true
@ -8397,6 +8434,7 @@ packages:
is-core-module: 2.12.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: false
/resolve@1.22.4:
resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==}
@ -8457,6 +8495,7 @@ packages:
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: true
/rollup@3.27.1:
resolution: {integrity: sha512-tXNDFwOkN6C2w5Blj1g6ForKeFw6c1mDu5jxoeDO3/pmYjgt+8yvIFjKzH5FQUq70OKZBkOt0zzv0THXL7vwzQ==}
@ -9446,35 +9485,35 @@ packages:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
/unocss@0.54.2(postcss@8.4.27)(vite@4.4.9):
resolution: {integrity: sha512-a3l1xAyIP59REem85IHSA+vDu4qovD7HwhUcEbUSX/NKmOZrm1OhUNKbSIzuQQWGdBa8ffagFBNfyXk2b8qSEg==}
/unocss@0.54.3(postcss@8.4.27)(vite@4.4.9):
resolution: {integrity: sha512-uaoCKFigRkqceLmBrtWhLqQR6D6NyBAtSFVUnM1m57BSqA0EwAFmBsgoynzAmZRTQQFsPrBzKQjEmaCUTyUd9Q==}
engines: {node: '>=14'}
peerDependencies:
'@unocss/webpack': 0.54.2
'@unocss/webpack': 0.54.3
peerDependenciesMeta:
'@unocss/webpack':
optional: true
dependencies:
'@unocss/astro': 0.54.2(vite@4.4.9)
'@unocss/cli': 0.54.2
'@unocss/core': 0.54.2
'@unocss/extractor-arbitrary-variants': 0.54.2
'@unocss/postcss': 0.54.2(postcss@8.4.27)
'@unocss/preset-attributify': 0.54.2
'@unocss/preset-icons': 0.54.2
'@unocss/preset-mini': 0.54.2
'@unocss/preset-tagify': 0.54.2
'@unocss/preset-typography': 0.54.2
'@unocss/preset-uno': 0.54.2
'@unocss/preset-web-fonts': 0.54.2
'@unocss/preset-wind': 0.54.2
'@unocss/reset': 0.54.2
'@unocss/transformer-attributify-jsx': 0.54.2
'@unocss/transformer-attributify-jsx-babel': 0.54.2
'@unocss/transformer-compile-class': 0.54.2
'@unocss/transformer-directives': 0.54.2
'@unocss/transformer-variant-group': 0.54.2
'@unocss/vite': 0.54.2(vite@4.4.9)
'@unocss/astro': 0.54.3(vite@4.4.9)
'@unocss/cli': 0.54.3
'@unocss/core': 0.54.3
'@unocss/extractor-arbitrary-variants': 0.54.3
'@unocss/postcss': 0.54.3(postcss@8.4.27)
'@unocss/preset-attributify': 0.54.3
'@unocss/preset-icons': 0.54.3
'@unocss/preset-mini': 0.54.3
'@unocss/preset-tagify': 0.54.3
'@unocss/preset-typography': 0.54.3
'@unocss/preset-uno': 0.54.3
'@unocss/preset-web-fonts': 0.54.3
'@unocss/preset-wind': 0.54.3
'@unocss/reset': 0.54.3
'@unocss/transformer-attributify-jsx': 0.54.3
'@unocss/transformer-attributify-jsx-babel': 0.54.3
'@unocss/transformer-compile-class': 0.54.3
'@unocss/transformer-directives': 0.54.3
'@unocss/transformer-variant-group': 0.54.3
'@unocss/vite': 0.54.3(vite@4.4.9)
transitivePeerDependencies:
- postcss
- rollup
@ -9501,7 +9540,7 @@ packages:
optional: true
dependencies:
'@antfu/utils': 0.7.5
'@rollup/pluginutils': 5.0.2(rollup@2.79.1)
'@rollup/pluginutils': 5.0.2
chokidar: 3.5.3
debug: 4.3.4(supports-color@8.1.1)
fast-glob: 3.2.12
@ -9592,8 +9631,8 @@ packages:
spdx-expression-parse: 3.0.1
dev: true
/validator@13.9.0:
resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==}
/validator@13.11.0:
resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}
engines: {node: '>= 0.10'}
dev: true
@ -9611,7 +9650,7 @@ packages:
extsprintf: 1.3.0
dev: true
/vite-node@0.34.1(@types/node@20.4.8):
/vite-node@0.34.1(@types/node@20.4.9):
resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==}
engines: {node: '>=v14.18.0'}
hasBin: true
@ -9621,7 +9660,7 @@ packages:
mlly: 1.4.0
pathe: 1.1.1
picocolors: 1.0.0
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
transitivePeerDependencies:
- '@types/node'
- less
@ -9673,7 +9712,7 @@ packages:
json5: 2.2.3
local-pkg: 0.4.3
picocolors: 1.0.0
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
yaml: 2.3.1
transitivePeerDependencies:
- supports-color
@ -9707,7 +9746,7 @@ packages:
'@vue/compiler-sfc': 3.2.47
debug: 4.3.4(supports-color@8.1.1)
fast-glob: 3.2.12
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vue: 3.3.4
vue-router: 4.2.4(vue@3.3.4)
transitivePeerDependencies:
@ -9743,7 +9782,7 @@ packages:
jsdom: 22.1.0
kolorist: 1.8.0
prettier: 3.0.0
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vue: 3.3.4
vue-router: 4.2.4(vue@3.3.4)
yargs: 17.7.2
@ -9789,9 +9828,46 @@ packages:
sass: 1.64.2
optionalDependencies:
fsevents: 2.3.2
dev: true
/vitepress@1.0.0-beta.7(@types/node@20.4.8)(search-insights@2.7.0):
resolution: {integrity: sha512-P9Rw+FXatKIU4fVdtKxqwHl6fby8E/8zE3FIfep6meNgN4BxbWqoKJ6yfuuQQR9IrpQqwnyaBh4LSabyll6tWg==}
/vite@4.4.9(@types/node@20.4.9)(sass@1.64.2):
resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
'@types/node': '>= 14'
less: '*'
lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
dependencies:
'@types/node': 20.4.9
esbuild: 0.18.17
postcss: 8.4.27
rollup: 3.27.1
sass: 1.64.2
optionalDependencies:
fsevents: 2.3.2
/vitepress@1.0.0-rc.4(@types/node@20.4.9)(search-insights@2.7.0):
resolution: {integrity: sha512-JCQ89Bm6ECUTnyzyas3JENo00UDJeK8q1SUQyJYou+4Yz5BKEc/F3O21cu++DnUT2zXc0kvQ2Aj4BZCc/nioXQ==}
hasBin: true
dependencies:
'@docsearch/css': 3.5.1
@ -9805,7 +9881,7 @@ packages:
mark.js: 8.11.1
minisearch: 6.1.0
shiki: 0.14.3
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vue: 3.3.4
transitivePeerDependencies:
- '@algolia/client-search'
@ -9867,7 +9943,7 @@ packages:
dependencies:
'@types/chai': 4.3.5
'@types/chai-subset': 1.3.3
'@types/node': 20.4.8
'@types/node': 20.4.9
'@vitest/expect': 0.34.1
'@vitest/runner': 0.34.1
'@vitest/snapshot': 0.34.1
@ -9886,8 +9962,8 @@ packages:
strip-literal: 1.3.0
tinybench: 2.5.0
tinypool: 0.7.0
vite: 4.4.9(@types/node@20.4.8)(sass@1.64.2)
vite-node: 0.34.1(@types/node@20.4.8)
vite: 4.4.9(@types/node@20.4.9)(sass@1.64.2)
vite-node: 0.34.1(@types/node@20.4.9)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
@ -10405,7 +10481,7 @@ packages:
dependencies:
lodash.get: 4.4.2
lodash.isequal: 4.5.0
validator: 13.9.0
validator: 13.11.0
optionalDependencies:
commander: 9.5.0
dev: true
@ -10429,7 +10505,7 @@ packages:
dependencies:
'@types/fs-extra': 11.0.1
'@types/minimist': 1.2.2
'@types/node': 18.17.3
'@types/node': 18.17.4
'@types/ps-tree': 1.1.2
'@types/which': 3.0.0
chalk: 5.2.0