From 2e6f7d35ef59de354195b0e154085ac9544fd7cb Mon Sep 17 00:00:00 2001 From: Thierry Goettelmann Date: Tue, 30 Jan 2024 11:31:58 +0100 Subject: [PATCH] feat(xo6): setup file based router (#7318) --- .eslintrc.js | 19 +++ @xen-orchestra/web/package.json | 1 + @xen-orchestra/web/src/App.vue | 2 +- @xen-orchestra/web/src/main.ts | 7 + @xen-orchestra/web/src/pages/index.vue | 1 + @xen-orchestra/web/tsconfig.app.json | 2 +- @xen-orchestra/web/typed-router.d.ts | 144 ++++++++++++++++++ @xen-orchestra/web/vite.config.ts | 3 +- yarn.lock | 203 +++++++++++++++++++++++-- 9 files changed, 364 insertions(+), 18 deletions(-) create mode 100644 @xen-orchestra/web/src/pages/index.vue create mode 100644 @xen-orchestra/web/typed-router.d.ts diff --git a/.eslintrc.js b/.eslintrc.js index 63ffc968a..749b9e18d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -79,6 +79,25 @@ module.exports = { 'vue/require-default-prop': 'off', // https://github.com/vuejs/eslint-plugin-vue/issues/2051 }, }, + { + files: ['@xen-orchestra/{web-core,lite,web}/src/pages/**/*.vue'], + parserOptions: { + sourceType: 'module', + }, + rules: { + 'vue/multi-word-component-names': 'off', + }, + }, + { + files: ['@xen-orchestra/{web-core,lite,web}/typed-router.d.ts'], + parserOptions: { + sourceType: 'module', + }, + rules: { + 'eslint-comments/disable-enable-pair': 'off', + 'eslint-comments/no-unlimited-disable': 'off', + }, + }, ], parserOptions: { diff --git a/@xen-orchestra/web/package.json b/@xen-orchestra/web/package.json index bb03f8fed..5dee7228d 100644 --- a/@xen-orchestra/web/package.json +++ b/@xen-orchestra/web/package.json @@ -18,6 +18,7 @@ "npm-run-all2": "^6.1.1", "pinia": "^2.1.7", "typescript": "~5.3.3", + "unplugin-vue-router": "^0.7.0", "vite": "^5.0.11", "vue": "^3.4.13", "vue-tsc": "^1.8.27" diff --git a/@xen-orchestra/web/src/App.vue b/@xen-orchestra/web/src/App.vue index 14348ab90..7c2aa3f3e 100644 --- a/@xen-orchestra/web/src/App.vue +++ b/@xen-orchestra/web/src/App.vue @@ -1,3 +1,3 @@ diff --git a/@xen-orchestra/web/src/main.ts b/@xen-orchestra/web/src/main.ts index a948886ee..6935b3640 100644 --- a/@xen-orchestra/web/src/main.ts +++ b/@xen-orchestra/web/src/main.ts @@ -1,10 +1,17 @@ import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' +// eslint-disable-next-line import/no-unresolved -- https://github.com/posva/unplugin-vue-router/issues/232 +import { createRouter, createWebHistory } from 'vue-router/auto' import '@xen-orchestra/web-core/assets/css/base.pcss' const app = createApp(App) +const router = createRouter({ + history: createWebHistory(), +}) + app.use(createPinia()) +app.use(router) app.mount('#app') diff --git a/@xen-orchestra/web/src/pages/index.vue b/@xen-orchestra/web/src/pages/index.vue new file mode 100644 index 000000000..4f73dba5f --- /dev/null +++ b/@xen-orchestra/web/src/pages/index.vue @@ -0,0 +1 @@ + diff --git a/@xen-orchestra/web/tsconfig.app.json b/@xen-orchestra/web/tsconfig.app.json index 491e09395..c1e681642 100644 --- a/@xen-orchestra/web/tsconfig.app.json +++ b/@xen-orchestra/web/tsconfig.app.json @@ -1,6 +1,6 @@ { "extends": "@vue/tsconfig/tsconfig.dom.json", - "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "include": ["env.d.ts", "typed-router.d.ts", "src/**/*", "src/**/*.vue"], "exclude": ["src/**/__tests__/*"], "compilerOptions": { "composite": true, diff --git a/@xen-orchestra/web/typed-router.d.ts b/@xen-orchestra/web/typed-router.d.ts new file mode 100644 index 000000000..d3d18a33e --- /dev/null +++ b/@xen-orchestra/web/typed-router.d.ts @@ -0,0 +1,144 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-router. ‼️ DO NOT MODIFY THIS FILE ‼️ +// It's recommended to commit this file. +// Make sure to add this file to your tsconfig.json file as an "includes" or "files" entry. + +/// + +import type { + // type safe route locations + RouteLocationTypedList, + RouteLocationResolvedTypedList, + RouteLocationNormalizedTypedList, + RouteLocationNormalizedLoadedTypedList, + RouteLocationAsString, + RouteLocationAsRelativeTypedList, + RouteLocationAsPathTypedList, + + // helper types + // route definitions + RouteRecordInfo, + ParamValue, + ParamValueOneOrMore, + ParamValueZeroOrMore, + ParamValueZeroOrOne, + + // vue-router extensions + _RouterTyped, + RouterLinkTyped, + RouterLinkPropsTyped, + NavigationGuard, + UseLinkFnTyped, + + // data fetching + _DataLoader, + _DefineLoaderOptions, +} from 'unplugin-vue-router/types' + +declare module 'vue-router/auto/routes' { + export interface RouteNamedMap { + '/': RouteRecordInfo<'/', '/', Record, Record> + } +} + +declare module 'vue-router/auto' { + import type { RouteNamedMap } from 'vue-router/auto/routes' + + export type RouterTyped = _RouterTyped + + /** + * Type safe version of `RouteLocationNormalized` (the type of `to` and `from` in navigation guards). + * Allows passing the name of the route to be passed as a generic. + */ + export type RouteLocationNormalized = + RouteLocationNormalizedTypedList[Name] + + /** + * Type safe version of `RouteLocationNormalizedLoaded` (the return type of `useRoute()`). + * Allows passing the name of the route to be passed as a generic. + */ + export type RouteLocationNormalizedLoaded = + RouteLocationNormalizedLoadedTypedList[Name] + + /** + * Type safe version of `RouteLocationResolved` (the returned route of `router.resolve()`). + * Allows passing the name of the route to be passed as a generic. + */ + export type RouteLocationResolved = + RouteLocationResolvedTypedList[Name] + + /** + * Type safe version of `RouteLocation` . Allows passing the name of the route to be passed as a generic. + */ + export type RouteLocation = + RouteLocationTypedList[Name] + + /** + * Type safe version of `RouteLocationRaw` . Allows passing the name of the route to be passed as a generic. + */ + export type RouteLocationRaw = + | RouteLocationAsString + | RouteLocationAsRelativeTypedList[Name] + | RouteLocationAsPathTypedList[Name] + + /** + * Generate a type safe params for a route location. Requires the name of the route to be passed as a generic. + */ + export type RouteParams = RouteNamedMap[Name]['params'] + /** + * Generate a type safe raw params for a route location. Requires the name of the route to be passed as a generic. + */ + export type RouteParamsRaw = RouteNamedMap[Name]['paramsRaw'] + + export function useRouter(): RouterTyped + export function useRoute( + name?: Name + ): RouteLocationNormalizedLoadedTypedList[Name] + + export const useLink: UseLinkFnTyped + + export function onBeforeRouteLeave(guard: NavigationGuard): void + export function onBeforeRouteUpdate(guard: NavigationGuard): void + + export const RouterLink: RouterLinkTyped + export const RouterLinkProps: RouterLinkPropsTyped + + // Experimental Data Fetching + + export function defineLoader< + P extends Promise, + Name extends keyof RouteNamedMap = keyof RouteNamedMap, + isLazy extends boolean = false + >( + name: Name, + loader: (route: RouteLocationNormalizedLoaded) => P, + options?: _DefineLoaderOptions + ): _DataLoader, isLazy> + export function defineLoader

, isLazy extends boolean = false>( + loader: (route: RouteLocationNormalizedLoaded) => P, + options?: _DefineLoaderOptions + ): _DataLoader, isLazy> + + export { + _definePage as definePage, + _HasDataLoaderMeta as HasDataLoaderMeta, + _setupDataFetchingGuard as setupDataFetchingGuard, + _stopDataFetchingScope as stopDataFetchingScope, + } from 'unplugin-vue-router/runtime' +} + +declare module 'vue-router' { + import type { RouteNamedMap } from 'vue-router/auto/routes' + + export interface TypesConfig { + beforeRouteUpdate: NavigationGuard + beforeRouteLeave: NavigationGuard + + $route: RouteLocationNormalizedLoadedTypedList[keyof RouteNamedMap] + $router: _RouterTyped + + RouterLink: RouterLinkTyped + } +} diff --git a/@xen-orchestra/web/vite.config.ts b/@xen-orchestra/web/vite.config.ts index b8de208df..a25cd4c9a 100644 --- a/@xen-orchestra/web/vite.config.ts +++ b/@xen-orchestra/web/vite.config.ts @@ -2,10 +2,11 @@ import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' +import vueRouter from 'unplugin-vue-router/vite' // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], + plugins: [vueRouter(), vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), diff --git a/yarn.lock b/yarn.lock index 18015bec4..866238d81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -918,7 +918,7 @@ regenerator-runtime "^0.14.0" v8flags "^3.1.1" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.5", "@babel/parser@^7.23.6", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.7", "@babel/parser@^7.23.5", "@babel/parser@^7.23.6", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== @@ -1783,7 +1783,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.9.6": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.5", "@babel/types@^7.23.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.9.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== @@ -2686,7 +2686,7 @@ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.5.tgz#a6d70ef7a0e71e083ea09b967df0a0ed742bc6ad" integrity sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg== -"@rollup/pluginutils@^5.0.2": +"@rollup/pluginutils@^5.0.2", "@rollup/pluginutils@^5.0.4", "@rollup/pluginutils@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== @@ -3922,6 +3922,18 @@ "@volar/language-core" "1.11.1" path-browserify "^1.0.1" +"@vue-macros/common@^1.8.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@vue-macros/common/-/common-1.10.0.tgz#585615f25415f78862ee1b85bc06860e1c1eb4d7" + integrity sha512-4DZsPeQA/nBQDw2RkYAmH7KrFjJVrMdAhJhO1JCl1bbbFXCGeoGjXfkg9wHPppj47s2HpAB3GrqNwqVGbi12NQ== + dependencies: + "@babel/types" "^7.23.5" + "@rollup/pluginutils" "^5.1.0" + "@vue/compiler-sfc" "^3.3.10" + ast-kit "^0.11.3" + local-pkg "^0.5.0" + magic-string-ast "^0.3.0" + "@vue/babel-helper-vue-jsx-merge-props@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" @@ -4057,18 +4069,55 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" camelcase "^5.0.0" -"@vue/compiler-core@3.4.15": - version "3.4.15" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.15.tgz#be20d1bbe19626052500b48969302cb6f396d36e" - integrity sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw== +"@vue/compiler-core@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.11.tgz#9fa26f8c81b9b34365f94ce1ed4d0e6e6f94a2ac" + integrity sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w== + dependencies: + "@babel/parser" "^7.23.5" + "@vue/shared" "3.3.11" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-core@3.4.13": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.13.tgz#49f499034c25b0832845028ea3cd701fe5a17367" + integrity sha512-zGUdmB3j3Irn9z51GXLJ5s0EAHxmsm5/eXl0y6MBaajMeOAaiT4+zaDoxui4Ets98dwIRr8BBaqXXHtHSfm+KA== dependencies: "@babel/parser" "^7.23.6" - "@vue/shared" "3.4.15" + "@vue/shared" "3.4.13" entities "^4.5.0" estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-dom@3.4.15", "@vue/compiler-dom@^3.3.0": +"@vue/compiler-core@3.4.14": + version "3.4.14" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.14.tgz#c3efdf3be8b0c4bf30830063d505c8c7945b6f0d" + integrity sha512-ro4Zzl/MPdWs7XwxT7omHRxAjMbDFRZEEjD+2m3NBf8YzAe3HuoSEZosXQo+m1GQ1G3LQ1LdmNh1RKTYe+ssEg== + dependencies: + "@babel/parser" "^7.23.6" + "@vue/shared" "3.4.14" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.4.13": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.13.tgz#66a80a6ee412a3d32b7175a146b75d9ec3d1c50c" + integrity sha512-XSNbpr5Rs3kCfVAmBqMu/HDwOS+RL6y28ZZjDlnDUuf146pRWt2sQkwhsOYc9uu2lxjjJy2NcyOkK7MBLVEc7w== + dependencies: + "@vue/compiler-core" "3.4.13" + "@vue/shared" "3.4.13" + +"@vue/compiler-dom@3.4.14": + version "3.4.14" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.14.tgz#ba7269996ef12a3b9293083ac109b52d14c9ccb5" + integrity sha512-nOZTY+veWNa0DKAceNWxorAbWm0INHdQq7cejFaWM1WYnoNSJbSEKYtE7Ir6lR/+mo9fttZpPVI9ZFGJ1juUEQ== + dependencies: + "@vue/compiler-core" "3.4.14" + "@vue/shared" "3.4.14" + +"@vue/compiler-dom@3.4.15": version "3.4.15" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz#753f5ed55f78d33dff04701fad4d76ff0cf81ee5" integrity sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ== @@ -4076,6 +4125,14 @@ "@vue/compiler-core" "3.4.15" "@vue/shared" "3.4.15" +"@vue/compiler-dom@^3.3.0": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz#36a76ea3a296d41bad133a6912cb0a847d969e4f" + integrity sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw== + dependencies: + "@vue/compiler-core" "3.3.11" + "@vue/shared" "3.3.11" + "@vue/compiler-sfc@2.7.16": version "2.7.16" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz#ff81711a0fac9c68683d8bb00b63f857de77dc83" @@ -4087,7 +4144,7 @@ optionalDependencies: prettier "^1.18.2 || ^2.0.0" -"@vue/compiler-sfc@3.4.15", "@vue/compiler-sfc@^3.2.47", "@vue/compiler-sfc@^3.4.15": +"@vue/compiler-sfc@3.4.15", "@vue/compiler-sfc@^3.4.15": version "3.4.15" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz#4e5811e681955fcec886cebbec483f6ae463a64b" integrity sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA== @@ -4102,6 +4159,37 @@ postcss "^8.4.33" source-map-js "^1.0.2" +"@vue/compiler-sfc@^3.2.47", "@vue/compiler-sfc@^3.3.10": + version "3.4.14" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.14.tgz#d472b9be05f0f958911a8aad0826a12d92fdb82f" + integrity sha512-1vHc9Kv1jV+YBZC/RJxQJ9JCxildTI+qrhtDh6tPkR1O8S+olBUekimY0km0ZNn8nG1wjtFAe9XHij+YLR8cRQ== + dependencies: + "@babel/parser" "^7.23.6" + "@vue/compiler-core" "3.4.14" + "@vue/compiler-dom" "3.4.14" + "@vue/compiler-ssr" "3.4.14" + "@vue/shared" "3.4.14" + estree-walker "^2.0.2" + magic-string "^0.30.5" + postcss "^8.4.33" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.4.13": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.13.tgz#90fa9a4116f7974d7a4e43a8a67f3fc162e8720f" + integrity sha512-rwnw9SVBgD6eGKh8UucnwztieQo/R3RQrEGpE0b0cxb2xxvJeLs/fe7DoYlhEfaSyzM/qD5odkK87hl3G3oW+A== + dependencies: + "@vue/compiler-dom" "3.4.13" + "@vue/shared" "3.4.13" + +"@vue/compiler-ssr@3.4.14": + version "3.4.14" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.14.tgz#7de5a04267e036d18ad33768a78a780cab570305" + integrity sha512-bXT6+oAGlFjTYVOTtFJ4l4Jab1wjsC0cfSfOe2B4Z0N2vD2zOBSQ9w694RsCfhjk+bC2DY5Gubb1rHZVii107Q== + dependencies: + "@vue/compiler-dom" "3.4.14" + "@vue/shared" "3.4.14" + "@vue/compiler-ssr@3.4.15": version "3.4.15" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz#a910a5b89ba4f0a776e40b63d69bdae2f50616cf" @@ -4195,6 +4283,21 @@ "@vue/compiler-ssr" "3.4.15" "@vue/shared" "3.4.15" +"@vue/shared@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.11.tgz#f6a038e15237edefcc90dbfe7edb806dd355c7bd" + integrity sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw== + +"@vue/shared@3.4.13": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.13.tgz#a1eefce5ddffe207d53eafbc07f4ebbea0a4768a" + integrity sha512-56crFKLPpzk85WXX1L1c0QzPOuoapWlPVys8eMG8kkRmqdMjWUqK8KpFdE2d7BQA4CEbXwyyHPq6MpFr8H9rcg== + +"@vue/shared@3.4.14": + version "3.4.14" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.14.tgz#bc2d199a42a87f0349492fdfb83abc205ddd4d60" + integrity sha512-nmi3BtLpvqXAWoRZ6HQ+pFJOHBU4UnH3vD3opgmwXac7vhaHKA9nj1VeGjMggdB9eLtW83eHyPCmOU1qzdsC7Q== + "@vue/shared@3.4.15", "@vue/shared@^3.3.0": version "3.4.15" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.15.tgz#e7d2ea050c667480cb5e1a6df2ac13bcd03a8f30" @@ -5502,6 +5605,24 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +ast-kit@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/ast-kit/-/ast-kit-0.11.3.tgz#47d420dbdd23b4900531e05285e89f0301d2c41f" + integrity sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA== + dependencies: + "@babel/parser" "^7.23.5" + "@rollup/pluginutils" "^5.1.0" + pathe "^1.1.1" + +ast-kit@^0.9.4: + version "0.9.5" + resolved "https://registry.yarnpkg.com/ast-kit/-/ast-kit-0.9.5.tgz#88c0ba76b6f7f24c04ccf9ae778e33afc187dc80" + integrity sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg== + dependencies: + "@babel/parser" "^7.22.7" + "@rollup/pluginutils" "^5.0.2" + pathe "^1.1.1" + ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -5509,6 +5630,14 @@ ast-types@^0.13.4: dependencies: tslib "^2.0.1" +ast-walker-scope@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/ast-walker-scope/-/ast-walker-scope-0.5.0.tgz#87e0ca4f34394d11ec4dea5925b8bda80b811819" + integrity sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q== + dependencies: + "@babel/parser" "^7.22.7" + ast-kit "^0.9.4" + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -14270,6 +14399,19 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +local-pkg@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" + integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== + +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -14638,7 +14780,14 @@ ltx@^3.0.0: resolved "https://registry.yarnpkg.com/ltx/-/ltx-3.0.0.tgz#f2a2260814165c5e28d455f9f7db2178ed295187" integrity sha512-bu3/4/ApUmMqVNuIkHaRhqVtEi6didYcBDIF56xhPRCzVpdztCipZ62CUuaxMlMBUzaVL93+4LZRqe02fuAG6A== -magic-string@^0.30.0, magic-string@^0.30.5: +magic-string-ast@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/magic-string-ast/-/magic-string-ast-0.3.0.tgz#8fc83ac6d084c5a342645a30354184a6e0ab4382" + integrity sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA== + dependencies: + magic-string "^0.30.2" + +magic-string@^0.30.0, magic-string@^0.30.2, magic-string@^0.30.5: version "0.30.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== @@ -15146,7 +15295,7 @@ mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mlly@^1.2.0: +mlly@^1.2.0, mlly@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" integrity sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ== @@ -16623,7 +16772,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.0.0, pathe@^1.1.0, pathe@^1.1.2: +pathe@^1.0.0, pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== @@ -19038,6 +19187,11 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" +scule@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/scule/-/scule-1.2.0.tgz#b46d444d6a8c92e73eb80d2d8d00b94ab065cc3e" + integrity sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw== + section-matter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" @@ -21149,7 +21303,26 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unplugin@^1.1.0: +unplugin-vue-router@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/unplugin-vue-router/-/unplugin-vue-router-0.7.0.tgz#27bd250c7dc698366cce70c5b72b97c3b3766c26" + integrity sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw== + dependencies: + "@babel/types" "^7.22.19" + "@rollup/pluginutils" "^5.0.4" + "@vue-macros/common" "^1.8.0" + ast-walker-scope "^0.5.0" + chokidar "^3.5.3" + fast-glob "^3.3.1" + json5 "^2.2.3" + local-pkg "^0.4.3" + mlly "^1.4.2" + pathe "^1.1.1" + scule "^1.0.0" + unplugin "^1.5.0" + yaml "^2.3.2" + +unplugin@^1.1.0, unplugin@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.6.0.tgz#0bd7c344182c73e685c864f4f7161531f024b942" integrity sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ== @@ -22316,7 +22489,7 @@ yaml-eslint-parser@^1.2.2: lodash "^4.17.21" yaml "^2.0.0" -yaml@2.3.4, yaml@^2.0.0, yaml@^2.2.2: +yaml@2.3.4, yaml@^2.0.0, yaml@^2.2.2, yaml@^2.3.2: version "2.3.4" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==