diff --git a/.vitepress/theme/components/AsideSponsors.vue b/.vitepress/theme/components/AsideSponsors.vue index bd1baf1b..92eef401 100644 --- a/.vitepress/theme/components/AsideSponsors.vue +++ b/.vitepress/theme/components/AsideSponsors.vue @@ -18,18 +18,23 @@ const sponsors = computed(() => { diff --git a/guide/api-hmr.md b/guide/api-hmr.md index 64321028..a30e2018 100644 --- a/guide/api-hmr.md +++ b/guide/api-hmr.md @@ -218,7 +218,7 @@ import.meta.hot.accept((module) => { 如果在连接前调用,数据会先被缓存、等到连接建立好后再发送。 -查看 [客户端与服务器的数据交互](/guide/api-plugin.html#client-server-communication) 一节获取更多细节。 +查看 [客户端与服务端间通信](/guide/api-plugin.html#client-server-communication) 以及 [自定义事件的 TypeScript 类型定义指南](/guide/api-plugin.html#typescript-for-custom-events) 章节获取更多细节。 ## 推荐阅读 {#further-reading} diff --git a/guide/api-plugin.md b/guide/api-plugin.md index fbf0917a..f0fccc29 100644 --- a/guide/api-plugin.md +++ b/guide/api-plugin.md @@ -624,16 +624,40 @@ export default defineConfig({ ### 自定义事件的 TypeScript 类型定义指南 {#typeScript-for-custom-events} -可以通过扩展 `CustomEventMap` 这个 interface 来为自定义事件标注类型: +Vite 会在内部从 `CustomEventMap` 这个接口推断出 payload 的类型,可以通过扩展这个接口来为自定义事件进行类型定义: + +:::tip 提示 +在指定 TypeScript 声明文件时,确保包含 `.d.ts` 扩展名。否则,TypeScript 可能不会知道试图扩展的是哪个文件。 +::: ```ts // events.d.ts -import 'vite/types/customEvent' +import 'vite/types/customEvent.d.ts' -declare module 'vite/types/customEvent' { +declare module 'vite/types/customEvent.d.ts' { interface CustomEventMap { 'custom:foo': { msg: string } // 'event-key': payload } } ``` + +这个接口扩展被 `InferCustomEventPayload` 所使用,用来推断事件 `T` 的 payload 类型。要了解更多关于这个接口如何被使用的信息,请参考 [HMR API 文档](./api-hmr#hmr-api)。 + +```ts twoslash +import 'vite/client' +import type { InferCustomEventPayload } from 'vite/types/customEvent.d.ts' +declare module 'vite/types/customEvent.d.ts' { + interface CustomEventMap { + 'custom:foo': { msg: string } + } +} +// ---cut--- +type CustomFooPayload = InferCustomEventPayload<'custom:foo'> +import.meta.hot?.on('custom:foo', (payload) => { + // payload 的类型为 { msg: string } +}) +import.meta.hot?.on('unknown:event', (payload) => { + // payload 的类型为 any +}) +``` diff --git a/guide/backend-integration.md b/guide/backend-integration.md index 94736901..19ffb4e3 100644 --- a/guide/backend-integration.md +++ b/guide/backend-integration.md @@ -62,24 +62,36 @@ ```json { - "main.js": { - "file": "assets/main.4889e940.js", - "src": "main.js", + "_shared-!~{003}~.js": { + "file": "assets/shared-ChJ_j-JJ.css", + "src": "_shared-!~{003}~.js" + }, + "_shared-B7PI925R.js": { + "file": "assets/shared-B7PI925R.js", + "name": "shared", + "css": ["assets/shared-ChJ_j-JJ.css"] + }, + "baz.js": { + "file": "assets/baz-B2H3sXNv.js", + "name": "baz", + "src": "baz.js", + "isDynamicEntry": true + }, + "views/bar.js": { + "file": "assets/bar-gkvgaI9m.js", + "name": "bar", + "src": "views/bar.js", "isEntry": true, - "dynamicImports": ["views/foo.js"], - "css": ["assets/main.b82dbe22.css"], - "assets": ["assets/asset.0ab0f9cd.png"], - "imports": ["_shared.83069a53.js"] + "imports": ["_shared-B7PI925R.js"], + "dynamicImports": ["baz.js"] }, "views/foo.js": { - "file": "assets/foo.869aea0d.js", + "file": "assets/foo-BRBmoGS9.js", + "name": "foo", "src": "views/foo.js", - "isDynamicEntry": true, - "imports": ["_shared.83069a53.js"] - }, - "_shared.83069a53.js": { - "file": "assets/shared.83069a53.js", - "css": ["assets/shared.a834bfc3.css"] + "isEntry": true, + "imports": ["_shared-B7PI925R.js"], + "css": ["assets/foo-5UjPuW-k.css"] } } ``` @@ -122,21 +134,21 @@ - 可选项,对于每个导入的 JavaScript chunk 的 `file` 键的 `` 标签, 同样从入口文件 chunk 开始递归追踪导入。 - 按照上面的示例 manifest,对于入口文件 `main.js`,在生产环境中应包含以下标签: + 按照上面的示例 manifest,对于入口文件 `views/foo.js`,在生产环境中应包含以下标签: ```html - - - + + + - + ``` - 而对于入口文件 `views/foo.js`,应该包含以下标签: + 而对于入口文件 `views/bar.js`,应该包含以下标签: ```html - - + + - + ``` diff --git a/guide/env-and-mode.md b/guide/env-and-mode.md index a29c2608..4323c16a 100644 --- a/guide/env-and-mode.md +++ b/guide/env-and-mode.md @@ -2,7 +2,7 @@ ## 环境变量 {#env-variables} -Vite 在一个特殊的 **`import.meta.env`** 对象上暴露环境变量。这里有一些在所有情况下都可以使用的内建变量: +Vite 在一个特殊的 **`import.meta.env`** 对象上暴露环境变量,这些变量在构建时会被静态地替换掉。这里有一些在所有情况下都可以使用的内建变量: - **`import.meta.env.MODE`**: {string} 应用运行的[模式](#modes)。 diff --git a/guide/static-deploy.md b/guide/static-deploy.md index c2cb1b7f..1d873c09 100644 --- a/guide/static-deploy.md +++ b/guide/static-deploy.md @@ -334,14 +334,28 @@ $ npx wrangler pages deploy dist 还可以为项目添加一个 [自定义域名](https://render.com/docs/custom-domains)。 -## Flightcontrol {#flightcontrol} + -使用 [AWS Amplify 部署](https://aws.amazon.com/amplify/hosting/) 部署静态站点,可以按照 [说明](https://docs.amplify.aws/guides/hosting/vite/q/platform/js/) 进行操作。 +## Flightcontrol + +根据 [说明](https://www.flightcontrol.dev/docs/reference/examples/vite?ref=docs-vite),使用 [Flightcontrol](https://www.flightcontrol.dev/?ref=docs-vite) 来部署你的静态站点。 ## Kinsta 静态站点托管 {#kinsta-static-site-hosting} -你可以按照这些 [说明](https://kinsta.com/docs/react-vite-example/) 在 [Kinsta](https://kinsta.com/static-site-hosting/) 上部署你的 Vite 应用作为一个静态站点。 +根据 [说明](https://kinsta.com/docs/react-vite-example/),使用 [Kinsta](https://kinsta.com/static-site-hosting/) 来部署你的静态站点。 + +## xmit 静态站点托管 {#xmit-static-site-hosting} + +根据 [说明](https://xmit.dev/posts/vite-quickstart/),使用 [xmit](https://xmit.co) 来部署你的静态站点。 diff --git a/index.md b/index.md index a8b07498..a53a4ce5 100644 --- a/index.md +++ b/index.md @@ -21,6 +21,9 @@ hero: - theme: alt text: 在 GitHub 上查看 link: https://github.com/vitejs/vite + - theme: brand + text: 🎉 ViteConf 23! + link: https://viteconf.org/23/replay?utm=vite-homepage features: - icon: 💡 @@ -48,6 +51,13 @@ import { onMounted } from 'vue' import { fetchReleaseTag } from './.vitepress/utils/fetchReleaseTag.js' onMounted(() => { + const urlParams = new URLSearchParams(window.location.search) + if (urlParams.get('uwu') != null) { + const img = document.querySelector('.VPHero .VPImage.image-src') + img.src = '/logo-uwu.png' + img.alt = 'Vite Kawaii Logo by @icarusgkx' + } + fetchReleaseTag() }) diff --git a/package.json b/package.json index ba2012e4..e9b76aa3 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,10 @@ "vite": "^5.1.6", "feed": "^4.2.2", "yorkie": "^2.0.0", - "@shikijs/vitepress-twoslash": "^1.3.0", + "@shikijs/vitepress-twoslash": "^1.4.0", "@types/express": "^4.17.21", - "vitepress": "1.1.3", - "vue": "^3.4.24" + "vitepress": "1.1.4", + "vue": "^3.4.26" }, "scripts": { "dev": "vitepress dev .", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a2ea44b..598fa8a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: devDependencies: '@shikijs/vitepress-twoslash': - specifier: ^1.3.0 - version: 1.3.0(typescript@5.4.2) + specifier: ^1.4.0 + version: 1.5.1(typescript@5.4.2) '@types/express': specifier: ^4.17.21 version: 4.17.21 @@ -30,11 +30,11 @@ devDependencies: specifier: ^5.1.6 version: 5.1.6(@types/node@20.9.2) vitepress: - specifier: 1.1.3 - version: 1.1.3(@algolia/client-search@4.20.0)(@types/node@20.9.2)(search-insights@2.11.0)(typescript@5.4.2) + specifier: 1.1.4 + version: 1.1.4(@algolia/client-search@4.20.0)(@types/node@20.9.2)(search-insights@2.11.0)(typescript@5.4.2) vue: - specifier: ^3.4.24 - version: 3.4.25(typescript@5.4.2) + specifier: ^3.4.26 + version: 3.4.27(typescript@5.4.2) yorkie: specifier: ^2.0.0 version: 2.0.0 @@ -180,14 +180,6 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/parser@7.24.0: - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.4 - dev: true - /@babel/parser@7.24.4: resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} @@ -892,34 +884,38 @@ packages: resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} dev: true + /@shikijs/core@1.5.1: + resolution: {integrity: sha512-xjV63pRUBvxA1LsxOUhRKLPh0uUjwBLzAKLdEuYSLIylo71sYuwDcttqNP01Ib1TZlLfO840CXHPlgUUsYFjzg==} + dev: true + /@shikijs/transformers@1.3.0: resolution: {integrity: sha512-3mlpg2I9CjhjE96dEWQOGeCWoPcyTov3s4aAsHmgvnTHa8MBknEnCQy8/xivJPSpD+olqOqIEoHnLfbNJK29AA==} dependencies: shiki: 1.3.0 dev: true - /@shikijs/twoslash@1.3.0(typescript@5.4.2): - resolution: {integrity: sha512-XF8Xmotej+cavT6ibKtnsN+TagUJF6eieOV0botcXLhj5aMTPtO+Jdjm9+0vGgloy9JHtuXsik1/JqYMvPIIVw==} + /@shikijs/twoslash@1.5.1(typescript@5.4.2): + resolution: {integrity: sha512-O0cnGcpW1LkBLd85TQp7Kdb9qzhSGyYl9c21BCAmYWhQdtnxaSKBgbiP3S35ewP/s3SrR9gCzumgznp/YSyMNg==} dependencies: - '@shikijs/core': 1.3.0 - twoslash: 0.2.5(typescript@5.4.2) + '@shikijs/core': 1.5.1 + twoslash: 0.2.6(typescript@5.4.2) transitivePeerDependencies: - supports-color - typescript dev: true - /@shikijs/vitepress-twoslash@1.3.0(typescript@5.4.2): - resolution: {integrity: sha512-fzgoLysy9aSBrZzV5KLeEUjBmCYhz2gZr+36FAtUeNB+GTDIITTlMUzCaqfnYyrDycoIemy7hw/fhNXPPhEjbQ==} + /@shikijs/vitepress-twoslash@1.5.1(typescript@5.4.2): + resolution: {integrity: sha512-q+qDk6iiKWFM8NiMQ31fLE7edWZSk7/Q3aE4Ak59fvxd9Se/BQ0yhp318o2POs1bm7AHU6Fqo2OBPN/gtzPObg==} dependencies: - '@shikijs/twoslash': 1.3.0(typescript@5.4.2) - floating-vue: 5.2.2(vue@3.4.25) + '@shikijs/twoslash': 1.5.1(typescript@5.4.2) + floating-vue: 5.2.2(vue@3.4.27) mdast-util-from-markdown: 2.0.0 mdast-util-gfm: 3.0.0 mdast-util-to-hast: 13.1.0 - shiki: 1.3.0 - twoslash: 0.2.5(typescript@5.4.2) - twoslash-vue: 0.2.5(typescript@5.4.2) - vue: 3.4.25(typescript@5.4.2) + shiki: 1.5.1 + twoslash: 0.2.6(typescript@5.4.2) + twoslash-vue: 0.2.6(typescript@5.4.2) + vue: 3.4.27(typescript@5.4.2) transitivePeerDependencies: - '@nuxt/kit' - supports-color @@ -1059,7 +1055,7 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-vue@5.0.4(vite@5.2.10)(vue@3.4.25): + /@vitejs/plugin-vue@5.0.4(vite@5.2.10)(vue@3.4.27): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: @@ -1067,7 +1063,7 @@ packages: vue: ^3.2.25 dependencies: vite: 5.2.10(@types/node@20.9.2) - vue: 3.4.25(typescript@5.4.2) + vue: 3.4.27(typescript@5.4.2) dev: true /@volar/language-core@1.11.1: @@ -1082,16 +1078,6 @@ packages: muggle-string: 0.3.1 dev: true - /@vue/compiler-core@3.4.21: - resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} - dependencies: - '@babel/parser': 7.24.0 - '@vue/shared': 3.4.21 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - dev: true - /@vue/compiler-core@3.4.25: resolution: {integrity: sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==} dependencies: @@ -1102,11 +1088,14 @@ packages: source-map-js: 1.2.0 dev: true - /@vue/compiler-dom@3.4.21: - resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + /@vue/compiler-core@3.4.27: + resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} dependencies: - '@vue/compiler-core': 3.4.21 - '@vue/shared': 3.4.21 + '@babel/parser': 7.24.4 + '@vue/shared': 3.4.27 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 dev: true /@vue/compiler-dom@3.4.25: @@ -1116,36 +1105,43 @@ packages: '@vue/shared': 3.4.25 dev: true - /@vue/compiler-sfc@3.4.25: - resolution: {integrity: sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==} + /@vue/compiler-dom@3.4.27: + resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} + dependencies: + '@vue/compiler-core': 3.4.27 + '@vue/shared': 3.4.27 + dev: true + + /@vue/compiler-sfc@3.4.27: + resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} dependencies: '@babel/parser': 7.24.4 - '@vue/compiler-core': 3.4.25 - '@vue/compiler-dom': 3.4.25 - '@vue/compiler-ssr': 3.4.25 - '@vue/shared': 3.4.25 + '@vue/compiler-core': 3.4.27 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 estree-walker: 2.0.2 magic-string: 0.30.10 postcss: 8.4.38 source-map-js: 1.2.0 dev: true - /@vue/compiler-ssr@3.4.25: - resolution: {integrity: sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==} + /@vue/compiler-ssr@3.4.27: + resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} dependencies: - '@vue/compiler-dom': 3.4.25 - '@vue/shared': 3.4.25 + '@vue/compiler-dom': 3.4.27 + '@vue/shared': 3.4.27 dev: true - /@vue/devtools-api@7.1.3(vue@3.4.25): + /@vue/devtools-api@7.1.3(vue@3.4.27): resolution: {integrity: sha512-W8IwFJ/o5iUk78jpqhvScbgCsPiOp2uileDVC0NDtW38gCWhsnu9SeBTjcdu3lbwLdsjc+H1c5Msd/x9ApbcFA==} dependencies: - '@vue/devtools-kit': 7.1.3(vue@3.4.25) + '@vue/devtools-kit': 7.1.3(vue@3.4.27) transitivePeerDependencies: - vue dev: true - /@vue/devtools-kit@7.1.3(vue@3.4.25): + /@vue/devtools-kit@7.1.3(vue@3.4.27): resolution: {integrity: sha512-NFskFSJMVCBXTkByuk2llzI3KD3Blcm7WqiRorWjD6nClHPgkH5BobDH08rfulqq5ocRt5xV+3qOT1Q9FXJrwQ==} peerDependencies: vue: ^3.0.0 @@ -1155,7 +1151,7 @@ packages: mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 - vue: 3.4.25(typescript@5.4.2) + vue: 3.4.27(typescript@5.4.2) dev: true /@vue/devtools-shared@7.1.3: @@ -1174,8 +1170,8 @@ packages: dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-dom': 3.4.25 + '@vue/shared': 3.4.25 computeds: 0.0.1 minimatch: 9.0.3 muggle-string: 0.3.1 @@ -1184,58 +1180,58 @@ packages: vue-template-compiler: 2.7.16 dev: true - /@vue/reactivity@3.4.25: - resolution: {integrity: sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==} + /@vue/reactivity@3.4.27: + resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} dependencies: - '@vue/shared': 3.4.25 + '@vue/shared': 3.4.27 dev: true - /@vue/runtime-core@3.4.25: - resolution: {integrity: sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==} + /@vue/runtime-core@3.4.27: + resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} dependencies: - '@vue/reactivity': 3.4.25 - '@vue/shared': 3.4.25 + '@vue/reactivity': 3.4.27 + '@vue/shared': 3.4.27 dev: true - /@vue/runtime-dom@3.4.25: - resolution: {integrity: sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==} + /@vue/runtime-dom@3.4.27: + resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} dependencies: - '@vue/runtime-core': 3.4.25 - '@vue/shared': 3.4.25 + '@vue/runtime-core': 3.4.27 + '@vue/shared': 3.4.27 csstype: 3.1.3 dev: true - /@vue/server-renderer@3.4.25(vue@3.4.25): - resolution: {integrity: sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==} + /@vue/server-renderer@3.4.27(vue@3.4.27): + resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} peerDependencies: - vue: 3.4.25 + vue: 3.4.27 dependencies: - '@vue/compiler-ssr': 3.4.25 - '@vue/shared': 3.4.25 - vue: 3.4.25(typescript@5.4.2) - dev: true - - /@vue/shared@3.4.21: - resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 + vue: 3.4.27(typescript@5.4.2) dev: true /@vue/shared@3.4.25: resolution: {integrity: sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==} dev: true - /@vueuse/core@10.9.0(vue@3.4.25): + /@vue/shared@3.4.27: + resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} + dev: true + + /@vueuse/core@10.9.0(vue@3.4.27): resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.9.0 - '@vueuse/shared': 10.9.0(vue@3.4.25) - vue-demi: 0.14.7(vue@3.4.25) + '@vueuse/shared': 10.9.0(vue@3.4.27) + vue-demi: 0.14.7(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - vue dev: true - /@vueuse/integrations@10.9.0(focus-trap@7.5.4)(vue@3.4.25): + /@vueuse/integrations@10.9.0(focus-trap@7.5.4)(vue@3.4.27): resolution: {integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==} peerDependencies: async-validator: '*' @@ -1276,10 +1272,10 @@ packages: universal-cookie: optional: true dependencies: - '@vueuse/core': 10.9.0(vue@3.4.25) - '@vueuse/shared': 10.9.0(vue@3.4.25) + '@vueuse/core': 10.9.0(vue@3.4.27) + '@vueuse/shared': 10.9.0(vue@3.4.27) focus-trap: 7.5.4 - vue-demi: 0.14.7(vue@3.4.25) + vue-demi: 0.14.7(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1289,10 +1285,10 @@ packages: resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} dev: true - /@vueuse/shared@10.9.0(vue@3.4.25): + /@vueuse/shared@10.9.0(vue@3.4.27): resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} dependencies: - vue-demi: 0.14.7(vue@3.4.25) + vue-demi: 0.14.7(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1528,7 +1524,7 @@ packages: xml-js: 1.6.11 dev: true - /floating-vue@5.2.2(vue@3.4.25): + /floating-vue@5.2.2(vue@3.4.27): resolution: {integrity: sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==} peerDependencies: '@nuxt/kit': ^3.2.0 @@ -1538,8 +1534,8 @@ packages: optional: true dependencies: '@floating-ui/dom': 1.1.1 - vue: 3.4.25(typescript@5.4.2) - vue-resize: 2.0.0-alpha.1(vue@3.4.25) + vue: 3.4.27(typescript@5.4.2) + vue-resize: 2.0.0-alpha.1(vue@3.4.27) dev: true /focus-trap@7.5.4: @@ -2132,6 +2128,12 @@ packages: '@shikijs/core': 1.3.0 dev: true + /shiki@1.5.1: + resolution: {integrity: sha512-vx4Ds3M3B9ZEmLeSXqBAB85osBWV8ErZfP69kuFQZozPgHc33m7spLTCUkcjwEjFm3gk3F9IdXMv8kX+v9xDHA==} + dependencies: + '@shikijs/core': 1.5.1 + dev: true + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true @@ -2190,30 +2192,30 @@ packages: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: true - /twoslash-protocol@0.2.5: - resolution: {integrity: sha512-oUr5ZAn37CgNa6p1mrCuuR/pINffsnGCee2aS170Uj1IObxCjsHzu6sgdPUdxGLLn6++gd/qjNH1/iR6RrfLeg==} + /twoslash-protocol@0.2.6: + resolution: {integrity: sha512-8NbJlYeRdBcCTQ7ui7pdRPC1NL16aOnoYNz06oBW+W0qWNuiQXHgE8UeNvbA038aDd6ZPuuD5WedsBIESocB4g==} dev: true - /twoslash-vue@0.2.5(typescript@5.4.2): - resolution: {integrity: sha512-Tai45V/1G/jEJQIbDe/DIkJCgOqtA/ZHxx4TgC5EM/nnyTP6zbZNtvKOlzMjFgXFdk6rebWEl2Mi/RHKs/sbDQ==} + /twoslash-vue@0.2.6(typescript@5.4.2): + resolution: {integrity: sha512-tuR/45Xb3mg3WGb7Ek7+WH/bBStw79OCbiFmnqK/51lcfjxaz7RCIQEcH2rAMY52NjwbOqw9om+DKVfgA4BYdA==} peerDependencies: typescript: '*' dependencies: '@vue/language-core': 1.8.27(typescript@5.4.2) - twoslash: 0.2.5(typescript@5.4.2) - twoslash-protocol: 0.2.5 + twoslash: 0.2.6(typescript@5.4.2) + twoslash-protocol: 0.2.6 typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /twoslash@0.2.5(typescript@5.4.2): - resolution: {integrity: sha512-U8rqsfVh8jQMO1NJekUtglb52b7xD9+FrzeFrgzpHsRTKl8IQgqnZP6ld4PeKaHXhLfoZPuju9K50NXJ7wom8g==} + /twoslash@0.2.6(typescript@5.4.2): + resolution: {integrity: sha512-DcAKIyXMB6xNs+SOw/oF8GvUr/cfJSqznngVXYbAUIVfTW3M8vWSEoCaz/RgSD+M6vwtK8DJ4/FmYBF5MN8BGw==} peerDependencies: typescript: '*' dependencies: '@typescript/vfs': 1.5.0 - twoslash-protocol: 0.2.5 + twoslash-protocol: 0.2.6 typescript: 5.4.2 transitivePeerDependencies: - supports-color @@ -2349,8 +2351,8 @@ packages: fsevents: 2.3.3 dev: true - /vitepress@1.1.3(@algolia/client-search@4.20.0)(@types/node@20.9.2)(search-insights@2.11.0)(typescript@5.4.2): - resolution: {integrity: sha512-hGrIYN0w9IHWs0NQSnlMjKV/v/HLfD+Ywv5QdvCSkiT32mpNOOwUrZjnqZv/JL/WBPpUc94eghTUvmipxw0xrA==} + /vitepress@1.1.4(@algolia/client-search@4.20.0)(@types/node@20.9.2)(search-insights@2.11.0)(typescript@5.4.2): + resolution: {integrity: sha512-bWIzFZXpPB6NIDBuWnS20aMADH+FcFKDfQNYFvbOWij03PR29eImTceQHIzCKordjXYBhM/TjE5VKFTUJ3EheA==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -2366,16 +2368,16 @@ packages: '@shikijs/core': 1.3.0 '@shikijs/transformers': 1.3.0 '@types/markdown-it': 14.0.1 - '@vitejs/plugin-vue': 5.0.4(vite@5.2.10)(vue@3.4.25) - '@vue/devtools-api': 7.1.3(vue@3.4.25) - '@vueuse/core': 10.9.0(vue@3.4.25) - '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.25) + '@vitejs/plugin-vue': 5.0.4(vite@5.2.10)(vue@3.4.27) + '@vue/devtools-api': 7.1.3(vue@3.4.27) + '@vueuse/core': 10.9.0(vue@3.4.27) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.27) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 shiki: 1.3.0 vite: 5.2.10(@types/node@20.9.2) - vue: 3.4.25(typescript@5.4.2) + vue: 3.4.27(typescript@5.4.2) transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -2404,7 +2406,7 @@ packages: - universal-cookie dev: true - /vue-demi@0.14.7(vue@3.4.25): + /vue-demi@0.14.7(vue@3.4.27): resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} engines: {node: '>=12'} hasBin: true @@ -2416,15 +2418,15 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.25(typescript@5.4.2) + vue: 3.4.27(typescript@5.4.2) dev: true - /vue-resize@2.0.0-alpha.1(vue@3.4.25): + /vue-resize@2.0.0-alpha.1(vue@3.4.27): resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==} peerDependencies: vue: ^3.0.0 dependencies: - vue: 3.4.25(typescript@5.4.2) + vue: 3.4.27(typescript@5.4.2) dev: true /vue-template-compiler@2.7.16: @@ -2434,19 +2436,19 @@ packages: he: 1.2.0 dev: true - /vue@3.4.25(typescript@5.4.2): - resolution: {integrity: sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==} + /vue@3.4.27(typescript@5.4.2): + resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.25 - '@vue/compiler-sfc': 3.4.25 - '@vue/runtime-dom': 3.4.25 - '@vue/server-renderer': 3.4.25(vue@3.4.25) - '@vue/shared': 3.4.25 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-sfc': 3.4.27 + '@vue/runtime-dom': 3.4.27 + '@vue/server-renderer': 3.4.27(vue@3.4.27) + '@vue/shared': 3.4.27 typescript: 5.4.2 dev: true diff --git a/public/logo-uwu.png b/public/logo-uwu.png new file mode 100644 index 00000000..e45e40af Binary files /dev/null and b/public/logo-uwu.png differ