diff --git a/demos/vue3/README.md b/demos/vue3/README.md new file mode 100644 index 00000000..11195890 --- /dev/null +++ b/demos/vue3/README.md @@ -0,0 +1,7 @@ +# vue3 demo + +## 运行 +``` +pnpm i +pnpm dev +``` \ No newline at end of file diff --git a/demos/vue3/package.json b/demos/vue3/package.json new file mode 100644 index 00000000..47ee1ee2 --- /dev/null +++ b/demos/vue3/package.json @@ -0,0 +1,12 @@ +{ + "name": "vue3-demo", + "ignored": true, + "version": "0.0.1", + "scripts": { + "dev": "pnpm --filter vue3-* --parallel dev", + "build": "pnpm --filter vue3-* --parallel build", + "serve": "pnpm --filter vue3-* --parallel serve", + "stat": "pnpm --filter vue3-* --parallel stat" + } + } + \ No newline at end of file diff --git a/demos/vue3/vue-3-base/emp.config.ts b/demos/vue3/vue-3-base/emp.config.ts new file mode 100644 index 00000000..7ccf5195 --- /dev/null +++ b/demos/vue3/vue-3-base/emp.config.ts @@ -0,0 +1,41 @@ +import {defineConfig} from '@empjs/cli' +import lightningcss from '@empjs/plugin-lightningcss' +import Vue3 from '@empjs/plugin-vue3' +import {pluginRspackEmpShare} from '@empjs/share' +export default defineConfig(() => { + return { + plugins: [ + Vue3(), + lightningcss(), + pluginRspackEmpShare({ + name: 'vue3Base', + // dts: { + // consumeTypes: true, + // generateTypes: { + // compilerInstance: 'vue-tsc', + // }, + // }, + shared: { + vue: { + requiredVersion: '^3', + }, + }, + exposes: { + './ButtonComponent': './src/components/ButtonComponent', + './TableComponent': './src/components/TableComponent', + './JSXComponent': './src/components/JSXComponent', + './TsxScript': './src/components/TsxScript', + './Antd': './src/Antd', + './Home': './src/Home', + }, + }), + ], + appEntry: 'main.ts', + server: {port: 9301, open: false}, + html: {title: 'EMP Vue3 Base'}, + debug: { + clearLog: false, + showRsconfig: false, + }, + } +}) diff --git a/demos/vue3/vue-3-base/package.json b/demos/vue3/vue-3-base/package.json new file mode 100644 index 00000000..f5edf31e --- /dev/null +++ b/demos/vue3/vue-3-base/package.json @@ -0,0 +1,26 @@ +{ + "name": "vue3-base", + "version": "1.0.0", + "description": "", + "main": "index.js", + "type": "module", + "devDependencies": { + "@empjs/cli": "3.2.7", + "@empjs/plugin-vue3": "3.2.0" + }, + "dependencies": { + "@empjs/plugin-lightningcss": "3.2.2", + "@empjs/share": "3.2.0", + "ant-design-vue": "^4.1.2", + "vue": "^3.4.20" + }, + "scripts": { + "dev": "emp dev", + "build": "emp build", + "start": "emp serve", + "stat": "emp build --analyze", + "emp": "emp" + }, + "author": "", + "license": "ISC" +} diff --git a/demos/vue3/vue-3-base/src/Antd.ts b/demos/vue3/vue-3-base/src/Antd.ts new file mode 100644 index 00000000..2047b19e --- /dev/null +++ b/demos/vue3/vue-3-base/src/Antd.ts @@ -0,0 +1,2 @@ +import Antd from 'ant-design-vue' +export default Antd diff --git a/demos/vue3/vue-3-base/src/App.vue b/demos/vue3/vue-3-base/src/App.vue new file mode 100644 index 00000000..844d9704 --- /dev/null +++ b/demos/vue3/vue-3-base/src/App.vue @@ -0,0 +1,41 @@ + + + + + + + diff --git a/demos/vue3/vue-3-base/src/Home.vue b/demos/vue3/vue-3-base/src/Home.vue new file mode 100644 index 00000000..7ccc5506 --- /dev/null +++ b/demos/vue3/vue-3-base/src/Home.vue @@ -0,0 +1,6 @@ + + diff --git a/demos/vue3/vue-3-base/src/bootstrap.ts b/demos/vue3/vue-3-base/src/bootstrap.ts new file mode 100644 index 00000000..afbb274b --- /dev/null +++ b/demos/vue3/vue-3-base/src/bootstrap.ts @@ -0,0 +1,6 @@ +import Antd from 'ant-design-vue' +import {createApp} from 'vue' +import App from './App.vue' +const app = createApp(App) +app.use(Antd) +app.mount('#emp-root') diff --git a/demos/vue3/vue-3-base/src/components/ButtonComponent.vue b/demos/vue3/vue-3-base/src/components/ButtonComponent.vue new file mode 100644 index 00000000..8ef08176 --- /dev/null +++ b/demos/vue3/vue-3-base/src/components/ButtonComponent.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/demos/vue3/vue-3-base/src/components/Count.vue b/demos/vue3/vue-3-base/src/components/Count.vue new file mode 100644 index 00000000..0bdd83f9 --- /dev/null +++ b/demos/vue3/vue-3-base/src/components/Count.vue @@ -0,0 +1,54 @@ + + + diff --git a/demos/vue3/vue-3-base/src/components/JSXComponent.tsx b/demos/vue3/vue-3-base/src/components/JSXComponent.tsx new file mode 100644 index 00000000..5dbe1cf0 --- /dev/null +++ b/demos/vue3/vue-3-base/src/components/JSXComponent.tsx @@ -0,0 +1,22 @@ +import {Button} from 'ant-design-vue' +import {defineComponent, ref} from 'vue' +import styles from './index.module.less' + +export default defineComponent({ + name: 'JSXComponent', + setup() { + const value = ref(0) + function add() { + value.value++ + } + + return () => ( +
+

============ jsx component start =============

+ + value:{value.value} +

============ jsx component end =============

+
+ ) + }, +}) diff --git a/demos/vue3/vue-3-base/src/components/TableComponent.vue b/demos/vue3/vue-3-base/src/components/TableComponent.vue new file mode 100644 index 00000000..16a6cd94 --- /dev/null +++ b/demos/vue3/vue-3-base/src/components/TableComponent.vue @@ -0,0 +1,45 @@ + + + + + + + diff --git a/demos/vue3/vue-3-base/src/components/TsxScript.vue b/demos/vue3/vue-3-base/src/components/TsxScript.vue new file mode 100644 index 00000000..ac2f8bdb --- /dev/null +++ b/demos/vue3/vue-3-base/src/components/TsxScript.vue @@ -0,0 +1,37 @@ + + + \ No newline at end of file diff --git a/demos/vue3/vue-3-base/src/components/index.module.less b/demos/vue3/vue-3-base/src/components/index.module.less new file mode 100644 index 00000000..c62ed0f4 --- /dev/null +++ b/demos/vue3/vue-3-base/src/components/index.module.less @@ -0,0 +1,3 @@ +.space { + margin-left: 10px; +} \ No newline at end of file diff --git a/demos/vue3/vue-3-base/src/logo.svg b/demos/vue3/vue-3-base/src/logo.svg new file mode 100644 index 00000000..4f6f3a33 --- /dev/null +++ b/demos/vue3/vue-3-base/src/logo.svg @@ -0,0 +1,8 @@ + + + + diff --git a/demos/vue3/vue-3-base/src/main.ts b/demos/vue3/vue-3-base/src/main.ts new file mode 100644 index 00000000..fd65f60c --- /dev/null +++ b/demos/vue3/vue-3-base/src/main.ts @@ -0,0 +1 @@ +import('./bootstrap') diff --git a/demos/vue3/vue-3-base/src/shims-vue.d.ts b/demos/vue3/vue-3-base/src/shims-vue.d.ts new file mode 100644 index 00000000..806ec5b9 --- /dev/null +++ b/demos/vue3/vue-3-base/src/shims-vue.d.ts @@ -0,0 +1,19 @@ +declare module '*.vue' { + import type {DefineComponent} from 'vue' + const component: DefineComponent, Record, unknown> + export default component +} + +declare module '*.svg' { + import type Vue from 'vue' + import type {VueConstructor} from 'vue' + const content: VueConstructor + export default content +} + +declare module '*.less' { + const classes: {readonly [key: string]: string} + export default classes +} + +declare module 'ATable' diff --git a/demos/vue3/vue-3-base/tsconfig.json b/demos/vue3/vue-3-base/tsconfig.json new file mode 100644 index 00000000..883bbb57 --- /dev/null +++ b/demos/vue3/vue-3-base/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@empjs/cli/emp-tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "allowJs": true + }, + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/demos/vue3/vue-3-project/emp-config.js b/demos/vue3/vue-3-project/emp-config.js new file mode 100644 index 00000000..066a705c --- /dev/null +++ b/demos/vue3/vue-3-project/emp-config.js @@ -0,0 +1,34 @@ +import {defineConfig} from '@empjs/cli' +import Vue3 from '@empjs/plugin-vue3' +import {pluginRspackEmpShare} from '@empjs/share' +// cf vue3 +const deploy = process.env.DEPLOY +const isCf = deploy === 'cloudflare' +// +export default defineConfig(store => { + const ip = store.getLanIp() + const vue3Base = isCf ? 'https://mf-vue3.sc.empjs.dev/host/emp.js' : `http://${ip}:9301/emp.js` + return { + plugins: [ + Vue3(), + pluginRspackEmpShare({ + name: 'vue3Project', + shared: { + vue: { + requiredVersion: '^3', + }, + }, + remotes: { + '@v3': `vue3Base@${vue3Base}`, + }, + }), + ], + appEntry: 'main.ts', + server: {port: 9302}, + html: {title: 'EMP Vue3 Projects'}, + debug: { + clearLog: false, + showRsconfig: false, + }, + } +}) diff --git a/demos/vue3/vue-3-project/package.json b/demos/vue3/vue-3-project/package.json new file mode 100644 index 00000000..49df385a --- /dev/null +++ b/demos/vue3/vue-3-project/package.json @@ -0,0 +1,26 @@ +{ + "name": "vue3-project", + "version": "1.0.0", + "description": "", + "main": "index.js", + "type": "module", + "devDependencies": { + "@empjs/cli": "3.2.7", + "@empjs/plugin-vue3": "3.2.0" + }, + "dependencies": { + "@empjs/share": "3.2.0", + "ant-design-vue": "^4.1.2", + "vue": "^3.4.20", + "vue-router": "4" + }, + "scripts": { + "dev": "emp dev", + "build": "emp build", + "start": "emp serve", + "stat": "emp build --analyze", + "emp": "emp" + }, + "author": "", + "license": "ISC" +} diff --git a/demos/vue3/vue-3-project/src/App.vue b/demos/vue3/vue-3-project/src/App.vue new file mode 100644 index 00000000..530fb4b0 --- /dev/null +++ b/demos/vue3/vue-3-project/src/App.vue @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/demos/vue3/vue-3-project/src/Home.vue b/demos/vue3/vue-3-project/src/Home.vue new file mode 100644 index 00000000..36d51658 --- /dev/null +++ b/demos/vue3/vue-3-project/src/Home.vue @@ -0,0 +1,32 @@ + + + + + + + diff --git a/demos/vue3/vue-3-project/src/bootstrap.ts b/demos/vue3/vue-3-project/src/bootstrap.ts new file mode 100644 index 00000000..479f76ee --- /dev/null +++ b/demos/vue3/vue-3-project/src/bootstrap.ts @@ -0,0 +1,9 @@ +import Antd from '@v3/Antd' +import {createApp} from 'vue' +import App from './App.vue' +import {router} from './router' +console.log('Antd', Antd) +const app = createApp(App) +app.use(Antd) +app.use(router) +app.mount('#emp-root') diff --git a/demos/vue3/vue-3-project/src/main.ts b/demos/vue3/vue-3-project/src/main.ts new file mode 100644 index 00000000..fd65f60c --- /dev/null +++ b/demos/vue3/vue-3-project/src/main.ts @@ -0,0 +1 @@ +import('./bootstrap') diff --git a/demos/vue3/vue-3-project/src/router.ts b/demos/vue3/vue-3-project/src/router.ts new file mode 100644 index 00000000..ef914935 --- /dev/null +++ b/demos/vue3/vue-3-project/src/router.ts @@ -0,0 +1,11 @@ +import {createRouter, createWebHashHistory} from 'vue-router' + +const routes = [ + {path: '/', name: 'home', component: () => import('./Home.vue')}, + {path: '/hostHome', name: 'hostHome', component: () => import('@v3/Home')}, +] + +export const router = createRouter({ + history: createWebHashHistory(), + routes, +}) diff --git a/demos/vue3/vue-3-project/src/shims-vue.d.ts b/demos/vue3/vue-3-project/src/shims-vue.d.ts new file mode 100644 index 00000000..c2b902ff --- /dev/null +++ b/demos/vue3/vue-3-project/src/shims-vue.d.ts @@ -0,0 +1,7 @@ +declare module '*.vue' { + import type {DefineComponent} from 'vue' + const component: DefineComponent, Record, unknown> + export default component +} + +declare module '@v3/*' diff --git a/demos/vue3/vue-3-project/tsconfig.json b/demos/vue3/vue-3-project/tsconfig.json new file mode 100644 index 00000000..883bbb57 --- /dev/null +++ b/demos/vue3/vue-3-project/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@empjs/cli/emp-tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "allowJs": true + }, + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a61bdf5..a3a73cbb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -224,6 +224,50 @@ importers: specifier: 3.2.0 version: 3.2.0(@babel/core@7.24.0)(css-loader@7.1.2)(react-dom@18.2.0)(react@18.2.0)(webpack@5.90.3) + demos/vue3/vue-3-base: + dependencies: + '@empjs/plugin-lightningcss': + specifier: 3.2.2 + version: 3.2.2 + '@empjs/share': + specifier: 3.2.0 + version: 3.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.90.3) + ant-design-vue: + specifier: ^4.1.2 + version: 4.2.3(vue@3.4.31) + vue: + specifier: ^3.4.20 + version: 3.4.31(typescript@5.3.3) + devDependencies: + '@empjs/cli': + specifier: 3.2.7 + version: 3.2.7(less@4.2.0)(ts-node@10.9.1)(typescript@5.3.3)(webpack@5.90.3) + '@empjs/plugin-vue3': + specifier: 3.2.0 + version: 3.2.0(@babel/core@7.24.0)(typescript@5.3.3)(vue-template-compiler@2.7.16)(webpack@5.90.3) + + demos/vue3/vue-3-project: + dependencies: + '@empjs/share': + specifier: 3.2.0 + version: 3.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.90.3) + ant-design-vue: + specifier: ^4.1.2 + version: 4.2.3(vue@3.4.31) + vue: + specifier: ^3.4.20 + version: 3.4.31(typescript@5.3.3) + vue-router: + specifier: '4' + version: 4.4.5(vue@3.4.31) + devDependencies: + '@empjs/cli': + specifier: 3.2.7 + version: 3.2.7(less@4.2.0)(ts-node@10.9.1)(typescript@5.3.3)(webpack@5.90.3) + '@empjs/plugin-vue3': + specifier: 3.2.0 + version: 3.2.0(@babel/core@7.24.0)(typescript@5.3.3)(vue-template-compiler@2.7.16)(webpack@5.90.3) + projects/emp-runtime-react-16-app: dependencies: '@empjs/plugin-emp-runtime': @@ -2454,6 +2498,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@empjs/plugin-lightningcss@3.2.2: + resolution: {integrity: sha512-gm2ZJoq/cOgkHQ1jZ7ZL2mMLGfG1hPILG/MHTHXX8Il+EU+qgnHFqX2mMkf6Z6HgbwYJL3KbB3SY4TXqRwUALA==} + engines: {node: '>=16.0.0'} + dependencies: + browserslist: 4.23.2 + lightningcss: 1.27.0 + dev: false + /@empjs/plugin-react@3.0.0(typescript@5.3.3): resolution: {integrity: sha512-fTWazGyUMuT9AMWjnQmiLkr2Vf7uRbpLJzpDezzPU51+Ka/8JfG7QAIk7kxTQG9OaZsSKSIDFwSZXr9aE6qMTQ==} engines: {node: '>=16.0.0'} @@ -2643,6 +2695,25 @@ packages: - webpack dev: true + /@empjs/plugin-vue3@3.2.0(@babel/core@7.24.0)(typescript@5.3.3)(vue-template-compiler@2.7.16)(webpack@5.90.3): + resolution: {integrity: sha512-u7FY6MPRZvUOD5NFQ+AeLpp2CbhEX4rbbtUeM/Vj4nMtlizAHdA2RoS5J8IrT92chg2kR7RDvy3o7A5DjXUv+w==} + engines: {node: '>=16.0.0'} + dependencies: + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.0) + '@empjs/vue-loader': 17.4.5(vue@3.4.31)(webpack@5.90.3) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.0) + babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3) + vue: 3.4.31(typescript@5.3.3) + vue-svg-loader: 0.16.0(vue-template-compiler@2.7.16) + transitivePeerDependencies: + - '@babel/core' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vue-template-compiler + - webpack + dev: true + /@empjs/share@3.2.0(react-dom@16.14.0)(react@16.14.0)(typescript@5.3.3)(webpack@5.90.3): resolution: {integrity: sha512-hlWaADnuvHFvnJ+hVK/wgC5R6j19lafoiIPy4pGFaAwbMxZYh49lT9foxN+iJdK8K4uuW03JWI6CH5RrNKm42g==} engines: {node: '>=16.0.0'} @@ -2703,6 +2774,24 @@ packages: - webpack dev: false + /@empjs/vue-loader@17.4.5(vue@3.4.31)(webpack@5.90.3): + resolution: {integrity: sha512-tk0HoaXv2+i8bVlCanaSqaHlH10xIQPlMHBGPZI9wBoyVmxMXAdYIVRjWLLkk0r/WJAEIf4jwkJbf7WKsShvSA==} + peerDependencies: + '@vue/compiler-sfc': '*' + vue: '*' + webpack: ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + vue: + optional: true + dependencies: + chalk: 4.1.2 + vue: 3.4.31(typescript@5.3.3) + watchpack: 2.4.1 + webpack: 5.90.3(webpack-cli@4.10.0) + dev: true + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -4923,6 +5012,10 @@ packages: - whiskers dev: true + /@vue/devtools-api@6.6.4: + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + dev: false + /@vue/reactivity@3.4.31: resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} dependencies: @@ -5262,7 +5355,7 @@ packages: array-tree-filter: 2.1.0 async-validator: 4.2.5 csstype: 3.1.3 - dayjs: 1.11.11 + dayjs: 1.11.13 dom-align: 1.12.4 dom-scroll-into-view: 2.0.1 lodash: 4.17.21 @@ -6507,13 +6600,8 @@ packages: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} - /dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - dev: false - /dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - dev: true /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -6672,6 +6760,12 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -8703,6 +8797,114 @@ packages: source-map: 0.6.1 dev: true + /lightningcss-darwin-arm64@1.27.0: + resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /lightningcss-darwin-x64@1.27.0: + resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /lightningcss-freebsd-x64@1.27.0: + resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-arm-gnueabihf@1.27.0: + resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-arm64-gnu@1.27.0: + resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-arm64-musl@1.27.0: + resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-x64-gnu@1.27.0: + resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /lightningcss-linux-x64-musl@1.27.0: + resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /lightningcss-win32-arm64-msvc@1.27.0: + resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /lightningcss-win32-x64-msvc@1.27.0: + resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /lightningcss@1.27.0: + resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.27.0 + lightningcss-darwin-x64: 1.27.0 + lightningcss-freebsd-x64: 1.27.0 + lightningcss-linux-arm-gnueabihf: 1.27.0 + lightningcss-linux-arm64-gnu: 1.27.0 + lightningcss-linux-arm64-musl: 1.27.0 + lightningcss-linux-x64-gnu: 1.27.0 + lightningcss-linux-x64-musl: 1.27.0 + lightningcss-win32-arm64-msvc: 1.27.0 + lightningcss-win32-x64-msvc: 1.27.0 + dev: false + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -12302,6 +12504,15 @@ packages: vue: 2.7.16 dev: false + /vue-router@4.4.5(vue@3.4.31): + resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.4.31(typescript@5.3.3) + dev: false + /vue-style-loader@4.1.3: resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} dependencies: