From 86e3588cda7963e87b42b0b829fea634feb31a98 Mon Sep 17 00:00:00 2001 From: lisonge Date: Fri, 19 Jan 2024 12:02:24 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E9=95=9C=E5=83=8F=E5=8A=A0=E9=80=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .npmrc | 1 + .vitepress/config.ts | 11 +- .vitepress/plugins/mirror.ts | 90 ++++++++++-- package.json | 20 ++- pnpm-lock.yaml | 276 +++++++++++++++++++++-------------- 5 files changed, 264 insertions(+), 134 deletions(-) diff --git a/.npmrc b/.npmrc index 0bed4e2..5eaa8cc 100644 --- a/.npmrc +++ b/.npmrc @@ -3,4 +3,5 @@ auto-install-peers=false registry="https://registry.npmjs.org/" public-hoist-pattern[]=vue public-hoist-pattern[]=vite +public-hoist-pattern[]=rollup public-hoist-pattern[]=@vueuse/core diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 692c3bc..158c69b 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -1,13 +1,10 @@ import { defineConfig } from 'vitepress'; -import { mirror } from './plugins'; - -const useMirror = process.env.MIRROR == `ON`; +import { mirror, transformHtml } from './plugins'; // https://vitepress.dev/reference/site-config export default defineConfig({ title: 'GKD', description: '自定义屏幕点击应用', - assetsDir: '', head: [ [ 'link', @@ -18,6 +15,7 @@ export default defineConfig({ }, ], ], + lastUpdated: true, themeConfig: { // https://vitepress.dev/reference/default-theme-config logo: '/logo.svg', @@ -47,10 +45,11 @@ export default defineConfig({ copyright: `Copyright © ${new Date().getFullYear()} GKD. All rights reserved`, }, }, + transformHtml, vite: { - plugins: [useMirror && mirror()].filter(Boolean), + plugins: [mirror()], server: { - host: '0.0.0.0', + host: '127.0.0.1', port: 8633, }, }, diff --git a/.vitepress/plugins/mirror.ts b/.vitepress/plugins/mirror.ts index 39d1789..bf2d642 100644 --- a/.vitepress/plugins/mirror.ts +++ b/.vitepress/plugins/mirror.ts @@ -1,27 +1,97 @@ import fs from 'node:fs/promises'; import type { Plugin } from 'vite'; 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( 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`; -export const mirror = (): Plugin => { +const includesDynamicImport = /import\s*\(/; + +export const mirror = (): Plugin | undefined => { + if (!useMirror) return; return { name: 'mirror', apply: 'build', enforce: 'post', - config() { - return { - experimental: { - renderBuiltUrl(filename) { - // TODO renderBuiltUrl 在 vitepress 中不起作用 - return mirrorBaseUrl + '/' + filename; - }, - }, - }; + generateBundle(_, bundle) { + Object.values(bundle).forEach((chunk) => { + if ( + chunk.type == 'asset' && + chunk.fileName.endsWith(`.css`) && + 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 }); +}; diff --git a/package.json b/package.json index 7f7c4a6..832a20a 100644 --- a/package.json +++ b/package.json @@ -14,20 +14,24 @@ "docs:dev": "vitepress dev", "docs:build": "vitepress build", "docs:preview": "vitepress preview", - "docs:build-mirror": "pnpm exec cross-env MIRROR=ON vitepress build", - "format": "prettier --cache --write ." + "docs:build-mirror": "cross-env MIRROR=ON vitepress build", + "format": "prettier --cache --write --ignore-unknown ." }, "dependencies": { - "@gkd-kit/selector": "0.0.16", - "@types/node": "^20.10.6", - "@types/qrcode": "1.5.5", + "@gkd-kit/selector": "0.0.18", + "@types/node": "^20.11.5", + "@types/qrcode": "^1.5.5", + "acorn-walk": "^8.3.2", "cross-env": "^7.0.3", + "dom-serializer": "^2.0.0", + "htmlparser2": "^9.1.0", + "magic-string": "^0.30.5", "medium-zoom": "^1.1.0", - "prettier": "^3.1.1", - "qrcode": "1.5.3", + "prettier": "^3.2.4", + "qrcode": "^1.5.3", "tsx": "^4.7.0", "typescript": "^5.3.3", - "vitepress": "^1.0.0-rc.34" + "vitepress": "^1.0.0-rc.39" }, "volta": { "node": "20.10.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dcf365e..1e058f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,25 +6,37 @@ settings: dependencies: '@gkd-kit/selector': - specifier: 0.0.16 - version: 0.0.16 + specifier: 0.0.18 + version: 0.0.18 '@types/node': - specifier: ^20.10.6 - version: 20.10.6 + specifier: ^20.11.5 + version: 20.11.5 '@types/qrcode': - specifier: 1.5.5 + specifier: ^1.5.5 version: 1.5.5 + acorn-walk: + specifier: ^8.3.2 + version: 8.3.2 cross-env: specifier: ^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: specifier: ^1.1.0 version: 1.1.0 prettier: - specifier: ^3.1.1 - version: 3.1.1 + specifier: ^3.2.4 + version: 3.2.4 qrcode: - specifier: 1.5.3 + specifier: ^1.5.3 version: 1.5.3 tsx: specifier: ^4.7.0 @@ -33,8 +45,8 @@ dependencies: specifier: ^5.3.3 version: 5.3.3 vitepress: - specifier: ^1.0.0-rc.34 - version: 1.0.0-rc.34(@types/node@20.10.6)(qrcode@1.5.3)(typescript@5.3.3) + specifier: ^1.0.0-rc.39 + version: 1.0.0-rc.39(@types/node@20.11.5)(qrcode@1.5.3)(typescript@5.3.3) packages: @@ -445,8 +457,8 @@ packages: dev: false optional: true - /@gkd-kit/selector@0.0.16: - resolution: {integrity: sha512-I2/e2fYfgewaSMbkXDQz0leh35qr0XhwEsOUYjsNOQOwsg6BPnwCGwBuPVoK47TL/VmSj2NsNUCkN4fRZcvwYg==} + /@gkd-kit/selector@0.0.18: + resolution: {integrity: sha512-5aDHh45pkRLd82d+TLE5vbaz64PkcYZABOuqCXhsEQW8PtNMT05sTTW6WQeM+RH/IjGvULz/p9Hl8vpVm2bPCg==} dev: false /@jridgewell/sourcemap-codec@1.4.15: @@ -564,8 +576,8 @@ packages: resolution: {integrity: sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA==} dev: false - /@types/node@20.10.6: - resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + /@types/node@20.11.5: + resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} dependencies: undici-types: 5.26.5 dev: false @@ -573,115 +585,115 @@ packages: /@types/qrcode@1.5.5: resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.5 dev: false /@types/web-bluetooth@0.0.20: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: false - /@vitejs/plugin-vue@5.0.2(vite@5.0.10)(vue@3.4.3): - resolution: {integrity: sha512-kEjJHrLb5ePBvjD0SPZwJlw1QTRcjjCA9sB5VyfonoXVBxTS7TMnqL6EkLt1Eu61RDeiuZ/WN9Hf6PxXhPI2uA==} + /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.15): + resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.0.10(@types/node@20.10.6) - vue: 3.4.3(typescript@5.3.3) + vite: 5.0.11(@types/node@20.11.5) + vue: 3.4.15(typescript@5.3.3) dev: false - /@vue/compiler-core@3.4.3: - resolution: {integrity: sha512-u8jzgFg0EDtSrb/hG53Wwh1bAOQFtc1ZCegBpA/glyvTlgHl+tq13o1zvRfLbegYUw/E4mSTGOiCnAJ9SJ+lsg==} + /@vue/compiler-core@3.4.15: + resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} dependencies: '@babel/parser': 7.23.6 - '@vue/shared': 3.4.3 + '@vue/shared': 3.4.15 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.0.2 dev: false - /@vue/compiler-dom@3.4.3: - resolution: {integrity: sha512-oGF1E9/htI6JWj/lTJgr6UgxNCtNHbM6xKVreBWeZL9QhRGABRVoWGAzxmtBfSOd+w0Zi5BY0Es/tlJrN6WgEg==} + /@vue/compiler-dom@3.4.15: + resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} dependencies: - '@vue/compiler-core': 3.4.3 - '@vue/shared': 3.4.3 + '@vue/compiler-core': 3.4.15 + '@vue/shared': 3.4.15 dev: false - /@vue/compiler-sfc@3.4.3: - resolution: {integrity: sha512-NuJqb5is9I4uzv316VRUDYgIlPZCG8D+ARt5P4t5UDShIHKL25J3TGZAUryY/Aiy0DsY7srJnZL5ryB6DD63Zw==} + /@vue/compiler-sfc@3.4.15: + resolution: {integrity: sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==} dependencies: '@babel/parser': 7.23.6 - '@vue/compiler-core': 3.4.3 - '@vue/compiler-dom': 3.4.3 - '@vue/compiler-ssr': 3.4.3 - '@vue/shared': 3.4.3 + '@vue/compiler-core': 3.4.15 + '@vue/compiler-dom': 3.4.15 + '@vue/compiler-ssr': 3.4.15 + '@vue/shared': 3.4.15 estree-walker: 2.0.2 magic-string: 0.30.5 - postcss: 8.4.32 + postcss: 8.4.33 source-map-js: 1.0.2 dev: false - /@vue/compiler-ssr@3.4.3: - resolution: {integrity: sha512-wnYQtMBkeFSxgSSQbYGQeXPhQacQiog2c6AlvMldQH6DB+gSXK/0F6DVXAJfEiuBSgBhUc8dwrrG5JQcqwalsA==} + /@vue/compiler-ssr@3.4.15: + resolution: {integrity: sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==} dependencies: - '@vue/compiler-dom': 3.4.3 - '@vue/shared': 3.4.3 + '@vue/compiler-dom': 3.4.15 + '@vue/shared': 3.4.15 dev: false /@vue/devtools-api@6.5.1: resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} dev: false - /@vue/reactivity@3.4.3: - resolution: {integrity: sha512-q5f9HLDU+5aBKizXHAx0w4whkIANs1Muiq9R5YXm0HtorSlflqv9u/ohaMxuuhHWCji4xqpQ1eL04WvmAmGnFg==} + /@vue/reactivity@3.4.15: + resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==} dependencies: - '@vue/shared': 3.4.3 + '@vue/shared': 3.4.15 dev: false - /@vue/runtime-core@3.4.3: - resolution: {integrity: sha512-C1r6QhB1qY7D591RCSFhMULyzL9CuyrGc+3PpB0h7dU4Qqw6GNyo4BNFjHZVvsWncrUlKX3DIKg0Y7rNNr06NQ==} + /@vue/runtime-core@3.4.15: + resolution: {integrity: sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==} dependencies: - '@vue/reactivity': 3.4.3 - '@vue/shared': 3.4.3 + '@vue/reactivity': 3.4.15 + '@vue/shared': 3.4.15 dev: false - /@vue/runtime-dom@3.4.3: - resolution: {integrity: sha512-wrsprg7An5Ec+EhPngWdPuzkp0BEUxAKaQtN9dPU/iZctPyD9aaXmVtehPJerdQxQale6gEnhpnfywNw3zOv2A==} + /@vue/runtime-dom@3.4.15: + resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==} dependencies: - '@vue/runtime-core': 3.4.3 - '@vue/shared': 3.4.3 + '@vue/runtime-core': 3.4.15 + '@vue/shared': 3.4.15 csstype: 3.1.3 dev: false - /@vue/server-renderer@3.4.3(vue@3.4.3): - resolution: {integrity: sha512-BUxt8oVGMKKsqSkM1uU3d3Houyfy4WAc2SpSQRebNd+XJGATVkW/rO129jkyL+kpB/2VRKzE63zwf5RtJ3XuZw==} + /@vue/server-renderer@3.4.15(vue@3.4.15): + resolution: {integrity: sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==} peerDependencies: - vue: 3.4.3 + vue: 3.4.15 dependencies: - '@vue/compiler-ssr': 3.4.3 - '@vue/shared': 3.4.3 - vue: 3.4.3(typescript@5.3.3) + '@vue/compiler-ssr': 3.4.15 + '@vue/shared': 3.4.15 + vue: 3.4.15(typescript@5.3.3) dev: false - /@vue/shared@3.4.3: - resolution: {integrity: sha512-rIwlkkP1n4uKrRzivAKPZIEkHiuwY5mmhMJ2nZKCBLz8lTUlE73rQh4n1OnnMurXt1vcUNyH4ZPfdh8QweTjpQ==} + /@vue/shared@3.4.15: + resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} dev: false - /@vueuse/core@10.7.1(vue@3.4.3): - resolution: {integrity: sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==} + /@vueuse/core@10.7.2(vue@3.4.15): + resolution: {integrity: sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==} dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.7.1 - '@vueuse/shared': 10.7.1(vue@3.4.3) - vue-demi: 0.14.6(vue@3.4.3) + '@vueuse/metadata': 10.7.2 + '@vueuse/shared': 10.7.2(vue@3.4.15) + vue-demi: 0.14.6(vue@3.4.15) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/integrations@10.7.1(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.3): - resolution: {integrity: sha512-cKo5LEeKVHdBRBtMTOrDPdR0YNtrmN9IBfdcnY2P3m5LHVrsD0xiHUtAH1WKjHQRIErZG6rJUa6GA4tWZt89Og==} + /@vueuse/integrations@10.7.2(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.15): + resolution: {integrity: sha512-+u3RLPFedjASs5EKPc69Ge49WNgqeMfSxFn+qrQTzblPXZg6+EFzhjarS5edj2qAf6xQ93f95TUxRwKStXj/sQ==} peerDependencies: async-validator: '*' axios: '*' @@ -721,29 +733,34 @@ packages: universal-cookie: optional: true dependencies: - '@vueuse/core': 10.7.1(vue@3.4.3) - '@vueuse/shared': 10.7.1(vue@3.4.3) + '@vueuse/core': 10.7.2(vue@3.4.15) + '@vueuse/shared': 10.7.2(vue@3.4.15) focus-trap: 7.5.4 qrcode: 1.5.3 - vue-demi: 0.14.6(vue@3.4.3) + vue-demi: 0.14.6(vue@3.4.15) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/metadata@10.7.1: - resolution: {integrity: sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==} + /@vueuse/metadata@10.7.2: + resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==} dev: false - /@vueuse/shared@10.7.1(vue@3.4.3): - resolution: {integrity: sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==} + /@vueuse/shared@10.7.2(vue@3.4.15): + resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==} dependencies: - vue-demi: 0.14.6(vue@3.4.3) + vue-demi: 0.14.6(vue@3.4.15) transitivePeerDependencies: - '@vue/composition-api' - vue 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: resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} dependencies: @@ -829,6 +846,33 @@ packages: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} 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: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: false @@ -910,6 +954,15 @@ packages: resolve-pkg-maps: 1.0.0 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: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -945,11 +998,6 @@ packages: resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} dev: false - /mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - dev: false - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1003,12 +1051,21 @@ packages: source-map-js: 1.0.2 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: resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} dev: false - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.4: + resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} engines: {node: '>=14'} hasBin: true dev: false @@ -1073,20 +1130,20 @@ packages: engines: {node: '>=8'} dev: false - /shikiji-core@0.9.15: - resolution: {integrity: sha512-7hqIcUKS15OMs/61Qp2GvO1fSajBB36bDqi8vexIg5kp80V6v6SGtBrlq+nLlo7erMG2d1kvIuTIq1bwKI6fEg==} + /shikiji-core@0.9.19: + resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} dev: false - /shikiji-transformers@0.9.15: - resolution: {integrity: sha512-k0sQ6tX26/cdb8QV9CCwwr7QjRp6/AVP9C0oNIXNld3of+xCrpf74kD74piybG6vMfzBoHGsz/s60RVBJOUaYQ==} + /shikiji-transformers@0.9.19: + resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==} dependencies: - shikiji: 0.9.15 + shikiji: 0.9.19 dev: false - /shikiji@0.9.15: - resolution: {integrity: sha512-+inN4cN+nY7b0uCPOiqFHAk+cn2DEdM3AIQgPhAV7QKqhww/o7OGS5xvLh3SNnjke9C/HispALqGOQGYHVq7KQ==} + /shikiji@0.9.19: + resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==} dependencies: - shikiji-core: 0.9.15 + shikiji-core: 0.9.19 dev: false /source-map-js@1.0.2: @@ -1140,8 +1197,8 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: false - /vite@5.0.10(@types/node@20.10.6): - resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} + /vite@5.0.11(@types/node@20.11.5): + resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -1168,7 +1225,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.5 esbuild: 0.19.11 postcss: 8.4.32 rollup: 4.6.1 @@ -1176,12 +1233,12 @@ packages: fsevents: 2.3.3 dev: false - /vitepress@1.0.0-rc.34(@types/node@20.10.6)(qrcode@1.5.3)(typescript@5.3.3): - resolution: {integrity: sha512-TUbTiSdAZFni2XlHlpx61KikgkQ5uG4Wtmw2R0SXhIOG6qGqzDJczAFjkMc4i45I9c3KyatwOYe8oEfCnzVYwQ==} + /vitepress@1.0.0-rc.39(@types/node@20.11.5)(qrcode@1.5.3)(typescript@5.3.3): + resolution: {integrity: sha512-EcgoRlAAp37WOxUOYv45oxyhLrcy3Upey+mKpqW3ldsg6Ol4trPndRBk2GO0QiSvEKlb9BMerk49D/bFICN6kg==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4.3.2 - postcss: ^8.4.32 + postcss: ^8.4.33 peerDependenciesMeta: markdown-it-mathjax3: optional: true @@ -1191,19 +1248,18 @@ packages: '@docsearch/css': 3.5.2 '@docsearch/js': 3.5.2 '@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 - '@vueuse/core': 10.7.1(vue@3.4.3) - '@vueuse/integrations': 10.7.1(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.3) + '@vueuse/core': 10.7.2(vue@3.4.15) + '@vueuse/integrations': 10.7.2(focus-trap@7.5.4)(qrcode@1.5.3)(vue@3.4.15) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 - mrmime: 2.0.0 - shikiji: 0.9.15 - shikiji-core: 0.9.15 - shikiji-transformers: 0.9.15 - vite: 5.0.10(@types/node@20.10.6) - vue: 3.4.3(typescript@5.3.3) + shikiji: 0.9.19 + shikiji-core: 0.9.19 + shikiji-transformers: 0.9.19 + vite: 5.0.11(@types/node@20.11.5) + vue: 3.4.15(typescript@5.3.3) transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -1232,7 +1288,7 @@ packages: - universal-cookie 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==} engines: {node: '>=12'} hasBin: true @@ -1244,22 +1300,22 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.3(typescript@5.3.3) + vue: 3.4.15(typescript@5.3.3) dev: false - /vue@3.4.3(typescript@5.3.3): - resolution: {integrity: sha512-GjN+culMAGv/mUbkIv8zMKItno8npcj5gWlXkSxf1SPTQf8eJ4A+YfHIvQFyL1IfuJcMl3soA7SmN1fRxbf/wA==} + /vue@3.4.15(typescript@5.3.3): + resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.3 - '@vue/compiler-sfc': 3.4.3 - '@vue/runtime-dom': 3.4.3 - '@vue/server-renderer': 3.4.3(vue@3.4.3) - '@vue/shared': 3.4.3 + '@vue/compiler-dom': 3.4.15 + '@vue/compiler-sfc': 3.4.15 + '@vue/runtime-dom': 3.4.15 + '@vue/server-renderer': 3.4.15(vue@3.4.15) + '@vue/shared': 3.4.15 typescript: 5.3.3 dev: false