perf: 镜像加速

This commit is contained in:
lisonge 2024-01-19 12:02:24 +08:00
parent ca5fed4125
commit 86e3588cda
5 changed files with 264 additions and 134 deletions

1
.npmrc
View File

@ -3,4 +3,5 @@ auto-install-peers=false
registry="https://registry.npmjs.org/" registry="https://registry.npmjs.org/"
public-hoist-pattern[]=vue public-hoist-pattern[]=vue
public-hoist-pattern[]=vite public-hoist-pattern[]=vite
public-hoist-pattern[]=rollup
public-hoist-pattern[]=@vueuse/core public-hoist-pattern[]=@vueuse/core

View File

@ -1,13 +1,10 @@
import { defineConfig } from 'vitepress'; import { defineConfig } from 'vitepress';
import { mirror } from './plugins'; import { mirror, transformHtml } from './plugins';
const useMirror = process.env.MIRROR == `ON`;
// https://vitepress.dev/reference/site-config // https://vitepress.dev/reference/site-config
export default defineConfig({ export default defineConfig({
title: 'GKD', title: 'GKD',
description: '自定义屏幕点击应用', description: '自定义屏幕点击应用',
assetsDir: '',
head: [ head: [
[ [
'link', 'link',
@ -18,6 +15,7 @@ export default defineConfig({
}, },
], ],
], ],
lastUpdated: true,
themeConfig: { themeConfig: {
// https://vitepress.dev/reference/default-theme-config // https://vitepress.dev/reference/default-theme-config
logo: '/logo.svg', logo: '/logo.svg',
@ -47,10 +45,11 @@ export default defineConfig({
copyright: `Copyright © ${new Date().getFullYear()} GKD. All rights reserved`, copyright: `Copyright © ${new Date().getFullYear()} GKD. All rights reserved`,
}, },
}, },
transformHtml,
vite: { vite: {
plugins: [useMirror && mirror()].filter(Boolean), plugins: [mirror()],
server: { server: {
host: '0.0.0.0', host: '127.0.0.1',
port: 8633, port: 8633,
}, },
}, },

View File

@ -1,27 +1,97 @@
import fs from 'node:fs/promises'; import fs from 'node:fs/promises';
import type { Plugin } from 'vite'; import type { Plugin } from 'vite';
import type selfPkgT from '../../package.json'; import type selfPkgT from '../../package.json';
import * as walk from 'acorn-walk';
import MagicString from 'magic-string';
import { DomUtils, parseDocument } from 'htmlparser2';
import render from 'dom-serializer';
const selfPkg: typeof selfPkgT = JSON.parse( const selfPkg: typeof selfPkgT = JSON.parse(
await fs.readFile(process.cwd() + '/package.json', 'utf-8'), await fs.readFile(process.cwd() + '/package.json', 'utf-8'),
); );
const useMirror = process.env.MIRROR == `ON`;
const mirrorBaseUrl = `https://registry.npmmirror.com/@gkd-kit/docs/${selfPkg.version}/files/.vitepress/dist`; const mirrorBaseUrl = `https://registry.npmmirror.com/@gkd-kit/docs/${selfPkg.version}/files/.vitepress/dist`;
export const mirror = (): Plugin => { const includesDynamicImport = /import\s*\(/;
export const mirror = (): Plugin | undefined => {
if (!useMirror) return;
return { return {
name: 'mirror', name: 'mirror',
apply: 'build', apply: 'build',
enforce: 'post', enforce: 'post',
config() { generateBundle(_, bundle) {
return { Object.values(bundle).forEach((chunk) => {
experimental: { if (
renderBuiltUrl(filename) { chunk.type == 'asset' &&
// TODO renderBuiltUrl 在 vitepress 中不起作用 chunk.fileName.endsWith(`.css`) &&
return mirrorBaseUrl + '/' + filename; typeof chunk.source == 'string'
) {
chunk.source = chunk.source.replaceAll(
'/assets/',
`${mirrorBaseUrl}/assets/`,
);
}
if (
chunk.type == 'chunk' &&
chunk.fileName.endsWith(`.js`) &&
chunk.code.match(includesDynamicImport)
) {
const ast = this.parse(chunk.code);
const nodes: any[] = [];
walk.simple(ast, {
ImportExpression(node) {
nodes.push(node.source);
}, },
}, });
}; if (nodes.length == 0) {
return;
}
const ms = new MagicString(chunk.code);
nodes.forEach((node) => {
const start = node.start;
const end = node.end;
const code = chunk.code.slice(start, end);
ms.overwrite(
start,
end,
`((u)=>{if(u.startsWith('/')){return${JSON.stringify(
mirrorBaseUrl,
)}+u}return u})(${code})`,
);
});
chunk.code = ms.toString();
}
});
}, },
}; };
}; };
export const transformHtml = (code: string) => {
if (!useMirror) return;
const doc = parseDocument(code);
const scripts = DomUtils.findAll((e) => {
return (
e.name === 'script' &&
!!e.attribs.src &&
e.attribs.src.startsWith('/assets/')
);
}, doc.children);
scripts.forEach((e) => {
e.attribs.src = mirrorBaseUrl + e.attribs.src;
});
const links = DomUtils.findAll((e) => {
const href = e.attribs.href;
return (
e.name === 'link' &&
!!href &&
(href.startsWith('/assets/') || href.startsWith('/logo.svg'))
);
}, doc.children);
links.forEach((e) => {
e.attribs.href = mirrorBaseUrl + e.attribs.href;
});
return render(doc, { encodeEntities: false });
};

View File

@ -14,20 +14,24 @@
"docs:dev": "vitepress dev", "docs:dev": "vitepress dev",
"docs:build": "vitepress build", "docs:build": "vitepress build",
"docs:preview": "vitepress preview", "docs:preview": "vitepress preview",
"docs:build-mirror": "pnpm exec cross-env MIRROR=ON vitepress build", "docs:build-mirror": "cross-env MIRROR=ON vitepress build",
"format": "prettier --cache --write ." "format": "prettier --cache --write --ignore-unknown ."
}, },
"dependencies": { "dependencies": {
"@gkd-kit/selector": "0.0.16", "@gkd-kit/selector": "0.0.18",
"@types/node": "^20.10.6", "@types/node": "^20.11.5",
"@types/qrcode": "1.5.5", "@types/qrcode": "^1.5.5",
"acorn-walk": "^8.3.2",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"dom-serializer": "^2.0.0",
"htmlparser2": "^9.1.0",
"magic-string": "^0.30.5",
"medium-zoom": "^1.1.0", "medium-zoom": "^1.1.0",
"prettier": "^3.1.1", "prettier": "^3.2.4",
"qrcode": "1.5.3", "qrcode": "^1.5.3",
"tsx": "^4.7.0", "tsx": "^4.7.0",
"typescript": "^5.3.3", "typescript": "^5.3.3",
"vitepress": "^1.0.0-rc.34" "vitepress": "^1.0.0-rc.39"
}, },
"volta": { "volta": {
"node": "20.10.0" "node": "20.10.0"

View File

@ -6,25 +6,37 @@ settings:
dependencies: dependencies:
'@gkd-kit/selector': '@gkd-kit/selector':
specifier: 0.0.16 specifier: 0.0.18
version: 0.0.16 version: 0.0.18
'@types/node': '@types/node':
specifier: ^20.10.6 specifier: ^20.11.5
version: 20.10.6 version: 20.11.5
'@types/qrcode': '@types/qrcode':
specifier: 1.5.5 specifier: ^1.5.5
version: 1.5.5 version: 1.5.5
acorn-walk:
specifier: ^8.3.2
version: 8.3.2
cross-env: cross-env:
specifier: ^7.0.3 specifier: ^7.0.3
version: 7.0.3 version: 7.0.3
dom-serializer:
specifier: ^2.0.0
version: 2.0.0
htmlparser2:
specifier: ^9.1.0
version: 9.1.0
magic-string:
specifier: ^0.30.5
version: 0.30.5
medium-zoom: medium-zoom:
specifier: ^1.1.0 specifier: ^1.1.0
version: 1.1.0 version: 1.1.0
prettier: prettier:
specifier: ^3.1.1 specifier: ^3.2.4
version: 3.1.1 version: 3.2.4
qrcode: qrcode:
specifier: 1.5.3 specifier: ^1.5.3
version: 1.5.3 version: 1.5.3
tsx: tsx:
specifier: ^4.7.0 specifier: ^4.7.0
@ -33,8 +45,8 @@ dependencies:
specifier: ^5.3.3 specifier: ^5.3.3
version: 5.3.3 version: 5.3.3
vitepress: vitepress:
specifier: ^1.0.0-rc.34 specifier: ^1.0.0-rc.39
version: 1.0.0-rc.34(@types/node@20.10.6)(qrcode@1.5.3)(typescript@5.3.3) version: 1.0.0-rc.39(@types/node@20.11.5)(qrcode@1.5.3)(typescript@5.3.3)
packages: packages:
@ -445,8 +457,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@gkd-kit/selector@0.0.16: /@gkd-kit/selector@0.0.18:
resolution: {integrity: sha512-I2/e2fYfgewaSMbkXDQz0leh35qr0XhwEsOUYjsNOQOwsg6BPnwCGwBuPVoK47TL/VmSj2NsNUCkN4fRZcvwYg==} resolution: {integrity: sha512-5aDHh45pkRLd82d+TLE5vbaz64PkcYZABOuqCXhsEQW8PtNMT05sTTW6WQeM+RH/IjGvULz/p9Hl8vpVm2bPCg==}
dev: false dev: false
/@jridgewell/sourcemap-codec@1.4.15: /@jridgewell/sourcemap-codec@1.4.15:
@ -564,8 +576,8 @@ packages:
resolution: {integrity: sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA==} resolution: {integrity: sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA==}
dev: false dev: false
/@types/node@20.10.6: /@types/node@20.11.5:
resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
dev: false dev: false
@ -573,115 +585,115 @@ packages:
/@types/qrcode@1.5.5: /@types/qrcode@1.5.5:
resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==}
dependencies: dependencies:
'@types/node': 20.10.6 '@types/node': 20.11.5
dev: false dev: false
/@types/web-bluetooth@0.0.20: /@types/web-bluetooth@0.0.20:
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
dev: false dev: false
/@vitejs/plugin-vue@5.0.2(vite@5.0.10)(vue@3.4.3): /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.15):
resolution: {integrity: sha512-kEjJHrLb5ePBvjD0SPZwJlw1QTRcjjCA9sB5VyfonoXVBxTS7TMnqL6EkLt1Eu61RDeiuZ/WN9Hf6PxXhPI2uA==} resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies: peerDependencies:
vite: ^5.0.0 vite: ^5.0.0
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 5.0.10(@types/node@20.10.6) vite: 5.0.11(@types/node@20.11.5)
vue: 3.4.3(typescript@5.3.3) vue: 3.4.15(typescript@5.3.3)
dev: false dev: false
/@vue/compiler-core@3.4.3: /@vue/compiler-core@3.4.15:
resolution: {integrity: sha512-u8jzgFg0EDtSrb/hG53Wwh1bAOQFtc1ZCegBpA/glyvTlgHl+tq13o1zvRfLbegYUw/E4mSTGOiCnAJ9SJ+lsg==} resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==}
dependencies: dependencies:
'@babel/parser': 7.23.6 '@babel/parser': 7.23.6
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
entities: 4.5.0 entities: 4.5.0
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: false dev: false
/@vue/compiler-dom@3.4.3: /@vue/compiler-dom@3.4.15:
resolution: {integrity: sha512-oGF1E9/htI6JWj/lTJgr6UgxNCtNHbM6xKVreBWeZL9QhRGABRVoWGAzxmtBfSOd+w0Zi5BY0Es/tlJrN6WgEg==} resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==}
dependencies: dependencies:
'@vue/compiler-core': 3.4.3 '@vue/compiler-core': 3.4.15
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
dev: false dev: false
/@vue/compiler-sfc@3.4.3: /@vue/compiler-sfc@3.4.15:
resolution: {integrity: sha512-NuJqb5is9I4uzv316VRUDYgIlPZCG8D+ARt5P4t5UDShIHKL25J3TGZAUryY/Aiy0DsY7srJnZL5ryB6DD63Zw==} resolution: {integrity: sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==}
dependencies: dependencies:
'@babel/parser': 7.23.6 '@babel/parser': 7.23.6
'@vue/compiler-core': 3.4.3 '@vue/compiler-core': 3.4.15
'@vue/compiler-dom': 3.4.3 '@vue/compiler-dom': 3.4.15
'@vue/compiler-ssr': 3.4.3 '@vue/compiler-ssr': 3.4.15
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.5 magic-string: 0.30.5
postcss: 8.4.32 postcss: 8.4.33
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: false dev: false
/@vue/compiler-ssr@3.4.3: /@vue/compiler-ssr@3.4.15:
resolution: {integrity: sha512-wnYQtMBkeFSxgSSQbYGQeXPhQacQiog2c6AlvMldQH6DB+gSXK/0F6DVXAJfEiuBSgBhUc8dwrrG5JQcqwalsA==} resolution: {integrity: sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==}
dependencies: dependencies:
'@vue/compiler-dom': 3.4.3 '@vue/compiler-dom': 3.4.15
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
dev: false dev: false
/@vue/devtools-api@6.5.1: /@vue/devtools-api@6.5.1:
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
dev: false dev: false
/@vue/reactivity@3.4.3: /@vue/reactivity@3.4.15:
resolution: {integrity: sha512-q5f9HLDU+5aBKizXHAx0w4whkIANs1Muiq9R5YXm0HtorSlflqv9u/ohaMxuuhHWCji4xqpQ1eL04WvmAmGnFg==} resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==}
dependencies: dependencies:
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
dev: false dev: false
/@vue/runtime-core@3.4.3: /@vue/runtime-core@3.4.15:
resolution: {integrity: sha512-C1r6QhB1qY7D591RCSFhMULyzL9CuyrGc+3PpB0h7dU4Qqw6GNyo4BNFjHZVvsWncrUlKX3DIKg0Y7rNNr06NQ==} resolution: {integrity: sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==}
dependencies: dependencies:
'@vue/reactivity': 3.4.3 '@vue/reactivity': 3.4.15
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
dev: false dev: false
/@vue/runtime-dom@3.4.3: /@vue/runtime-dom@3.4.15:
resolution: {integrity: sha512-wrsprg7An5Ec+EhPngWdPuzkp0BEUxAKaQtN9dPU/iZctPyD9aaXmVtehPJerdQxQale6gEnhpnfywNw3zOv2A==} resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==}
dependencies: dependencies:
'@vue/runtime-core': 3.4.3 '@vue/runtime-core': 3.4.15
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
csstype: 3.1.3 csstype: 3.1.3
dev: false dev: false
/@vue/server-renderer@3.4.3(vue@3.4.3): /@vue/server-renderer@3.4.15(vue@3.4.15):
resolution: {integrity: sha512-BUxt8oVGMKKsqSkM1uU3d3Houyfy4WAc2SpSQRebNd+XJGATVkW/rO129jkyL+kpB/2VRKzE63zwf5RtJ3XuZw==} resolution: {integrity: sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==}
peerDependencies: peerDependencies:
vue: 3.4.3 vue: 3.4.15
dependencies: dependencies:
'@vue/compiler-ssr': 3.4.3 '@vue/compiler-ssr': 3.4.15
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
vue: 3.4.3(typescript@5.3.3) vue: 3.4.15(typescript@5.3.3)
dev: false dev: false
/@vue/shared@3.4.3: /@vue/shared@3.4.15:
resolution: {integrity: sha512-rIwlkkP1n4uKrRzivAKPZIEkHiuwY5mmhMJ2nZKCBLz8lTUlE73rQh4n1OnnMurXt1vcUNyH4ZPfdh8QweTjpQ==} resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==}
dev: false dev: false
/@vueuse/core@10.7.1(vue@3.4.3): /@vueuse/core@10.7.2(vue@3.4.15):
resolution: {integrity: sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==} resolution: {integrity: sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==}
dependencies: dependencies:
'@types/web-bluetooth': 0.0.20 '@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.7.1 '@vueuse/metadata': 10.7.2
'@vueuse/shared': 10.7.1(vue@3.4.3) '@vueuse/shared': 10.7.2(vue@3.4.15)
vue-demi: 0.14.6(vue@3.4.3) vue-demi: 0.14.6(vue@3.4.15)
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
dev: false dev: false
/@vueuse/integrations@10.7.1(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.3): /@vueuse/integrations@10.7.2(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.15):
resolution: {integrity: sha512-cKo5LEeKVHdBRBtMTOrDPdR0YNtrmN9IBfdcnY2P3m5LHVrsD0xiHUtAH1WKjHQRIErZG6rJUa6GA4tWZt89Og==} resolution: {integrity: sha512-+u3RLPFedjASs5EKPc69Ge49WNgqeMfSxFn+qrQTzblPXZg6+EFzhjarS5edj2qAf6xQ93f95TUxRwKStXj/sQ==}
peerDependencies: peerDependencies:
async-validator: '*' async-validator: '*'
axios: '*' axios: '*'
@ -721,29 +733,34 @@ packages:
universal-cookie: universal-cookie:
optional: true optional: true
dependencies: dependencies:
'@vueuse/core': 10.7.1(vue@3.4.3) '@vueuse/core': 10.7.2(vue@3.4.15)
'@vueuse/shared': 10.7.1(vue@3.4.3) '@vueuse/shared': 10.7.2(vue@3.4.15)
focus-trap: 7.5.4 focus-trap: 7.5.4
qrcode: 1.5.3 qrcode: 1.5.3
vue-demi: 0.14.6(vue@3.4.3) vue-demi: 0.14.6(vue@3.4.15)
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
dev: false dev: false
/@vueuse/metadata@10.7.1: /@vueuse/metadata@10.7.2:
resolution: {integrity: sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==} resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==}
dev: false dev: false
/@vueuse/shared@10.7.1(vue@3.4.3): /@vueuse/shared@10.7.2(vue@3.4.15):
resolution: {integrity: sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==} resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==}
dependencies: dependencies:
vue-demi: 0.14.6(vue@3.4.3) vue-demi: 0.14.6(vue@3.4.15)
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
dev: false dev: false
/acorn-walk@8.3.2:
resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
engines: {node: '>=0.4.0'}
dev: false
/algoliasearch@4.20.0: /algoliasearch@4.20.0:
resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==}
dependencies: dependencies:
@ -829,6 +846,33 @@ packages:
resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
dev: false dev: false
/dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
dependencies:
domelementtype: 2.3.0
domhandler: 5.0.3
entities: 4.5.0
dev: false
/domelementtype@2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
dev: false
/domhandler@5.0.3:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
dependencies:
domelementtype: 2.3.0
dev: false
/domutils@3.1.0:
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
dependencies:
dom-serializer: 2.0.0
domelementtype: 2.3.0
domhandler: 5.0.3
dev: false
/emoji-regex@8.0.0: /emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
dev: false dev: false
@ -910,6 +954,15 @@ packages:
resolve-pkg-maps: 1.0.0 resolve-pkg-maps: 1.0.0
dev: false dev: false
/htmlparser2@9.1.0:
resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
dependencies:
domelementtype: 2.3.0
domhandler: 5.0.3
domutils: 3.1.0
entities: 4.5.0
dev: false
/is-fullwidth-code-point@3.0.0: /is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -945,11 +998,6 @@ packages:
resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==}
dev: false dev: false
/mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
dev: false
/nanoid@3.3.7: /nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@ -1003,12 +1051,21 @@ packages:
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: false dev: false
/postcss@8.4.33:
resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
dev: false
/preact@10.18.1: /preact@10.18.1:
resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==}
dev: false dev: false
/prettier@3.1.1: /prettier@3.2.4:
resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dev: false dev: false
@ -1073,20 +1130,20 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: false dev: false
/shikiji-core@0.9.15: /shikiji-core@0.9.19:
resolution: {integrity: sha512-7hqIcUKS15OMs/61Qp2GvO1fSajBB36bDqi8vexIg5kp80V6v6SGtBrlq+nLlo7erMG2d1kvIuTIq1bwKI6fEg==} resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==}
dev: false dev: false
/shikiji-transformers@0.9.15: /shikiji-transformers@0.9.19:
resolution: {integrity: sha512-k0sQ6tX26/cdb8QV9CCwwr7QjRp6/AVP9C0oNIXNld3of+xCrpf74kD74piybG6vMfzBoHGsz/s60RVBJOUaYQ==} resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==}
dependencies: dependencies:
shikiji: 0.9.15 shikiji: 0.9.19
dev: false dev: false
/shikiji@0.9.15: /shikiji@0.9.19:
resolution: {integrity: sha512-+inN4cN+nY7b0uCPOiqFHAk+cn2DEdM3AIQgPhAV7QKqhww/o7OGS5xvLh3SNnjke9C/HispALqGOQGYHVq7KQ==} resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==}
dependencies: dependencies:
shikiji-core: 0.9.15 shikiji-core: 0.9.19
dev: false dev: false
/source-map-js@1.0.2: /source-map-js@1.0.2:
@ -1140,8 +1197,8 @@ packages:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
dev: false dev: false
/vite@5.0.10(@types/node@20.10.6): /vite@5.0.11(@types/node@20.11.5):
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -1168,7 +1225,7 @@ packages:
terser: terser:
optional: true optional: true
dependencies: dependencies:
'@types/node': 20.10.6 '@types/node': 20.11.5
esbuild: 0.19.11 esbuild: 0.19.11
postcss: 8.4.32 postcss: 8.4.32
rollup: 4.6.1 rollup: 4.6.1
@ -1176,12 +1233,12 @@ packages:
fsevents: 2.3.3 fsevents: 2.3.3
dev: false dev: false
/vitepress@1.0.0-rc.34(@types/node@20.10.6)(qrcode@1.5.3)(typescript@5.3.3): /vitepress@1.0.0-rc.39(@types/node@20.11.5)(qrcode@1.5.3)(typescript@5.3.3):
resolution: {integrity: sha512-TUbTiSdAZFni2XlHlpx61KikgkQ5uG4Wtmw2R0SXhIOG6qGqzDJczAFjkMc4i45I9c3KyatwOYe8oEfCnzVYwQ==} resolution: {integrity: sha512-EcgoRlAAp37WOxUOYv45oxyhLrcy3Upey+mKpqW3ldsg6Ol4trPndRBk2GO0QiSvEKlb9BMerk49D/bFICN6kg==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
markdown-it-mathjax3: ^4.3.2 markdown-it-mathjax3: ^4.3.2
postcss: ^8.4.32 postcss: ^8.4.33
peerDependenciesMeta: peerDependenciesMeta:
markdown-it-mathjax3: markdown-it-mathjax3:
optional: true optional: true
@ -1191,19 +1248,18 @@ packages:
'@docsearch/css': 3.5.2 '@docsearch/css': 3.5.2
'@docsearch/js': 3.5.2 '@docsearch/js': 3.5.2
'@types/markdown-it': 13.0.7 '@types/markdown-it': 13.0.7
'@vitejs/plugin-vue': 5.0.2(vite@5.0.10)(vue@3.4.3) '@vitejs/plugin-vue': 5.0.3(vite@5.0.11)(vue@3.4.15)
'@vue/devtools-api': 6.5.1 '@vue/devtools-api': 6.5.1
'@vueuse/core': 10.7.1(vue@3.4.3) '@vueuse/core': 10.7.2(vue@3.4.15)
'@vueuse/integrations': 10.7.1(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.3) '@vueuse/integrations': 10.7.2(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.15)
focus-trap: 7.5.4 focus-trap: 7.5.4
mark.js: 8.11.1 mark.js: 8.11.1
minisearch: 6.3.0 minisearch: 6.3.0
mrmime: 2.0.0 shikiji: 0.9.19
shikiji: 0.9.15 shikiji-core: 0.9.19
shikiji-core: 0.9.15 shikiji-transformers: 0.9.19
shikiji-transformers: 0.9.15 vite: 5.0.11(@types/node@20.11.5)
vite: 5.0.10(@types/node@20.10.6) vue: 3.4.15(typescript@5.3.3)
vue: 3.4.3(typescript@5.3.3)
transitivePeerDependencies: transitivePeerDependencies:
- '@algolia/client-search' - '@algolia/client-search'
- '@types/node' - '@types/node'
@ -1232,7 +1288,7 @@ packages:
- universal-cookie - universal-cookie
dev: false dev: false
/vue-demi@0.14.6(vue@3.4.3): /vue-demi@0.14.6(vue@3.4.15):
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
@ -1244,22 +1300,22 @@ packages:
'@vue/composition-api': '@vue/composition-api':
optional: true optional: true
dependencies: dependencies:
vue: 3.4.3(typescript@5.3.3) vue: 3.4.15(typescript@5.3.3)
dev: false dev: false
/vue@3.4.3(typescript@5.3.3): /vue@3.4.15(typescript@5.3.3):
resolution: {integrity: sha512-GjN+culMAGv/mUbkIv8zMKItno8npcj5gWlXkSxf1SPTQf8eJ4A+YfHIvQFyL1IfuJcMl3soA7SmN1fRxbf/wA==} resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@vue/compiler-dom': 3.4.3 '@vue/compiler-dom': 3.4.15
'@vue/compiler-sfc': 3.4.3 '@vue/compiler-sfc': 3.4.15
'@vue/runtime-dom': 3.4.3 '@vue/runtime-dom': 3.4.15
'@vue/server-renderer': 3.4.3(vue@3.4.3) '@vue/server-renderer': 3.4.15(vue@3.4.15)
'@vue/shared': 3.4.3 '@vue/shared': 3.4.15
typescript: 5.3.3 typescript: 5.3.3
dev: false dev: false