├── .npmrc
├── env.d.ts
├── composables
├── src
│ ├── index.ts
│ └── mouse
│ │ ├── index.ts
│ │ └── useMouse.ts
├── tsconfig.json
├── package.json
└── vite.config.js
├── components
├── src
│ ├── index.ts
│ └── my-btn
│ │ └── MyBtn.vue
├── components.d.ts
├── tsconfig.json
├── package.json
└── vite.config.js
├── apps
├── application1
│ ├── public
│ │ └── favicon.ico
│ ├── .vscode
│ │ └── extensions.json
│ ├── tsconfig.vite-config.json
│ ├── src
│ │ ├── views
│ │ │ ├── HomeView.vue
│ │ │ ├── AboutView.vue
│ │ │ └── HelloWorld.vue
│ │ ├── assets
│ │ │ ├── logo.svg
│ │ │ └── base.css
│ │ ├── components
│ │ │ ├── icons
│ │ │ │ ├── IconSupport.vue
│ │ │ │ ├── IconTooling.vue
│ │ │ │ ├── IconCommunity.vue
│ │ │ │ ├── IconDocumentation.vue
│ │ │ │ └── IconEcosystem.vue
│ │ │ ├── HelloWorld.vue
│ │ │ ├── WelcomeItem.vue
│ │ │ └── TheWelcome.vue
│ │ ├── main.ts
│ │ ├── router
│ │ │ └── index.ts
│ │ └── App.vue
│ ├── .gitignore
│ ├── tsconfig.json
│ ├── index.html
│ ├── vite.config.ts
│ ├── components.d.ts
│ ├── package.json
│ └── README.md
└── application2
│ ├── public
│ └── favicon.ico
│ ├── .vscode
│ └── extensions.json
│ ├── tsconfig.vite-config.json
│ ├── src
│ ├── main.ts
│ ├── assets
│ │ ├── logo.svg
│ │ └── base.css
│ ├── components
│ │ ├── icons
│ │ │ ├── IconSupport.vue
│ │ │ ├── IconTooling.vue
│ │ │ ├── IconCommunity.vue
│ │ │ ├── IconDocumentation.vue
│ │ │ └── IconEcosystem.vue
│ │ └── MyApp2.vue
│ └── App.vue
│ ├── .gitignore
│ ├── tsconfig.json
│ ├── index.html
│ ├── components.d.ts
│ ├── vite.config.ts
│ ├── package.json
│ └── README.md
├── pnpm-workspace.yaml
├── .prettierrc
├── .vscode
├── settings.json
├── extensions.json
└── tasks.json
├── .gitignore
├── package.json
├── .eslintrc.js
├── README.md
└── pnpm-lock.yaml
/.npmrc:
--------------------------------------------------------------------------------
1 | enable-pre-post-scripts=true
--------------------------------------------------------------------------------
/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/composables/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './mouse/';
2 |
--------------------------------------------------------------------------------
/composables/src/mouse/index.ts:
--------------------------------------------------------------------------------
1 | export * from './useMouse';
2 |
--------------------------------------------------------------------------------
/components/src/index.ts:
--------------------------------------------------------------------------------
1 | // Components
2 | export { default as MyBtn } from './my-btn/MyBtn.vue';
3 |
--------------------------------------------------------------------------------
/apps/application1/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ghiscoding/vue3-pnpm-workspace/HEAD/apps/application1/public/favicon.ico
--------------------------------------------------------------------------------
/apps/application2/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ghiscoding/vue3-pnpm-workspace/HEAD/apps/application2/public/favicon.ico
--------------------------------------------------------------------------------
/apps/application1/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["johnsoncodehk.volar", "johnsoncodehk.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/apps/application2/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["johnsoncodehk.volar", "johnsoncodehk.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'apps/application1/**'
3 | - 'apps/application2/**'
4 | - 'components/**'
5 | - 'composables/**'
6 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "semi": true,
4 | "tabWidth": 2,
5 | "proseWrap": "never",
6 | "trailingComma": "es5",
7 | "printWidth": 170,
8 | "bracketSpacing": true
9 | }
10 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.defaultFormatter": "esbenp.prettier-vscode",
3 | "editor.formatOnSave": true,
4 | "editor.formatOnPaste": false,
5 | "typescript.tsdk": "node_modules/typescript/lib"
6 | }
7 |
--------------------------------------------------------------------------------
/apps/application1/tsconfig.vite-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.node.json",
3 | "include": ["vite.config.*"],
4 | "compilerOptions": {
5 | "composite": true,
6 | "types": ["node"]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/apps/application2/tsconfig.vite-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.node.json",
3 | "include": ["vite.config.*"],
4 | "compilerOptions": {
5 | "composite": true,
6 | "types": ["node"]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/apps/application1/src/views/HomeView.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | pnpm-debug.log*
5 |
6 | # misc
7 | node_modules
8 | .DS_Store
9 | dist
10 | dist-ssr
11 | coverage
12 | *.local
13 |
14 | # Editor directories and files
15 | .idea
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.sw?
21 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "antfu.vite",
4 | "dbaeumer.vscode-eslint",
5 | "rvest.vs-code-prettier-eslint",
6 | "Vue.volar",
7 | "andys8.jest-snippets",
8 | "editorconfig.editorconfig",
9 | "esbenp.prettier-vscode"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/apps/application2/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue';
2 | import App from './App.vue';
3 |
4 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
5 | import style from '@monotest/components/dist/style.css';
6 |
7 | const app = createApp(App);
8 |
9 | app.mount('#app');
10 |
--------------------------------------------------------------------------------
/apps/application1/src/views/AboutView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
This is an about page
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/apps/application1/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/application2/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/application1/src/components/icons/IconSupport.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/apps/application2/src/components/icons/IconSupport.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/apps/application1/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue';
2 | import App from './App.vue';
3 | import router from './router';
4 |
5 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
6 | import style from '@monotest/components/dist/style.css';
7 |
8 | const app = createApp(App);
9 |
10 | app.use(router);
11 |
12 | app.mount('#app');
13 |
--------------------------------------------------------------------------------
/apps/application1/.gitignore:
--------------------------------------------------------------------------------
1 | .chrome
2 | .DS_Store
3 | node_modules
4 | /dist
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | pnpm-debug.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.sw?
21 | .env.development
22 |
23 | junit.xml
24 |
25 | coverage
--------------------------------------------------------------------------------
/apps/application2/.gitignore:
--------------------------------------------------------------------------------
1 | .chrome
2 | .DS_Store
3 | node_modules
4 | /dist
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | pnpm-debug.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.sw?
21 | .env.development
22 |
23 | junit.xml
24 |
25 | coverage
--------------------------------------------------------------------------------
/apps/application1/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.web.json",
3 | "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4 | "compilerOptions": {
5 | "baseUrl": ".",
6 | "paths": {
7 | "@/*": ["./src/*"]
8 | },
9 | "types": ["vite/client"]
10 | },
11 |
12 | "references": [
13 | {
14 | "path": "./tsconfig.vite-config.json"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/apps/application2/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.web.json",
3 | "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4 | "compilerOptions": {
5 | "baseUrl": ".",
6 | "paths": {
7 | "@/*": ["./src/*"]
8 | },
9 | "types": ["vite/client"]
10 | },
11 |
12 | "references": [
13 | {
14 | "path": "./tsconfig.vite-config.json"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/apps/application1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/apps/application2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/components/components.d.ts:
--------------------------------------------------------------------------------
1 | // generated by unplugin-vue-components
2 | // We suggest you to commit this file into source control
3 | // Read more: https://github.com/vuejs/vue-next/pull/3399
4 | import '@vue/runtime-core'
5 |
6 | declare module '@vue/runtime-core' {
7 | export interface GlobalComponents {
8 | MyBtnMyBtn: typeof import('./src/my-btn/MyBtn.vue')['default']
9 | RouterLink: typeof import('vue-router')['RouterLink']
10 | RouterView: typeof import('vue-router')['RouterView']
11 | }
12 | }
13 |
14 | export {}
15 |
--------------------------------------------------------------------------------
/composables/src/mouse/useMouse.ts:
--------------------------------------------------------------------------------
1 | // mouse.js
2 | import { ref, onMounted, onUnmounted } from 'vue';
3 |
4 | // by convention, composable function names start with "use"
5 | export function useMouse() {
6 | // state encapsulated and managed by the composable
7 | const x = ref(0);
8 | const y = ref(0);
9 |
10 | // a composable can update its managed state over time.
11 | function update(event: MouseEvent) {
12 | x.value = event.pageX;
13 | y.value = event.pageY;
14 | }
15 |
16 | // a composable can also hook into its owner component's
17 | // lifecycle to setup and teardown side effects.
18 | onMounted(() => window.addEventListener('mousemove', update));
19 | onUnmounted(() => window.removeEventListener('mousemove', update));
20 |
21 | // expose managed state as return value
22 | return { x, y };
23 | }
24 |
--------------------------------------------------------------------------------
/apps/application1/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
{{ msg }}
10 |
11 | You’ve successfully created a project with
12 | Vite + Vue 3. What's next?
13 |
14 |
15 |
16 |
17 |
40 |
--------------------------------------------------------------------------------
/composables/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2018",
4 | "lib": ["DOM", "DOM.Iterable", "es2018"],
5 | "allowJs": true,
6 | "skipLibCheck": false,
7 | "esModuleInterop": false,
8 | "allowSyntheticDefaultImports": true,
9 | "jsx": "preserve",
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "esnext",
13 | "moduleResolution": "node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": false,
16 | "baseUrl": "./",
17 | "outDir": "dist",
18 | "declaration": true,
19 | "declarationDir": "dist",
20 | "declarationMap": true,
21 | "sourceMap": true,
22 | "paths": {
23 | "@/*": ["./*"]
24 | },
25 | "types": ["vite/client"],
26 | "typeRoots": ["node_modules/@types"]
27 | },
28 | "include": ["./src"],
29 | "exclude": ["node_modules", "../node_modules"]
30 | }
31 |
--------------------------------------------------------------------------------
/components/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2018",
4 | "lib": ["DOM", "DOM.Iterable", "es2018"],
5 | "allowJs": true,
6 | "skipLibCheck": false,
7 | "esModuleInterop": false,
8 | "allowSyntheticDefaultImports": true,
9 | "jsx": "preserve",
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "esnext",
13 | "moduleResolution": "node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": false,
16 | "baseUrl": "./",
17 | "outDir": "dist",
18 | "declaration": true,
19 | "declarationDir": "dist",
20 | "declarationMap": true,
21 | "sourceMap": true,
22 | "paths": {
23 | "@/*": ["src/*"],
24 | "@composables": ["../composables/src/"]
25 | },
26 | "types": ["vite/client"],
27 | "typeRoots": ["node_modules/@types"]
28 | },
29 | "include": ["./src"],
30 | "exclude": ["node_modules", "../node_modules"]
31 | }
32 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "monotest",
3 | "private": true,
4 | "version": "0.1.0",
5 | "scripts": {
6 | "bootstrap": "pnpm install",
7 | "app1:predev": "pnpm -r --stream --filter components build",
8 | "app1:dev": "pnpm --filter \"{apps/application1/**}\" dev",
9 | "app2:predev": "pnpm -r --stream --filter components build",
10 | "app2:dev": "pnpm --filter \"{apps/application2/**}\" dev",
11 | "prebuild": "pnpm -r lint",
12 | "build": "pnpm -r --stream build",
13 | "app1:build": "pnpm -r --stream --filter components --filter \"{apps/application1/**}\" build",
14 | "app2:build": "pnpm -r --stream --filter components --filter \"{apps/application2/**}\" build",
15 | "build:components": "pnpm --filter components build",
16 | "build:composables": "pnpm --filter \"{composables/**}\" build",
17 | "build:watch": "pnpm -r --parallel build:watch",
18 | "lint": "pnpm -r lint"
19 | },
20 | "devDependencies": {
21 | "pnpm": "^7.1.6"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/apps/application2/components.d.ts:
--------------------------------------------------------------------------------
1 | // generated by unplugin-vue-components
2 | // We suggest you to commit this file into source control
3 | // Read more: https://github.com/vuejs/vue-next/pull/3399
4 | import '@vue/runtime-core'
5 |
6 | declare module '@vue/runtime-core' {
7 | export interface GlobalComponents {
8 | IconsIconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default']
9 | IconsIconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default']
10 | IconsIconEcosystem: typeof import('./src/components/icons/IconEcosystem.vue')['default']
11 | IconsIconSupport: typeof import('./src/components/icons/IconSupport.vue')['default']
12 | IconsIconTooling: typeof import('./src/components/icons/IconTooling.vue')['default']
13 | MyApp2: typeof import('./src/components/MyApp2.vue')['default']
14 | RouterLink: typeof import('vue-router')['RouterLink']
15 | RouterView: typeof import('vue-router')['RouterView']
16 | }
17 | }
18 |
19 | export {}
20 |
--------------------------------------------------------------------------------
/apps/application1/src/components/icons/IconTooling.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
20 |
--------------------------------------------------------------------------------
/apps/application2/src/components/icons/IconTooling.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
20 |
--------------------------------------------------------------------------------
/apps/application1/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from 'vue-router';
2 | import HomeView from '../views/HomeView.vue';
3 |
4 | const router = createRouter({
5 | history: createWebHistory(import.meta.env.BASE_URL),
6 | routes: [
7 | {
8 | path: '/',
9 | name: 'home',
10 | component: HomeView,
11 | },
12 | {
13 | path: '/about',
14 | name: 'about',
15 | // route level code-splitting
16 | // this generates a separate chunk (About.[hash].js) for this route
17 | // which is lazy-loaded when the route is visited.
18 | component: () => import('../views/AboutView.vue'),
19 | },
20 | {
21 | path: '/hello',
22 | name: 'hello',
23 | // route level code-splitting
24 | // this generates a separate chunk (About.[hash].js) for this route
25 | // which is lazy-loaded when the route is visited.
26 | component: () => import('../views/HelloWorld.vue'),
27 | },
28 | ],
29 | });
30 |
31 | export default router;
32 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "Build (all)",
6 | "type": "shell",
7 | "command": "pnpm build",
8 | "problemMatcher": []
9 | },
10 | {
11 | "label": "Build (Components)",
12 | "type": "shell",
13 | "command": "pnpm build:components",
14 | "problemMatcher": []
15 | },
16 | {
17 | "label": "Build (Composables)",
18 | "type": "shell",
19 | "command": "pnpm build:composables",
20 | "problemMatcher": []
21 | },
22 | {
23 | "label": "Build Watch (Components and Composables)",
24 | "type": "shell",
25 | "command": "pnpm build:watch",
26 | "problemMatcher": []
27 | },
28 | {
29 | "label": "Dev Serve (App1)",
30 | "type": "shell",
31 | "command": "pnpm app1:dev",
32 | "problemMatcher": []
33 | },
34 | {
35 | "label": "Dev Serve (App2)",
36 | "type": "shell",
37 | "command": "pnpm app2:dev",
38 | "problemMatcher": []
39 | }
40 | ]
41 | }
42 |
--------------------------------------------------------------------------------
/apps/application1/src/components/icons/IconCommunity.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/application1/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'url';
2 |
3 | import { defineConfig } from 'vite';
4 | import vue from '@vitejs/plugin-vue';
5 | import Components from 'unplugin-vue-components/vite';
6 | import path from 'path';
7 |
8 | // https://vitejs.dev/config/
9 | export default defineConfig({
10 | plugins: [
11 | vue({
12 | style: {
13 | filename: './style.css',
14 | },
15 | }),
16 | Components({
17 | dirs: ['src/components', '../components/src'],
18 | extensions: ['vue'],
19 | directoryAsNamespace: true,
20 | globalNamespaces: ['global'],
21 | include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
22 | exclude: [/node_modules/, /\.git/],
23 | resolvers: [],
24 | }),
25 | ],
26 | resolve: {
27 | alias: {
28 | '@': fileURLToPath(new URL('./src', import.meta.url)),
29 | '@components': `${path.resolve(__dirname, '../components/src')}`,
30 | '@composables': `${path.resolve(__dirname, '../composables/src')}`,
31 | },
32 | },
33 | server: {
34 | port: 3000,
35 | },
36 | });
37 |
--------------------------------------------------------------------------------
/apps/application2/src/components/icons/IconCommunity.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/application2/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'url';
2 |
3 | import { defineConfig } from 'vite';
4 | import vue from '@vitejs/plugin-vue';
5 | import Components from 'unplugin-vue-components/vite';
6 | import path from 'path';
7 |
8 | // https://vitejs.dev/config/
9 | export default defineConfig({
10 | plugins: [
11 | vue({
12 | style: {
13 | filename: './style.css',
14 | },
15 | }),
16 | Components({
17 | dirs: ['src/components', '../components/src'],
18 | extensions: ['vue'],
19 | directoryAsNamespace: true,
20 | globalNamespaces: ['global'],
21 | include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
22 | exclude: [/node_modules/, /\.git/],
23 | resolvers: [],
24 | }),
25 | ],
26 | resolve: {
27 | alias: {
28 | '@': fileURLToPath(new URL('./src', import.meta.url)),
29 | '@components': `${path.resolve(__dirname, '../components/src')}`,
30 | '@composables': `${path.resolve(__dirname, '../composables/src')}`,
31 | },
32 | },
33 | server: {
34 | port: 4000,
35 | },
36 | });
37 |
--------------------------------------------------------------------------------
/apps/application1/components.d.ts:
--------------------------------------------------------------------------------
1 | // generated by unplugin-vue-components
2 | // We suggest you to commit this file into source control
3 | // Read more: https://github.com/vuejs/vue-next/pull/3399
4 | import '@vue/runtime-core'
5 |
6 | declare module '@vue/runtime-core' {
7 | export interface GlobalComponents {
8 | HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
9 | IconsIconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default']
10 | IconsIconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default']
11 | IconsIconEcosystem: typeof import('./src/components/icons/IconEcosystem.vue')['default']
12 | IconsIconSupport: typeof import('./src/components/icons/IconSupport.vue')['default']
13 | IconsIconTooling: typeof import('./src/components/icons/IconTooling.vue')['default']
14 | RouterLink: typeof import('vue-router')['RouterLink']
15 | RouterView: typeof import('vue-router')['RouterView']
16 | TheWelcome: typeof import('./src/components/TheWelcome.vue')['default']
17 | WelcomeItem: typeof import('./src/components/WelcomeItem.vue')['default']
18 | }
19 | }
20 |
21 | export {}
22 |
--------------------------------------------------------------------------------
/apps/application1/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@monotest/application2",
3 | "version": "0.1.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vue-tsc --noEmit && vite build",
7 | "preview": "vite preview --port 5050",
8 | "typecheck": "vue-tsc --noEmit",
9 | "lint": "eslint --ext .ts,.vue src/ --ignore-path .gitignore"
10 | },
11 | "dependencies": {
12 | "@monotest/components": "workspace:*",
13 | "@monotest/composables": "workspace:*",
14 | "vue": "^3.2.36",
15 | "vue-router": "^4.0.15"
16 | },
17 | "devDependencies": {
18 | "@types/node": "^17.0.35",
19 | "@typescript-eslint/eslint-plugin": "^5.1.0",
20 | "@typescript-eslint/parser": "^5.1.0",
21 | "@vitejs/plugin-vue": "^2.3.3",
22 | "@vue/eslint-config-prettier": "^7.0.0",
23 | "@vue/eslint-config-typescript": "^10.0.0",
24 | "@vue/tsconfig": "^0.1.3",
25 | "eslint": "^8.16.0",
26 | "eslint-plugin-prettier": "^4.0.0",
27 | "eslint-plugin-vue": "^9.0.1",
28 | "prettier": "^2.6.2",
29 | "typescript": "^4.7.2",
30 | "unplugin-vue-components": "^0.19.6",
31 | "vite": "^2.9.9",
32 | "vue-eslint-parser": "^9.0.2",
33 | "vue-tsc": "^0.34.16"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/apps/application2/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@monotest/application2",
3 | "version": "0.1.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vue-tsc --noEmit && vite build",
7 | "preview": "vite preview --port 5050",
8 | "typecheck": "vue-tsc --noEmit",
9 | "lint": "eslint --ext .ts,.vue src/ --ignore-path .gitignore"
10 | },
11 | "dependencies": {
12 | "@monotest/components": "workspace:*",
13 | "@monotest/composables": "workspace:*",
14 | "vue": "^3.2.36",
15 | "vue-router": "^4.0.15"
16 | },
17 | "devDependencies": {
18 | "@types/node": "^17.0.35",
19 | "@typescript-eslint/eslint-plugin": "^5.1.0",
20 | "@typescript-eslint/parser": "^5.1.0",
21 | "@vitejs/plugin-vue": "^2.3.3",
22 | "@vue/eslint-config-prettier": "^7.0.0",
23 | "@vue/eslint-config-typescript": "^10.0.0",
24 | "@vue/tsconfig": "^0.1.3",
25 | "eslint": "^8.16.0",
26 | "eslint-plugin-prettier": "^4.0.0",
27 | "eslint-plugin-vue": "^9.0.1",
28 | "prettier": "^2.6.2",
29 | "typescript": "^4.7.2",
30 | "unplugin-vue-components": "^0.19.6",
31 | "vite": "^2.9.9",
32 | "vue-eslint-parser": "^9.0.2",
33 | "vue-tsc": "^0.34.16"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/composables/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@monotest/composables",
3 | "version": "0.1.0",
4 | "license": "MIT",
5 | "author": "Ghislain B.",
6 | "module": "./dist/composables.es.js",
7 | "main": "./dist/composables.es.js",
8 | "exports": {
9 | ".": {
10 | "import": "./dist/composables.es.js"
11 | },
12 | "./*": "./*"
13 | },
14 | "types": "dist/index.d.ts",
15 | "typings": "dist/index.d.ts",
16 | "files": [
17 | "dist"
18 | ],
19 | "sideEffects": [
20 | "*.css",
21 | "*.scss"
22 | ],
23 | "scripts": {
24 | "build": "vite build && vue-tsc --emitDeclarationOnly",
25 | "build:watch": "vite build --watch",
26 | "build:types": "vue-tsc --emitDeclarationOnly",
27 | "lint": "eslint --ext .ts,.vue src/ --ignore-path ../.gitignore"
28 | },
29 | "dependencies": {
30 | "sass": "^1.52.1",
31 | "vue": "^3.2.36"
32 | },
33 | "peerDependencies": {
34 | "vue": "3.x"
35 | },
36 | "devDependencies": {
37 | "@vitejs/plugin-vue": "^2.3.3",
38 | "eslint": "^8.16.0",
39 | "typescript": "^4.7.2",
40 | "unplugin-vue-components": "^0.19.6",
41 | "vite": "^2.9.9",
42 | "vue-eslint-parser": "^9.0.2",
43 | "vue-tsc": "^0.34.16"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/components/src/my-btn/MyBtn.vue:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
17 |
50 |
--------------------------------------------------------------------------------
/apps/application1/src/components/icons/IconDocumentation.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/application2/src/components/icons/IconDocumentation.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: 'vue-eslint-parser',
3 | root: true,
4 | env: {
5 | node: true,
6 | },
7 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:vue/vue3-recommended', '@vue/typescript/recommended', '@vue/prettier'],
8 | parserOptions: {
9 | parser: '@typescript-eslint/parser',
10 | ecmaVersion: 2020,
11 | ecmaFeatures: {
12 | jsx: false,
13 | },
14 | },
15 | rules: {
16 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
17 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
18 | 'no-use-before-define': 'off',
19 | 'prettier/prettier': ['error', { endOfLine: 'auto' }],
20 | semi: 2,
21 | '@typescript-eslint/no-inferrable-types': 'off',
22 | '@typescript-eslint/indent': ['warn', 2],
23 | '@typescript-eslint/no-empty-function': 'off',
24 | '@typescript-eslint/no-var-requires': 0,
25 | '@typescript-eslint/no-explicit-any': 0,
26 | '@typescript-eslint/no-use-before-define': ['error', { functions: false, variables: false, classes: false }],
27 | },
28 | overrides: [
29 | {
30 | files: ['**/__tests__/*.{j,t}s', '**/tests/unit/**/*.spec.{j,t}s'],
31 | env: {
32 | jest: true,
33 | },
34 | },
35 | ],
36 | };
37 |
--------------------------------------------------------------------------------
/components/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@monotest/components",
3 | "version": "0.1.0",
4 | "license": "MIT",
5 | "author": "Ghislain B.",
6 | "module": "./dist/components.es.js",
7 | "main": "./dist/components.umd.js",
8 | "exports": {
9 | ".": {
10 | "import": "./dist/components.es.js",
11 | "require": "./dist/my-component-lib.umd.js"
12 | },
13 | "./*": "./*"
14 | },
15 | "types": "./dist/types/index.d.ts",
16 | "typings": "dist/index.d.ts",
17 | "files": [
18 | "dist"
19 | ],
20 | "sideEffects": [
21 | "*.css",
22 | "*.scss"
23 | ],
24 | "scripts": {
25 | "build": "vite build && vue-tsc --emitDeclarationOnly",
26 | "build:watch": "vite build --watch",
27 | "build:types": "vue-tsc --emitDeclarationOnly",
28 | "lint": "eslint --ext .ts,.vue src/ --ignore-path ../.gitignore"
29 | },
30 | "dependencies": {
31 | "@monotest/composables": "workspace:*",
32 | "sass": "^1.52.1",
33 | "vue": "^3.2.36"
34 | },
35 | "peerDependencies": {
36 | "vue": "3.2.36"
37 | },
38 | "devDependencies": {
39 | "@vitejs/plugin-vue": "^2.3.3",
40 | "eslint": "^8.16.0",
41 | "typescript": "^4.7.2",
42 | "unplugin-vue-components": "^0.19.6",
43 | "vite": "^2.9.9",
44 | "vue-eslint-parser": "^9.0.2",
45 | "vue-tsc": "^0.34.16"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/apps/application2/src/components/MyApp2.vue:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
{{ msg }}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
Mouse position is at: {{ x }}, {{ y }}
34 |
35 |
36 |
37 |
66 |
--------------------------------------------------------------------------------
/apps/application1/src/components/WelcomeItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
87 |
--------------------------------------------------------------------------------
/apps/application1/README.md:
--------------------------------------------------------------------------------
1 | # vite-demo
2 |
3 | This template should help get you started developing with Vue 3 in Vite.
4 |
5 | ## Recommended IDE Setup
6 |
7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin).
8 |
9 | ## Type Support for `.vue` Imports in TS
10 |
11 | TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
12 |
13 | If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
14 |
15 | 1. Disable the built-in TypeScript Extension
16 | 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
17 | 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
18 | 2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
19 |
20 | ## Customize configuration
21 |
22 | See [Vite Configuration Reference](https://vitejs.dev/config/).
23 |
24 | ## Project Setup
25 |
26 | ```sh
27 | npm install
28 | ```
29 |
30 | ### Compile and Hot-Reload for Development
31 |
32 | ```sh
33 | npm run dev
34 | ```
35 |
36 | ### Type-Check, Compile and Minify for Production
37 |
38 | ```sh
39 | npm run build
40 | ```
41 |
42 | ### Lint with [ESLint](https://eslint.org/)
43 |
44 | ```sh
45 | npm run lint
46 | ```
47 |
--------------------------------------------------------------------------------
/apps/application2/README.md:
--------------------------------------------------------------------------------
1 | # vite-demo
2 |
3 | This template should help get you started developing with Vue 3 in Vite.
4 |
5 | ## Recommended IDE Setup
6 |
7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin).
8 |
9 | ## Type Support for `.vue` Imports in TS
10 |
11 | TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
12 |
13 | If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
14 |
15 | 1. Disable the built-in TypeScript Extension
16 | 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
17 | 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
18 | 2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
19 |
20 | ## Customize configuration
21 |
22 | See [Vite Configuration Reference](https://vitejs.dev/config/).
23 |
24 | ## Project Setup
25 |
26 | ```sh
27 | npm install
28 | ```
29 |
30 | ### Compile and Hot-Reload for Development
31 |
32 | ```sh
33 | npm run dev
34 | ```
35 |
36 | ### Type-Check, Compile and Minify for Production
37 |
38 | ```sh
39 | npm run build
40 | ```
41 |
42 | ### Lint with [ESLint](https://eslint.org/)
43 |
44 | ```sh
45 | npm run lint
46 | ```
47 |
--------------------------------------------------------------------------------
/components/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import vue from '@vitejs/plugin-vue';
3 | import Components from 'unplugin-vue-components/vite';
4 |
5 | import path from 'node:path';
6 | import { fileURLToPath } from 'node:url';
7 |
8 | const filename = fileURLToPath(import.meta.url);
9 | const dirname = path.dirname(filename);
10 |
11 | export default defineConfig({
12 | server: {
13 | fs: {
14 | allow: ['..'],
15 | },
16 | },
17 | plugins: [
18 | vue({
19 | style: {
20 | filename: './style.css',
21 | },
22 | }),
23 | Components({
24 | dirs: ['src'],
25 | extensions: ['vue'],
26 | directoryAsNamespace: true,
27 | globalNamespaces: ['global'],
28 | include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
29 | exclude: [/node_modules/, /\.git/],
30 | resolvers: [],
31 | }),
32 | ],
33 | build: {
34 | lib: {
35 | entry: path.resolve(dirname, 'src/index.ts'),
36 | name: 'components',
37 | },
38 | sourcemap: true,
39 | rollupOptions: {
40 | // manualChunks: (id) => {
41 | // if (id.includes('node_modules')) {
42 | // return 'vendor';
43 | // }
44 | // if (id.includes('composables')) {
45 | // return 'composables';
46 | // }
47 | // // return path.parse(id).name;
48 | // },
49 | external: ['vue'],
50 | output: {
51 | // minifyInternalExports: false,
52 | // chunkFileNames: '[name].js',
53 | // Provide global variables to use in the UMD build
54 | // for externalized deps
55 | globals: {
56 | vue: 'Vue',
57 | },
58 | },
59 | },
60 | },
61 | resolve: {
62 | alias: {
63 | '@': path.resolve(dirname, '/'),
64 | '@components': path.resolve(dirname, 'src'),
65 | '@composables': path.resolve(dirname, '../composables/src/'),
66 | },
67 | },
68 | });
69 |
--------------------------------------------------------------------------------
/composables/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import vue from '@vitejs/plugin-vue';
3 | import Components from 'unplugin-vue-components/vite';
4 | import path from 'node:path';
5 | import { fileURLToPath } from 'node:url';
6 |
7 | const filename = fileURLToPath(import.meta.url);
8 | const dirname = path.dirname(filename);
9 |
10 | export default defineConfig({
11 | server: {
12 | fs: {
13 | allow: ['..'],
14 | },
15 | },
16 | plugins: [
17 | vue({
18 | style: {
19 | filename: './style.css',
20 | },
21 | }),
22 | Components({
23 | dirs: ['src'],
24 | extensions: ['vue'],
25 | directoryAsNamespace: true,
26 | globalNamespaces: ['global'],
27 | include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
28 | exclude: [/node_modules/, /\.git/],
29 | resolvers: [],
30 | }),
31 | ],
32 | build: {
33 | lib: {
34 | entry: path.resolve(dirname, 'src/index.ts'),
35 | name: 'components',
36 | // fileName: (format) => `my-lib.${format}.js`
37 | // formats: ["es"],
38 | },
39 | sourcemap: true,
40 | rollupOptions: {
41 | manualChunks: (id) => {
42 | if (id.includes('node_modules')) {
43 | return 'vendor';
44 | }
45 | if (id.includes('composables')) {
46 | return 'composables';
47 | }
48 | // return path.parse(id).name;
49 | },
50 | external: ['vue'],
51 | output: {
52 | minifyInternalExports: false,
53 | chunkFileNames: '[name].js',
54 | // Provide global variables to use in the UMD build
55 | // for externalized deps
56 | globals: {
57 | vue: 'Vue',
58 | },
59 | },
60 | },
61 | },
62 | resolve: {
63 | alias: {
64 | '@': path.resolve(dirname, '/'),
65 | '@components': path.resolve(dirname, 'src'),
66 | '@composables': path.resolve(dirname, '../composables/src/'),
67 | },
68 | },
69 | });
70 |
--------------------------------------------------------------------------------
/apps/application1/src/components/icons/IconEcosystem.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/application2/src/components/icons/IconEcosystem.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/application1/src/assets/base.css:
--------------------------------------------------------------------------------
1 | /* color palette from */
2 | :root {
3 | --vt-c-white: #ffffff;
4 | --vt-c-white-soft: #f8f8f8;
5 | --vt-c-white-mute: #f2f2f2;
6 |
7 | --vt-c-black: #181818;
8 | --vt-c-black-soft: #222222;
9 | --vt-c-black-mute: #282828;
10 |
11 | --vt-c-indigo: #2c3e50;
12 |
13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
17 |
18 | --vt-c-text-light-1: var(--vt-c-indigo);
19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
20 | --vt-c-text-dark-1: var(--vt-c-white);
21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
22 | }
23 |
24 | /* semantic color variables for this project */
25 | :root {
26 | --color-background: var(--vt-c-white);
27 | --color-background-soft: var(--vt-c-white-soft);
28 | --color-background-mute: var(--vt-c-white-mute);
29 |
30 | --color-border: var(--vt-c-divider-light-2);
31 | --color-border-hover: var(--vt-c-divider-light-1);
32 |
33 | --color-heading: var(--vt-c-text-light-1);
34 | --color-text: var(--vt-c-text-light-1);
35 |
36 | --section-gap: 160px;
37 | }
38 |
39 | @media (prefers-color-scheme: dark) {
40 | :root {
41 | --color-background: var(--vt-c-black);
42 | --color-background-soft: var(--vt-c-black-soft);
43 | --color-background-mute: var(--vt-c-black-mute);
44 |
45 | --color-border: var(--vt-c-divider-dark-2);
46 | --color-border-hover: var(--vt-c-divider-dark-1);
47 |
48 | --color-heading: var(--vt-c-text-dark-1);
49 | --color-text: var(--vt-c-text-dark-2);
50 | }
51 | }
52 |
53 | *,
54 | *::before,
55 | *::after {
56 | box-sizing: border-box;
57 | margin: 0;
58 | position: relative;
59 | font-weight: normal;
60 | }
61 |
62 | body {
63 | min-height: 100vh;
64 | color: var(--color-text);
65 | background: var(--color-background);
66 | transition: color 0.5s, background-color 0.5s;
67 | line-height: 1.6;
68 | font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
69 | Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
70 | font-size: 15px;
71 | text-rendering: optimizeLegibility;
72 | -webkit-font-smoothing: antialiased;
73 | -moz-osx-font-smoothing: grayscale;
74 | }
75 |
--------------------------------------------------------------------------------
/apps/application2/src/App.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
120 |
--------------------------------------------------------------------------------
/apps/application2/src/assets/base.css:
--------------------------------------------------------------------------------
1 | /* color palette from */
2 | :root {
3 | --vt-c-white: #ffffff;
4 | --vt-c-white-soft: #f8f8f8;
5 | --vt-c-white-mute: #f2f2f2;
6 |
7 | --vt-c-black: #181818;
8 | --vt-c-black-soft: #222222;
9 | --vt-c-black-mute: #282828;
10 |
11 | --vt-c-indigo: #2c3e50;
12 |
13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
17 |
18 | --vt-c-text-light-1: var(--vt-c-indigo);
19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
20 | --vt-c-text-dark-1: var(--vt-c-white);
21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
22 | }
23 |
24 | /* semantic color variables for this project */
25 | :root {
26 | --color-background: var(--vt-c-white);
27 | --color-background-soft: var(--vt-c-white-soft);
28 | --color-background-mute: var(--vt-c-white-mute);
29 |
30 | --color-border: var(--vt-c-divider-light-2);
31 | --color-border-hover: var(--vt-c-divider-light-1);
32 |
33 | --color-heading: var(--vt-c-text-light-1);
34 | --color-text: var(--vt-c-text-light-1);
35 |
36 | --section-gap: 160px;
37 | }
38 |
39 | @media (prefers-color-scheme: dark) {
40 | :root {
41 | --color-background: var(--vt-c-black);
42 | --color-background-soft: var(--vt-c-black-soft);
43 | --color-background-mute: var(--vt-c-black-mute);
44 |
45 | --color-border: var(--vt-c-divider-dark-2);
46 | --color-border-hover: var(--vt-c-divider-dark-1);
47 |
48 | --color-heading: var(--vt-c-text-dark-1);
49 | --color-text: var(--vt-c-text-dark-2);
50 | }
51 | }
52 |
53 | *,
54 | *::before,
55 | *::after {
56 | box-sizing: border-box;
57 | margin: 0;
58 | position: relative;
59 | font-weight: normal;
60 | }
61 |
62 | body {
63 | min-height: 100vh;
64 | color: var(--color-text);
65 | background: var(--color-background);
66 | transition: color 0.5s, background-color 0.5s;
67 | line-height: 1.6;
68 | font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
69 | Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
70 | font-size: 15px;
71 | text-rendering: optimizeLegibility;
72 | -webkit-font-smoothing: antialiased;
73 | -moz-osx-font-smoothing: grayscale;
74 | }
75 |
--------------------------------------------------------------------------------
/apps/application1/src/App.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
133 |
--------------------------------------------------------------------------------
/apps/application1/src/views/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
22 |
23 |
24 |
25 |
{{ msg }}
26 |
27 |
28 | Recommended IDE setup:
29 | VSCode
30 | +
31 | Volar
32 |
33 |
34 |
See README.md for more information.
35 |
36 |
37 | Vite Docs
38 | |
39 | Vue 3 Docs
40 |
41 |
42 |
43 |
44 |
45 | Edit
46 | components/HelloWorld.vue to test hot module replacement.
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
Mouse position is at: {{ x }}, {{ y }}
66 |
67 |
68 |
69 |
101 |
--------------------------------------------------------------------------------
/apps/application1/src/components/TheWelcome.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Documentation
16 |
17 | Vue’s
18 | official documentation
19 | provides you with all information you need to get started.
20 |
21 |
22 |
23 |
24 |
25 |
26 | Tooling
27 |
28 | This project is served and bundled with
29 | Vite. The recommended IDE setup is
30 | VSCode + Volar. If you need to test
31 | your components and web pages, check out Cypress and
32 | Cypress Component Testing.
33 |
34 |
35 |
36 | More instructions are available in README.md.
37 |
38 |
39 |
40 |
41 |
42 |
43 | Ecosystem
44 |
45 | Get official tools and libraries for your project:
46 | Pinia, Vue Router,
47 | Vue Test Utils, and Vue Dev Tools. If you
48 | need more resources, we suggest paying
49 | Awesome Vue
50 | a visit.
51 |
52 |
53 |
54 |
55 |
56 |
57 | Community
58 |
59 | Got stuck? Ask your question on
60 | Vue Land, our official Discord server, or
61 | StackOverflow. You should also subscribe to
62 | our mailing list and follow the official
63 | @vuejs
64 | twitter account for latest news in the Vue world.
65 |
66 |
67 |
68 |
69 |
70 |
71 | Support Vue
72 |
73 | As an independent project, Vue relies on community backing for its sustainability. You can help us by
74 | becoming a sponsor.
75 |
76 |
77 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue 3 and pnpm workspace boilerplate
2 |
3 | ### Reuse Components & Composables across multiple Applications
4 |
5 | ## Description
6 |
7 | This boilerplate is to demo a setup where we can take advantage of [pnpm workspaces](https://pnpm.io/workspaces) where multiple Vue 3 applications can share Components and Composables. This setup will provide the ability for different teams to work on different applications while being able to share reusable Components & Composables to follow a DRY (Don't Repeat Yourself) setup.
8 |
9 | The other ability that pnpm workspace is providing us is the ability to have our workspace running with and even without publishing the Component, Composable packages on NPM (under an [npm organization](https://docs.npmjs.com/organizations) to take advantage or workspace) or locally with [Verdaccio](https://verdaccio.org/)... in other words you could publish each packages of the workspace (in this demo that would be 4 of them: [application1](/apps/application1), [application2](/apps/application2), [components](/components) and [composables](/composables)) or simply skip all of that and simply build & run them locally without ever publishing them anywhere.
10 |
11 | For a great versioning/publishing tool in a workspace environment, take a look at [Lerna-Lite](https://github.com/ghiscoding/lerna-lite) which is what I use in a workspace monorepo structure.
12 |
13 | ## What is included/configured
14 |
15 | - [Vite](https://vitejs.dev/)
16 | - [Vue 3 - Composition API](https://vuejs.org/api/composition-api-setup.html#composition-api-setup)
17 | - we use the `script setup` syntax in a TypeScript environment, more info in this Medium [article](https://medium.com/@AzilenTech/using-script-setup-for-vue-3-ec4b6173b7f4)
18 | - [pnpm workspaces](https://pnpm.io/workspaces)
19 | - [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) using [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier)
20 | - [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) to auto-import Vue Components (to avoid adding `.use()` on each)
21 | - [TypeScript](https://www.typescriptlang.org/)
22 |
23 | ## How does it work?
24 |
25 | Since we are using pnpm workspace and Vite, we can take advantage of Vite's [library mode](https://vitejs.dev/guide/build.html#library-mode) and build the `Components` and `Composables` packages in that mode and make them available as distributed libraries/packages (via their `dist` folder), then we can use them in `application1` and/or `application2` separately. What if you need develop a Component or Composables, do we need to rebuild every single time? Yes we do, but for that we can take advantage of Vite's [build.watch](https://vitejs.dev/config/#build-watch), which will rebuild for us and allow us to develop faster.
26 |
27 | For more info about Vite library mode, this [article](https://dev.to/josip2312/build-a-typescript-component-library-with-vite-58dh) explains it well.
28 |
29 | ## Project structure
30 |
31 | #### Components ([/components](/components))
32 |
33 | A very simple `MyButton` Component is provided as an example of a reusable component
34 |
35 | #### Composables ([/composables](/composables))
36 |
37 | A very simple `useMouse` Composable, which is a mouse position tracker, is provided as an example of a reusable composable.
38 |
39 | #### Apps ([/apps](/apps))
40 |
41 | The `Apps` folder is where you will want to include all your applications.
42 |
43 | ### Can we expand on this?
44 |
45 | Sure, you could maybe add Directives and/or anything else that you deemed reusable. The steps are simple, just add a folder (probably easier to copy `Component` and rename/remove what is different) and then add it to the pnpm workspace via the [pnpm-workspace.yaml](/ghiscoding/vue3-pnpm-workspace/blob/main/pnpm-workspace.yaml) file and add proper build scripts in the [package.json](/ghiscoding/vue3-pnpm-workspace/blob/main/package.json) file in the project root.
46 |
47 | ## Inspiration
48 |
49 | All credit goes to the [Gun-Vue](https://github.com/DeFUCC/gun-vue) project when I was researching on how to do a Vue 3 pnpm workspace structure for reusability. I did not know how to build the Components/Composables as libraries and that project got me started. Thanks to them.
50 |
51 | ## Contributions
52 |
53 | Feel free to contribution to the project if you think that you can improve it.
54 |
55 | ## Installation
56 |
57 | The steps should be straightforward, simply run pnpm install, execute a build of all packages and then run application1 or application2. The steps assume that you already have installed pnpm, if not then follow the [pnpm installation](https://pnpm.io/installation)
58 |
59 | 1. run pnpm install
60 |
61 | ```sh
62 | pnpm install # or pnpm i
63 | ```
64 |
65 | 2. run a build
66 |
67 | ```sh
68 | # run a full build of everything
69 | pnpm build
70 |
71 | # or run Components build separately
72 | pnpm build:components
73 |
74 | # or run Composables build separately
75 | pnpm build:composables
76 |
77 | # or run a build watch, which will be picked up by both the Components & Composables
78 | pnpm build:watch
79 | ```
80 |
81 | 3. run dev server (app1 or app2)
82 |
83 | ```sh
84 | pnpm app1:dev
85 | ```
86 |
87 | 4. run prod build (app1 or app2)
88 |
89 | ```sh
90 | pnpm app1:build
91 |
92 | # or run a full build of everything
93 | pnpm build
94 | ```
95 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | importers:
4 |
5 | .:
6 | specifiers:
7 | pnpm: ^7.1.6
8 | devDependencies:
9 | pnpm: 7.1.6
10 |
11 | apps/application1:
12 | specifiers:
13 | '@monotest/components': workspace:*
14 | '@monotest/composables': workspace:*
15 | '@types/node': ^17.0.35
16 | '@typescript-eslint/eslint-plugin': ^5.1.0
17 | '@typescript-eslint/parser': ^5.1.0
18 | '@vitejs/plugin-vue': ^2.3.3
19 | '@vue/eslint-config-prettier': ^7.0.0
20 | '@vue/eslint-config-typescript': ^10.0.0
21 | '@vue/tsconfig': ^0.1.3
22 | eslint: ^8.16.0
23 | eslint-plugin-prettier: ^4.0.0
24 | eslint-plugin-vue: ^9.0.1
25 | prettier: ^2.6.2
26 | typescript: ^4.7.2
27 | unplugin-vue-components: ^0.19.6
28 | vite: ^2.9.9
29 | vue: ^3.2.36
30 | vue-eslint-parser: ^9.0.2
31 | vue-router: ^4.0.15
32 | vue-tsc: ^0.34.16
33 | dependencies:
34 | '@monotest/components': link:../../components
35 | '@monotest/composables': link:../../composables
36 | vue: 3.2.36
37 | vue-router: 4.0.15_vue@3.2.36
38 | devDependencies:
39 | '@types/node': 17.0.35
40 | '@typescript-eslint/eslint-plugin': 5.26.0_hzuh7e2up357pvq3mkokjvu2lq
41 | '@typescript-eslint/parser': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
42 | '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.36
43 | '@vue/eslint-config-prettier': 7.0.0_yzlwycfcjzj3trzruaflx2c53m
44 | '@vue/eslint-config-typescript': 10.0.0_lgr7dxlaj7q4ptuy6cz7mqitfi
45 | '@vue/tsconfig': 0.1.3_@types+node@17.0.35
46 | eslint: 8.16.0
47 | eslint-plugin-prettier: 4.0.0_yzlwycfcjzj3trzruaflx2c53m
48 | eslint-plugin-vue: 9.0.1_eslint@8.16.0
49 | prettier: 2.6.2
50 | typescript: 4.7.2
51 | unplugin-vue-components: 0.19.6_vite@2.9.9+vue@3.2.36
52 | vite: 2.9.9
53 | vue-eslint-parser: 9.0.2_eslint@8.16.0
54 | vue-tsc: 0.34.16_typescript@4.7.2
55 |
56 | apps/application2:
57 | specifiers:
58 | '@monotest/components': workspace:*
59 | '@monotest/composables': workspace:*
60 | '@types/node': ^17.0.35
61 | '@typescript-eslint/eslint-plugin': ^5.1.0
62 | '@typescript-eslint/parser': ^5.1.0
63 | '@vitejs/plugin-vue': ^2.3.3
64 | '@vue/eslint-config-prettier': ^7.0.0
65 | '@vue/eslint-config-typescript': ^10.0.0
66 | '@vue/tsconfig': ^0.1.3
67 | eslint: ^8.16.0
68 | eslint-plugin-prettier: ^4.0.0
69 | eslint-plugin-vue: ^9.0.1
70 | prettier: ^2.6.2
71 | typescript: ^4.7.2
72 | unplugin-vue-components: ^0.19.6
73 | vite: ^2.9.9
74 | vue: ^3.2.36
75 | vue-eslint-parser: ^9.0.2
76 | vue-router: ^4.0.15
77 | vue-tsc: ^0.34.16
78 | dependencies:
79 | '@monotest/components': link:../../components
80 | '@monotest/composables': link:../../composables
81 | vue: 3.2.36
82 | vue-router: 4.0.15_vue@3.2.36
83 | devDependencies:
84 | '@types/node': 17.0.35
85 | '@typescript-eslint/eslint-plugin': 5.26.0_hzuh7e2up357pvq3mkokjvu2lq
86 | '@typescript-eslint/parser': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
87 | '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.36
88 | '@vue/eslint-config-prettier': 7.0.0_yzlwycfcjzj3trzruaflx2c53m
89 | '@vue/eslint-config-typescript': 10.0.0_lgr7dxlaj7q4ptuy6cz7mqitfi
90 | '@vue/tsconfig': 0.1.3_@types+node@17.0.35
91 | eslint: 8.16.0
92 | eslint-plugin-prettier: 4.0.0_yzlwycfcjzj3trzruaflx2c53m
93 | eslint-plugin-vue: 9.0.1_eslint@8.16.0
94 | prettier: 2.6.2
95 | typescript: 4.7.2
96 | unplugin-vue-components: 0.19.6_vite@2.9.9+vue@3.2.36
97 | vite: 2.9.9
98 | vue-eslint-parser: 9.0.2_eslint@8.16.0
99 | vue-tsc: 0.34.16_typescript@4.7.2
100 |
101 | components:
102 | specifiers:
103 | '@monotest/composables': workspace:*
104 | '@vitejs/plugin-vue': ^2.3.3
105 | eslint: ^8.16.0
106 | sass: ^1.52.1
107 | typescript: ^4.7.2
108 | unplugin-vue-components: ^0.19.6
109 | vite: ^2.9.9
110 | vue: ^3.2.36
111 | vue-eslint-parser: ^9.0.2
112 | vue-tsc: ^0.34.16
113 | dependencies:
114 | '@monotest/composables': link:../composables
115 | sass: 1.52.1
116 | vue: 3.2.36
117 | devDependencies:
118 | '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.36
119 | eslint: 8.16.0
120 | typescript: 4.7.2
121 | unplugin-vue-components: 0.19.6_vite@2.9.9+vue@3.2.36
122 | vite: 2.9.9_sass@1.52.1
123 | vue-eslint-parser: 9.0.2_eslint@8.16.0
124 | vue-tsc: 0.34.16_typescript@4.7.2
125 |
126 | composables:
127 | specifiers:
128 | '@vitejs/plugin-vue': ^2.3.3
129 | eslint: ^8.16.0
130 | sass: ^1.52.1
131 | typescript: ^4.7.2
132 | unplugin-vue-components: ^0.19.6
133 | vite: ^2.9.9
134 | vue: ^3.2.36
135 | vue-eslint-parser: ^9.0.2
136 | vue-tsc: ^0.34.16
137 | dependencies:
138 | sass: 1.52.1
139 | vue: 3.2.36
140 | devDependencies:
141 | '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.36
142 | eslint: 8.16.0
143 | typescript: 4.7.2
144 | unplugin-vue-components: 0.19.6_vite@2.9.9+vue@3.2.36
145 | vite: 2.9.9_sass@1.52.1
146 | vue-eslint-parser: 9.0.2_eslint@8.16.0
147 | vue-tsc: 0.34.16_typescript@4.7.2
148 |
149 | packages:
150 |
151 | /@antfu/utils/0.5.2:
152 | resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==}
153 | dev: true
154 |
155 | /@babel/helper-validator-identifier/7.16.7:
156 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
157 | engines: {node: '>=6.9.0'}
158 |
159 | /@babel/parser/7.18.0:
160 | resolution: {integrity: sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==}
161 | engines: {node: '>=6.0.0'}
162 | hasBin: true
163 | dependencies:
164 | '@babel/types': 7.18.0
165 |
166 | /@babel/types/7.18.0:
167 | resolution: {integrity: sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==}
168 | engines: {node: '>=6.9.0'}
169 | dependencies:
170 | '@babel/helper-validator-identifier': 7.16.7
171 | to-fast-properties: 2.0.0
172 |
173 | /@eslint/eslintrc/1.3.0:
174 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==}
175 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
176 | dependencies:
177 | ajv: 6.12.6
178 | debug: 4.3.4
179 | espree: 9.3.2
180 | globals: 13.15.0
181 | ignore: 5.2.0
182 | import-fresh: 3.3.0
183 | js-yaml: 4.1.0
184 | minimatch: 3.1.2
185 | strip-json-comments: 3.1.1
186 | transitivePeerDependencies:
187 | - supports-color
188 | dev: true
189 |
190 | /@humanwhocodes/config-array/0.9.5:
191 | resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==}
192 | engines: {node: '>=10.10.0'}
193 | dependencies:
194 | '@humanwhocodes/object-schema': 1.2.1
195 | debug: 4.3.4
196 | minimatch: 3.1.2
197 | transitivePeerDependencies:
198 | - supports-color
199 | dev: true
200 |
201 | /@humanwhocodes/object-schema/1.2.1:
202 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
203 | dev: true
204 |
205 | /@nodelib/fs.scandir/2.1.5:
206 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
207 | engines: {node: '>= 8'}
208 | dependencies:
209 | '@nodelib/fs.stat': 2.0.5
210 | run-parallel: 1.2.0
211 | dev: true
212 |
213 | /@nodelib/fs.stat/2.0.5:
214 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
215 | engines: {node: '>= 8'}
216 | dev: true
217 |
218 | /@nodelib/fs.walk/1.2.8:
219 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
220 | engines: {node: '>= 8'}
221 | dependencies:
222 | '@nodelib/fs.scandir': 2.1.5
223 | fastq: 1.13.0
224 | dev: true
225 |
226 | /@rollup/pluginutils/4.2.1:
227 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
228 | engines: {node: '>= 8.0.0'}
229 | dependencies:
230 | estree-walker: 2.0.2
231 | picomatch: 2.3.1
232 | dev: true
233 |
234 | /@types/json-schema/7.0.11:
235 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
236 | dev: true
237 |
238 | /@types/node/17.0.35:
239 | resolution: {integrity: sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==}
240 | dev: true
241 |
242 | /@typescript-eslint/eslint-plugin/5.26.0_hzuh7e2up357pvq3mkokjvu2lq:
243 | resolution: {integrity: sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==}
244 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
245 | peerDependencies:
246 | '@typescript-eslint/parser': ^5.0.0
247 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
248 | typescript: '*'
249 | peerDependenciesMeta:
250 | typescript:
251 | optional: true
252 | dependencies:
253 | '@typescript-eslint/parser': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
254 | '@typescript-eslint/scope-manager': 5.26.0
255 | '@typescript-eslint/type-utils': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
256 | '@typescript-eslint/utils': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
257 | debug: 4.3.4
258 | eslint: 8.16.0
259 | functional-red-black-tree: 1.0.1
260 | ignore: 5.2.0
261 | regexpp: 3.2.0
262 | semver: 7.3.7
263 | tsutils: 3.21.0_typescript@4.7.2
264 | typescript: 4.7.2
265 | transitivePeerDependencies:
266 | - supports-color
267 | dev: true
268 |
269 | /@typescript-eslint/parser/5.26.0_xztl6dhthcahlo6akmb2bmjmle:
270 | resolution: {integrity: sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==}
271 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
272 | peerDependencies:
273 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
274 | typescript: '*'
275 | peerDependenciesMeta:
276 | typescript:
277 | optional: true
278 | dependencies:
279 | '@typescript-eslint/scope-manager': 5.26.0
280 | '@typescript-eslint/types': 5.26.0
281 | '@typescript-eslint/typescript-estree': 5.26.0_typescript@4.7.2
282 | debug: 4.3.4
283 | eslint: 8.16.0
284 | typescript: 4.7.2
285 | transitivePeerDependencies:
286 | - supports-color
287 | dev: true
288 |
289 | /@typescript-eslint/scope-manager/5.26.0:
290 | resolution: {integrity: sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==}
291 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
292 | dependencies:
293 | '@typescript-eslint/types': 5.26.0
294 | '@typescript-eslint/visitor-keys': 5.26.0
295 | dev: true
296 |
297 | /@typescript-eslint/type-utils/5.26.0_xztl6dhthcahlo6akmb2bmjmle:
298 | resolution: {integrity: sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==}
299 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
300 | peerDependencies:
301 | eslint: '*'
302 | typescript: '*'
303 | peerDependenciesMeta:
304 | typescript:
305 | optional: true
306 | dependencies:
307 | '@typescript-eslint/utils': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
308 | debug: 4.3.4
309 | eslint: 8.16.0
310 | tsutils: 3.21.0_typescript@4.7.2
311 | typescript: 4.7.2
312 | transitivePeerDependencies:
313 | - supports-color
314 | dev: true
315 |
316 | /@typescript-eslint/types/5.26.0:
317 | resolution: {integrity: sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==}
318 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
319 | dev: true
320 |
321 | /@typescript-eslint/typescript-estree/5.26.0_typescript@4.7.2:
322 | resolution: {integrity: sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==}
323 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
324 | peerDependencies:
325 | typescript: '*'
326 | peerDependenciesMeta:
327 | typescript:
328 | optional: true
329 | dependencies:
330 | '@typescript-eslint/types': 5.26.0
331 | '@typescript-eslint/visitor-keys': 5.26.0
332 | debug: 4.3.4
333 | globby: 11.1.0
334 | is-glob: 4.0.3
335 | semver: 7.3.7
336 | tsutils: 3.21.0_typescript@4.7.2
337 | typescript: 4.7.2
338 | transitivePeerDependencies:
339 | - supports-color
340 | dev: true
341 |
342 | /@typescript-eslint/utils/5.26.0_xztl6dhthcahlo6akmb2bmjmle:
343 | resolution: {integrity: sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==}
344 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
345 | peerDependencies:
346 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
347 | dependencies:
348 | '@types/json-schema': 7.0.11
349 | '@typescript-eslint/scope-manager': 5.26.0
350 | '@typescript-eslint/types': 5.26.0
351 | '@typescript-eslint/typescript-estree': 5.26.0_typescript@4.7.2
352 | eslint: 8.16.0
353 | eslint-scope: 5.1.1
354 | eslint-utils: 3.0.0_eslint@8.16.0
355 | transitivePeerDependencies:
356 | - supports-color
357 | - typescript
358 | dev: true
359 |
360 | /@typescript-eslint/visitor-keys/5.26.0:
361 | resolution: {integrity: sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==}
362 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
363 | dependencies:
364 | '@typescript-eslint/types': 5.26.0
365 | eslint-visitor-keys: 3.3.0
366 | dev: true
367 |
368 | /@vitejs/plugin-vue/2.3.3_vite@2.9.9+vue@3.2.36:
369 | resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
370 | engines: {node: '>=12.0.0'}
371 | peerDependencies:
372 | vite: ^2.5.10
373 | vue: ^3.2.25
374 | dependencies:
375 | vite: 2.9.9_sass@1.52.1
376 | vue: 3.2.36
377 | dev: true
378 |
379 | /@volar/code-gen/0.34.16:
380 | resolution: {integrity: sha512-ep5us1iF66WlwzCFjTHMIdULIHzu6661228NknkSBGEAh878GPO+AgUqyQn9tY+al0KrsLuDRQVt6pwmeLoqwQ==}
381 | dependencies:
382 | '@volar/source-map': 0.34.16
383 | dev: true
384 |
385 | /@volar/source-map/0.34.16:
386 | resolution: {integrity: sha512-50F1XWcVRzKVXqwO7J39hZ4qd/htzHj62dsywz7FfhZZSOaQ43XT3uEy7cBAVgw7gs+qChFaUJAhM1iHb0FyOQ==}
387 | dev: true
388 |
389 | /@volar/vue-code-gen/0.34.16:
390 | resolution: {integrity: sha512-R8OGn26pCQsctXLa6mZi3BIkyXemcrhibTRGrVh1z2TqWMtnCIT/NiAYXR7kAH4UzFEpglOJAIxrjwnodJ7x6w==}
391 | dependencies:
392 | '@volar/code-gen': 0.34.16
393 | '@volar/source-map': 0.34.16
394 | '@vue/compiler-core': 3.2.36
395 | '@vue/compiler-dom': 3.2.36
396 | '@vue/shared': 3.2.36
397 | dev: true
398 |
399 | /@volar/vue-typescript/0.34.16:
400 | resolution: {integrity: sha512-Jmo19pKRJAIhbAmr/1974knqKws9FZlnYWuCDvvg9wimKHTFosjDhDysORIMVHZ97og/0idK70iIKbcsyDadvw==}
401 | dependencies:
402 | '@volar/code-gen': 0.34.16
403 | '@volar/source-map': 0.34.16
404 | '@volar/vue-code-gen': 0.34.16
405 | '@vue/compiler-sfc': 3.2.36
406 | '@vue/reactivity': 3.2.36
407 | dev: true
408 |
409 | /@vue/compiler-core/3.2.36:
410 | resolution: {integrity: sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==}
411 | dependencies:
412 | '@babel/parser': 7.18.0
413 | '@vue/shared': 3.2.36
414 | estree-walker: 2.0.2
415 | source-map: 0.6.1
416 |
417 | /@vue/compiler-dom/3.2.36:
418 | resolution: {integrity: sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==}
419 | dependencies:
420 | '@vue/compiler-core': 3.2.36
421 | '@vue/shared': 3.2.36
422 |
423 | /@vue/compiler-sfc/3.2.36:
424 | resolution: {integrity: sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA==}
425 | dependencies:
426 | '@babel/parser': 7.18.0
427 | '@vue/compiler-core': 3.2.36
428 | '@vue/compiler-dom': 3.2.36
429 | '@vue/compiler-ssr': 3.2.36
430 | '@vue/reactivity-transform': 3.2.36
431 | '@vue/shared': 3.2.36
432 | estree-walker: 2.0.2
433 | magic-string: 0.25.9
434 | postcss: 8.4.14
435 | source-map: 0.6.1
436 |
437 | /@vue/compiler-ssr/3.2.36:
438 | resolution: {integrity: sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==}
439 | dependencies:
440 | '@vue/compiler-dom': 3.2.36
441 | '@vue/shared': 3.2.36
442 |
443 | /@vue/devtools-api/6.1.4:
444 | resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==}
445 | dev: false
446 |
447 | /@vue/eslint-config-prettier/7.0.0_yzlwycfcjzj3trzruaflx2c53m:
448 | resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==}
449 | peerDependencies:
450 | eslint: '>= 7.28.0'
451 | prettier: '>= 2.0.0'
452 | dependencies:
453 | eslint: 8.16.0
454 | eslint-config-prettier: 8.5.0_eslint@8.16.0
455 | eslint-plugin-prettier: 4.0.0_j7rsahgqtkecno6yauhsgsglf4
456 | prettier: 2.6.2
457 | dev: true
458 |
459 | /@vue/eslint-config-typescript/10.0.0_lgr7dxlaj7q4ptuy6cz7mqitfi:
460 | resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==}
461 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
462 | peerDependencies:
463 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
464 | eslint-plugin-vue: ^8.0.1
465 | typescript: '*'
466 | peerDependenciesMeta:
467 | typescript:
468 | optional: true
469 | dependencies:
470 | '@typescript-eslint/eslint-plugin': 5.26.0_hzuh7e2up357pvq3mkokjvu2lq
471 | '@typescript-eslint/parser': 5.26.0_xztl6dhthcahlo6akmb2bmjmle
472 | eslint: 8.16.0
473 | eslint-plugin-vue: 9.0.1_eslint@8.16.0
474 | typescript: 4.7.2
475 | vue-eslint-parser: 8.3.0_eslint@8.16.0
476 | transitivePeerDependencies:
477 | - supports-color
478 | dev: true
479 |
480 | /@vue/reactivity-transform/3.2.36:
481 | resolution: {integrity: sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA==}
482 | dependencies:
483 | '@babel/parser': 7.18.0
484 | '@vue/compiler-core': 3.2.36
485 | '@vue/shared': 3.2.36
486 | estree-walker: 2.0.2
487 | magic-string: 0.25.9
488 |
489 | /@vue/reactivity/3.2.36:
490 | resolution: {integrity: sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA==}
491 | dependencies:
492 | '@vue/shared': 3.2.36
493 |
494 | /@vue/runtime-core/3.2.36:
495 | resolution: {integrity: sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ==}
496 | dependencies:
497 | '@vue/reactivity': 3.2.36
498 | '@vue/shared': 3.2.36
499 |
500 | /@vue/runtime-dom/3.2.36:
501 | resolution: {integrity: sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg==}
502 | dependencies:
503 | '@vue/runtime-core': 3.2.36
504 | '@vue/shared': 3.2.36
505 | csstype: 2.6.20
506 |
507 | /@vue/server-renderer/3.2.36_vue@3.2.36:
508 | resolution: {integrity: sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg==}
509 | peerDependencies:
510 | vue: 3.2.36
511 | dependencies:
512 | '@vue/compiler-ssr': 3.2.36
513 | '@vue/shared': 3.2.36
514 | vue: 3.2.36
515 |
516 | /@vue/shared/3.2.36:
517 | resolution: {integrity: sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==}
518 |
519 | /@vue/tsconfig/0.1.3_@types+node@17.0.35:
520 | resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==}
521 | peerDependencies:
522 | '@types/node': '*'
523 | peerDependenciesMeta:
524 | '@types/node':
525 | optional: true
526 | dependencies:
527 | '@types/node': 17.0.35
528 | dev: true
529 |
530 | /acorn-jsx/5.3.2_acorn@8.7.1:
531 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
532 | peerDependencies:
533 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
534 | dependencies:
535 | acorn: 8.7.1
536 | dev: true
537 |
538 | /acorn/8.7.1:
539 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
540 | engines: {node: '>=0.4.0'}
541 | hasBin: true
542 | dev: true
543 |
544 | /ajv/6.12.6:
545 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
546 | dependencies:
547 | fast-deep-equal: 3.1.3
548 | fast-json-stable-stringify: 2.1.0
549 | json-schema-traverse: 0.4.1
550 | uri-js: 4.4.1
551 | dev: true
552 |
553 | /ansi-regex/5.0.1:
554 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
555 | engines: {node: '>=8'}
556 | dev: true
557 |
558 | /ansi-styles/4.3.0:
559 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
560 | engines: {node: '>=8'}
561 | dependencies:
562 | color-convert: 2.0.1
563 | dev: true
564 |
565 | /anymatch/3.1.2:
566 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
567 | engines: {node: '>= 8'}
568 | dependencies:
569 | normalize-path: 3.0.0
570 | picomatch: 2.3.1
571 |
572 | /argparse/2.0.1:
573 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
574 | dev: true
575 |
576 | /array-union/2.1.0:
577 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
578 | engines: {node: '>=8'}
579 | dev: true
580 |
581 | /balanced-match/1.0.2:
582 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
583 | dev: true
584 |
585 | /binary-extensions/2.2.0:
586 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
587 | engines: {node: '>=8'}
588 |
589 | /boolbase/1.0.0:
590 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
591 | dev: true
592 |
593 | /brace-expansion/1.1.11:
594 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
595 | dependencies:
596 | balanced-match: 1.0.2
597 | concat-map: 0.0.1
598 | dev: true
599 |
600 | /brace-expansion/2.0.1:
601 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
602 | dependencies:
603 | balanced-match: 1.0.2
604 | dev: true
605 |
606 | /braces/3.0.2:
607 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
608 | engines: {node: '>=8'}
609 | dependencies:
610 | fill-range: 7.0.1
611 |
612 | /callsites/3.1.0:
613 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
614 | engines: {node: '>=6'}
615 | dev: true
616 |
617 | /chalk/4.1.2:
618 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
619 | engines: {node: '>=10'}
620 | dependencies:
621 | ansi-styles: 4.3.0
622 | supports-color: 7.2.0
623 | dev: true
624 |
625 | /chokidar/3.5.3:
626 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
627 | engines: {node: '>= 8.10.0'}
628 | dependencies:
629 | anymatch: 3.1.2
630 | braces: 3.0.2
631 | glob-parent: 5.1.2
632 | is-binary-path: 2.1.0
633 | is-glob: 4.0.3
634 | normalize-path: 3.0.0
635 | readdirp: 3.6.0
636 | optionalDependencies:
637 | fsevents: 2.3.2
638 |
639 | /color-convert/2.0.1:
640 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
641 | engines: {node: '>=7.0.0'}
642 | dependencies:
643 | color-name: 1.1.4
644 | dev: true
645 |
646 | /color-name/1.1.4:
647 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
648 | dev: true
649 |
650 | /concat-map/0.0.1:
651 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
652 | dev: true
653 |
654 | /cross-spawn/7.0.3:
655 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
656 | engines: {node: '>= 8'}
657 | dependencies:
658 | path-key: 3.1.1
659 | shebang-command: 2.0.0
660 | which: 2.0.2
661 | dev: true
662 |
663 | /cssesc/3.0.0:
664 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
665 | engines: {node: '>=4'}
666 | hasBin: true
667 | dev: true
668 |
669 | /csstype/2.6.20:
670 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==}
671 |
672 | /debug/4.3.4:
673 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
674 | engines: {node: '>=6.0'}
675 | peerDependencies:
676 | supports-color: '*'
677 | peerDependenciesMeta:
678 | supports-color:
679 | optional: true
680 | dependencies:
681 | ms: 2.1.2
682 | dev: true
683 |
684 | /deep-is/0.1.4:
685 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
686 | dev: true
687 |
688 | /dir-glob/3.0.1:
689 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
690 | engines: {node: '>=8'}
691 | dependencies:
692 | path-type: 4.0.0
693 | dev: true
694 |
695 | /doctrine/3.0.0:
696 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
697 | engines: {node: '>=6.0.0'}
698 | dependencies:
699 | esutils: 2.0.3
700 | dev: true
701 |
702 | /esbuild-android-64/0.14.39:
703 | resolution: {integrity: sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==}
704 | engines: {node: '>=12'}
705 | cpu: [x64]
706 | os: [android]
707 | requiresBuild: true
708 | dev: true
709 | optional: true
710 |
711 | /esbuild-android-arm64/0.14.39:
712 | resolution: {integrity: sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==}
713 | engines: {node: '>=12'}
714 | cpu: [arm64]
715 | os: [android]
716 | requiresBuild: true
717 | dev: true
718 | optional: true
719 |
720 | /esbuild-darwin-64/0.14.39:
721 | resolution: {integrity: sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==}
722 | engines: {node: '>=12'}
723 | cpu: [x64]
724 | os: [darwin]
725 | requiresBuild: true
726 | dev: true
727 | optional: true
728 |
729 | /esbuild-darwin-arm64/0.14.39:
730 | resolution: {integrity: sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==}
731 | engines: {node: '>=12'}
732 | cpu: [arm64]
733 | os: [darwin]
734 | requiresBuild: true
735 | dev: true
736 | optional: true
737 |
738 | /esbuild-freebsd-64/0.14.39:
739 | resolution: {integrity: sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==}
740 | engines: {node: '>=12'}
741 | cpu: [x64]
742 | os: [freebsd]
743 | requiresBuild: true
744 | dev: true
745 | optional: true
746 |
747 | /esbuild-freebsd-arm64/0.14.39:
748 | resolution: {integrity: sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==}
749 | engines: {node: '>=12'}
750 | cpu: [arm64]
751 | os: [freebsd]
752 | requiresBuild: true
753 | dev: true
754 | optional: true
755 |
756 | /esbuild-linux-32/0.14.39:
757 | resolution: {integrity: sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==}
758 | engines: {node: '>=12'}
759 | cpu: [ia32]
760 | os: [linux]
761 | requiresBuild: true
762 | dev: true
763 | optional: true
764 |
765 | /esbuild-linux-64/0.14.39:
766 | resolution: {integrity: sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==}
767 | engines: {node: '>=12'}
768 | cpu: [x64]
769 | os: [linux]
770 | requiresBuild: true
771 | dev: true
772 | optional: true
773 |
774 | /esbuild-linux-arm/0.14.39:
775 | resolution: {integrity: sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==}
776 | engines: {node: '>=12'}
777 | cpu: [arm]
778 | os: [linux]
779 | requiresBuild: true
780 | dev: true
781 | optional: true
782 |
783 | /esbuild-linux-arm64/0.14.39:
784 | resolution: {integrity: sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==}
785 | engines: {node: '>=12'}
786 | cpu: [arm64]
787 | os: [linux]
788 | requiresBuild: true
789 | dev: true
790 | optional: true
791 |
792 | /esbuild-linux-mips64le/0.14.39:
793 | resolution: {integrity: sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==}
794 | engines: {node: '>=12'}
795 | cpu: [mips64el]
796 | os: [linux]
797 | requiresBuild: true
798 | dev: true
799 | optional: true
800 |
801 | /esbuild-linux-ppc64le/0.14.39:
802 | resolution: {integrity: sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==}
803 | engines: {node: '>=12'}
804 | cpu: [ppc64]
805 | os: [linux]
806 | requiresBuild: true
807 | dev: true
808 | optional: true
809 |
810 | /esbuild-linux-riscv64/0.14.39:
811 | resolution: {integrity: sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==}
812 | engines: {node: '>=12'}
813 | cpu: [riscv64]
814 | os: [linux]
815 | requiresBuild: true
816 | dev: true
817 | optional: true
818 |
819 | /esbuild-linux-s390x/0.14.39:
820 | resolution: {integrity: sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==}
821 | engines: {node: '>=12'}
822 | cpu: [s390x]
823 | os: [linux]
824 | requiresBuild: true
825 | dev: true
826 | optional: true
827 |
828 | /esbuild-netbsd-64/0.14.39:
829 | resolution: {integrity: sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==}
830 | engines: {node: '>=12'}
831 | cpu: [x64]
832 | os: [netbsd]
833 | requiresBuild: true
834 | dev: true
835 | optional: true
836 |
837 | /esbuild-openbsd-64/0.14.39:
838 | resolution: {integrity: sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==}
839 | engines: {node: '>=12'}
840 | cpu: [x64]
841 | os: [openbsd]
842 | requiresBuild: true
843 | dev: true
844 | optional: true
845 |
846 | /esbuild-sunos-64/0.14.39:
847 | resolution: {integrity: sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==}
848 | engines: {node: '>=12'}
849 | cpu: [x64]
850 | os: [sunos]
851 | requiresBuild: true
852 | dev: true
853 | optional: true
854 |
855 | /esbuild-windows-32/0.14.39:
856 | resolution: {integrity: sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==}
857 | engines: {node: '>=12'}
858 | cpu: [ia32]
859 | os: [win32]
860 | requiresBuild: true
861 | dev: true
862 | optional: true
863 |
864 | /esbuild-windows-64/0.14.39:
865 | resolution: {integrity: sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==}
866 | engines: {node: '>=12'}
867 | cpu: [x64]
868 | os: [win32]
869 | requiresBuild: true
870 | dev: true
871 | optional: true
872 |
873 | /esbuild-windows-arm64/0.14.39:
874 | resolution: {integrity: sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==}
875 | engines: {node: '>=12'}
876 | cpu: [arm64]
877 | os: [win32]
878 | requiresBuild: true
879 | dev: true
880 | optional: true
881 |
882 | /esbuild/0.14.39:
883 | resolution: {integrity: sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==}
884 | engines: {node: '>=12'}
885 | hasBin: true
886 | requiresBuild: true
887 | optionalDependencies:
888 | esbuild-android-64: 0.14.39
889 | esbuild-android-arm64: 0.14.39
890 | esbuild-darwin-64: 0.14.39
891 | esbuild-darwin-arm64: 0.14.39
892 | esbuild-freebsd-64: 0.14.39
893 | esbuild-freebsd-arm64: 0.14.39
894 | esbuild-linux-32: 0.14.39
895 | esbuild-linux-64: 0.14.39
896 | esbuild-linux-arm: 0.14.39
897 | esbuild-linux-arm64: 0.14.39
898 | esbuild-linux-mips64le: 0.14.39
899 | esbuild-linux-ppc64le: 0.14.39
900 | esbuild-linux-riscv64: 0.14.39
901 | esbuild-linux-s390x: 0.14.39
902 | esbuild-netbsd-64: 0.14.39
903 | esbuild-openbsd-64: 0.14.39
904 | esbuild-sunos-64: 0.14.39
905 | esbuild-windows-32: 0.14.39
906 | esbuild-windows-64: 0.14.39
907 | esbuild-windows-arm64: 0.14.39
908 | dev: true
909 |
910 | /escape-string-regexp/4.0.0:
911 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
912 | engines: {node: '>=10'}
913 | dev: true
914 |
915 | /eslint-config-prettier/8.5.0_eslint@8.16.0:
916 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
917 | hasBin: true
918 | peerDependencies:
919 | eslint: '>=7.0.0'
920 | dependencies:
921 | eslint: 8.16.0
922 | dev: true
923 |
924 | /eslint-plugin-prettier/4.0.0_j7rsahgqtkecno6yauhsgsglf4:
925 | resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==}
926 | engines: {node: '>=6.0.0'}
927 | peerDependencies:
928 | eslint: '>=7.28.0'
929 | eslint-config-prettier: '*'
930 | prettier: '>=2.0.0'
931 | peerDependenciesMeta:
932 | eslint-config-prettier:
933 | optional: true
934 | dependencies:
935 | eslint: 8.16.0
936 | eslint-config-prettier: 8.5.0_eslint@8.16.0
937 | prettier: 2.6.2
938 | prettier-linter-helpers: 1.0.0
939 | dev: true
940 |
941 | /eslint-plugin-prettier/4.0.0_yzlwycfcjzj3trzruaflx2c53m:
942 | resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==}
943 | engines: {node: '>=6.0.0'}
944 | peerDependencies:
945 | eslint: '>=7.28.0'
946 | eslint-config-prettier: '*'
947 | prettier: '>=2.0.0'
948 | peerDependenciesMeta:
949 | eslint-config-prettier:
950 | optional: true
951 | dependencies:
952 | eslint: 8.16.0
953 | prettier: 2.6.2
954 | prettier-linter-helpers: 1.0.0
955 | dev: true
956 |
957 | /eslint-plugin-vue/9.0.1_eslint@8.16.0:
958 | resolution: {integrity: sha512-/w/9/vzz+4bSYtp5UqXgJ0CfycXTMtpp6lkz7/fMp0CcJxPWyRP6Pr88ihhrsNEcVt2ZweMupWRNYa+5Md41LQ==}
959 | engines: {node: ^14.17.0 || >=16.0.0}
960 | peerDependencies:
961 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
962 | dependencies:
963 | eslint: 8.16.0
964 | eslint-utils: 3.0.0_eslint@8.16.0
965 | natural-compare: 1.4.0
966 | nth-check: 2.1.1
967 | postcss-selector-parser: 6.0.10
968 | semver: 7.3.7
969 | vue-eslint-parser: 9.0.2_eslint@8.16.0
970 | xml-name-validator: 4.0.0
971 | transitivePeerDependencies:
972 | - supports-color
973 | dev: true
974 |
975 | /eslint-scope/5.1.1:
976 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
977 | engines: {node: '>=8.0.0'}
978 | dependencies:
979 | esrecurse: 4.3.0
980 | estraverse: 4.3.0
981 | dev: true
982 |
983 | /eslint-scope/7.1.1:
984 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
985 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
986 | dependencies:
987 | esrecurse: 4.3.0
988 | estraverse: 5.3.0
989 | dev: true
990 |
991 | /eslint-utils/3.0.0_eslint@8.16.0:
992 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
993 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
994 | peerDependencies:
995 | eslint: '>=5'
996 | dependencies:
997 | eslint: 8.16.0
998 | eslint-visitor-keys: 2.1.0
999 | dev: true
1000 |
1001 | /eslint-visitor-keys/2.1.0:
1002 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
1003 | engines: {node: '>=10'}
1004 | dev: true
1005 |
1006 | /eslint-visitor-keys/3.3.0:
1007 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
1008 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1009 | dev: true
1010 |
1011 | /eslint/8.16.0:
1012 | resolution: {integrity: sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==}
1013 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1014 | hasBin: true
1015 | dependencies:
1016 | '@eslint/eslintrc': 1.3.0
1017 | '@humanwhocodes/config-array': 0.9.5
1018 | ajv: 6.12.6
1019 | chalk: 4.1.2
1020 | cross-spawn: 7.0.3
1021 | debug: 4.3.4
1022 | doctrine: 3.0.0
1023 | escape-string-regexp: 4.0.0
1024 | eslint-scope: 7.1.1
1025 | eslint-utils: 3.0.0_eslint@8.16.0
1026 | eslint-visitor-keys: 3.3.0
1027 | espree: 9.3.2
1028 | esquery: 1.4.0
1029 | esutils: 2.0.3
1030 | fast-deep-equal: 3.1.3
1031 | file-entry-cache: 6.0.1
1032 | functional-red-black-tree: 1.0.1
1033 | glob-parent: 6.0.2
1034 | globals: 13.15.0
1035 | ignore: 5.2.0
1036 | import-fresh: 3.3.0
1037 | imurmurhash: 0.1.4
1038 | is-glob: 4.0.3
1039 | js-yaml: 4.1.0
1040 | json-stable-stringify-without-jsonify: 1.0.1
1041 | levn: 0.4.1
1042 | lodash.merge: 4.6.2
1043 | minimatch: 3.1.2
1044 | natural-compare: 1.4.0
1045 | optionator: 0.9.1
1046 | regexpp: 3.2.0
1047 | strip-ansi: 6.0.1
1048 | strip-json-comments: 3.1.1
1049 | text-table: 0.2.0
1050 | v8-compile-cache: 2.3.0
1051 | transitivePeerDependencies:
1052 | - supports-color
1053 | dev: true
1054 |
1055 | /espree/9.3.2:
1056 | resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==}
1057 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1058 | dependencies:
1059 | acorn: 8.7.1
1060 | acorn-jsx: 5.3.2_acorn@8.7.1
1061 | eslint-visitor-keys: 3.3.0
1062 | dev: true
1063 |
1064 | /esquery/1.4.0:
1065 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
1066 | engines: {node: '>=0.10'}
1067 | dependencies:
1068 | estraverse: 5.3.0
1069 | dev: true
1070 |
1071 | /esrecurse/4.3.0:
1072 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1073 | engines: {node: '>=4.0'}
1074 | dependencies:
1075 | estraverse: 5.3.0
1076 | dev: true
1077 |
1078 | /estraverse/4.3.0:
1079 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1080 | engines: {node: '>=4.0'}
1081 | dev: true
1082 |
1083 | /estraverse/5.3.0:
1084 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1085 | engines: {node: '>=4.0'}
1086 | dev: true
1087 |
1088 | /estree-walker/2.0.2:
1089 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1090 |
1091 | /esutils/2.0.3:
1092 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1093 | engines: {node: '>=0.10.0'}
1094 | dev: true
1095 |
1096 | /fast-deep-equal/3.1.3:
1097 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1098 | dev: true
1099 |
1100 | /fast-diff/1.2.0:
1101 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
1102 | dev: true
1103 |
1104 | /fast-glob/3.2.11:
1105 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
1106 | engines: {node: '>=8.6.0'}
1107 | dependencies:
1108 | '@nodelib/fs.stat': 2.0.5
1109 | '@nodelib/fs.walk': 1.2.8
1110 | glob-parent: 5.1.2
1111 | merge2: 1.4.1
1112 | micromatch: 4.0.5
1113 | dev: true
1114 |
1115 | /fast-json-stable-stringify/2.1.0:
1116 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1117 | dev: true
1118 |
1119 | /fast-levenshtein/2.0.6:
1120 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=}
1121 | dev: true
1122 |
1123 | /fastq/1.13.0:
1124 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
1125 | dependencies:
1126 | reusify: 1.0.4
1127 | dev: true
1128 |
1129 | /file-entry-cache/6.0.1:
1130 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1131 | engines: {node: ^10.12.0 || >=12.0.0}
1132 | dependencies:
1133 | flat-cache: 3.0.4
1134 | dev: true
1135 |
1136 | /fill-range/7.0.1:
1137 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1138 | engines: {node: '>=8'}
1139 | dependencies:
1140 | to-regex-range: 5.0.1
1141 |
1142 | /flat-cache/3.0.4:
1143 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1144 | engines: {node: ^10.12.0 || >=12.0.0}
1145 | dependencies:
1146 | flatted: 3.2.5
1147 | rimraf: 3.0.2
1148 | dev: true
1149 |
1150 | /flatted/3.2.5:
1151 | resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==}
1152 | dev: true
1153 |
1154 | /fs.realpath/1.0.0:
1155 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
1156 | dev: true
1157 |
1158 | /fsevents/2.3.2:
1159 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1160 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1161 | os: [darwin]
1162 | requiresBuild: true
1163 | optional: true
1164 |
1165 | /function-bind/1.1.1:
1166 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1167 | dev: true
1168 |
1169 | /functional-red-black-tree/1.0.1:
1170 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=}
1171 | dev: true
1172 |
1173 | /glob-parent/5.1.2:
1174 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1175 | engines: {node: '>= 6'}
1176 | dependencies:
1177 | is-glob: 4.0.3
1178 |
1179 | /glob-parent/6.0.2:
1180 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1181 | engines: {node: '>=10.13.0'}
1182 | dependencies:
1183 | is-glob: 4.0.3
1184 | dev: true
1185 |
1186 | /glob/7.2.3:
1187 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1188 | dependencies:
1189 | fs.realpath: 1.0.0
1190 | inflight: 1.0.6
1191 | inherits: 2.0.4
1192 | minimatch: 3.1.2
1193 | once: 1.4.0
1194 | path-is-absolute: 1.0.1
1195 | dev: true
1196 |
1197 | /globals/13.15.0:
1198 | resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==}
1199 | engines: {node: '>=8'}
1200 | dependencies:
1201 | type-fest: 0.20.2
1202 | dev: true
1203 |
1204 | /globby/11.1.0:
1205 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1206 | engines: {node: '>=10'}
1207 | dependencies:
1208 | array-union: 2.1.0
1209 | dir-glob: 3.0.1
1210 | fast-glob: 3.2.11
1211 | ignore: 5.2.0
1212 | merge2: 1.4.1
1213 | slash: 3.0.0
1214 | dev: true
1215 |
1216 | /has-flag/4.0.0:
1217 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1218 | engines: {node: '>=8'}
1219 | dev: true
1220 |
1221 | /has/1.0.3:
1222 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1223 | engines: {node: '>= 0.4.0'}
1224 | dependencies:
1225 | function-bind: 1.1.1
1226 | dev: true
1227 |
1228 | /ignore/5.2.0:
1229 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
1230 | engines: {node: '>= 4'}
1231 | dev: true
1232 |
1233 | /immutable/4.1.0:
1234 | resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==}
1235 |
1236 | /import-fresh/3.3.0:
1237 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1238 | engines: {node: '>=6'}
1239 | dependencies:
1240 | parent-module: 1.0.1
1241 | resolve-from: 4.0.0
1242 | dev: true
1243 |
1244 | /imurmurhash/0.1.4:
1245 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=}
1246 | engines: {node: '>=0.8.19'}
1247 | dev: true
1248 |
1249 | /inflight/1.0.6:
1250 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
1251 | dependencies:
1252 | once: 1.4.0
1253 | wrappy: 1.0.2
1254 | dev: true
1255 |
1256 | /inherits/2.0.4:
1257 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1258 | dev: true
1259 |
1260 | /is-binary-path/2.1.0:
1261 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1262 | engines: {node: '>=8'}
1263 | dependencies:
1264 | binary-extensions: 2.2.0
1265 |
1266 | /is-core-module/2.9.0:
1267 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
1268 | dependencies:
1269 | has: 1.0.3
1270 | dev: true
1271 |
1272 | /is-extglob/2.1.1:
1273 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
1274 | engines: {node: '>=0.10.0'}
1275 |
1276 | /is-glob/4.0.3:
1277 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1278 | engines: {node: '>=0.10.0'}
1279 | dependencies:
1280 | is-extglob: 2.1.1
1281 |
1282 | /is-number/7.0.0:
1283 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1284 | engines: {node: '>=0.12.0'}
1285 |
1286 | /isexe/2.0.0:
1287 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
1288 | dev: true
1289 |
1290 | /js-yaml/4.1.0:
1291 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1292 | hasBin: true
1293 | dependencies:
1294 | argparse: 2.0.1
1295 | dev: true
1296 |
1297 | /json-schema-traverse/0.4.1:
1298 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1299 | dev: true
1300 |
1301 | /json-stable-stringify-without-jsonify/1.0.1:
1302 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=}
1303 | dev: true
1304 |
1305 | /levn/0.4.1:
1306 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1307 | engines: {node: '>= 0.8.0'}
1308 | dependencies:
1309 | prelude-ls: 1.2.1
1310 | type-check: 0.4.0
1311 | dev: true
1312 |
1313 | /local-pkg/0.4.1:
1314 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
1315 | engines: {node: '>=14'}
1316 | dev: true
1317 |
1318 | /lodash.merge/4.6.2:
1319 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1320 | dev: true
1321 |
1322 | /lodash/4.17.21:
1323 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1324 | dev: true
1325 |
1326 | /lru-cache/6.0.0:
1327 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1328 | engines: {node: '>=10'}
1329 | dependencies:
1330 | yallist: 4.0.0
1331 | dev: true
1332 |
1333 | /magic-string/0.25.9:
1334 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
1335 | dependencies:
1336 | sourcemap-codec: 1.4.8
1337 |
1338 | /magic-string/0.26.2:
1339 | resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==}
1340 | engines: {node: '>=12'}
1341 | dependencies:
1342 | sourcemap-codec: 1.4.8
1343 | dev: true
1344 |
1345 | /merge2/1.4.1:
1346 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1347 | engines: {node: '>= 8'}
1348 | dev: true
1349 |
1350 | /micromatch/4.0.5:
1351 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1352 | engines: {node: '>=8.6'}
1353 | dependencies:
1354 | braces: 3.0.2
1355 | picomatch: 2.3.1
1356 | dev: true
1357 |
1358 | /minimatch/3.1.2:
1359 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1360 | dependencies:
1361 | brace-expansion: 1.1.11
1362 | dev: true
1363 |
1364 | /minimatch/5.1.0:
1365 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
1366 | engines: {node: '>=10'}
1367 | dependencies:
1368 | brace-expansion: 2.0.1
1369 | dev: true
1370 |
1371 | /ms/2.1.2:
1372 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1373 | dev: true
1374 |
1375 | /nanoid/3.3.4:
1376 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
1377 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1378 | hasBin: true
1379 |
1380 | /natural-compare/1.4.0:
1381 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
1382 | dev: true
1383 |
1384 | /normalize-path/3.0.0:
1385 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1386 | engines: {node: '>=0.10.0'}
1387 |
1388 | /nth-check/2.1.1:
1389 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
1390 | dependencies:
1391 | boolbase: 1.0.0
1392 | dev: true
1393 |
1394 | /once/1.4.0:
1395 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
1396 | dependencies:
1397 | wrappy: 1.0.2
1398 | dev: true
1399 |
1400 | /optionator/0.9.1:
1401 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
1402 | engines: {node: '>= 0.8.0'}
1403 | dependencies:
1404 | deep-is: 0.1.4
1405 | fast-levenshtein: 2.0.6
1406 | levn: 0.4.1
1407 | prelude-ls: 1.2.1
1408 | type-check: 0.4.0
1409 | word-wrap: 1.2.3
1410 | dev: true
1411 |
1412 | /parent-module/1.0.1:
1413 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1414 | engines: {node: '>=6'}
1415 | dependencies:
1416 | callsites: 3.1.0
1417 | dev: true
1418 |
1419 | /path-is-absolute/1.0.1:
1420 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
1421 | engines: {node: '>=0.10.0'}
1422 | dev: true
1423 |
1424 | /path-key/3.1.1:
1425 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1426 | engines: {node: '>=8'}
1427 | dev: true
1428 |
1429 | /path-parse/1.0.7:
1430 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1431 | dev: true
1432 |
1433 | /path-type/4.0.0:
1434 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1435 | engines: {node: '>=8'}
1436 | dev: true
1437 |
1438 | /picocolors/1.0.0:
1439 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1440 |
1441 | /picomatch/2.3.1:
1442 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1443 | engines: {node: '>=8.6'}
1444 |
1445 | /pnpm/7.1.6:
1446 | resolution: {integrity: sha512-ZReCitIDPkdJ8DcKqJ2CLvl7FhwOJiDiTN1c5ElaxmCvivptJaRIDd3IDTnydDhVUWk1rtaP5/mK6oktD5WH9A==}
1447 | engines: {node: '>=14.19'}
1448 | hasBin: true
1449 | dev: true
1450 |
1451 | /postcss-selector-parser/6.0.10:
1452 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
1453 | engines: {node: '>=4'}
1454 | dependencies:
1455 | cssesc: 3.0.0
1456 | util-deprecate: 1.0.2
1457 | dev: true
1458 |
1459 | /postcss/8.4.14:
1460 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
1461 | engines: {node: ^10 || ^12 || >=14}
1462 | dependencies:
1463 | nanoid: 3.3.4
1464 | picocolors: 1.0.0
1465 | source-map-js: 1.0.2
1466 |
1467 | /prelude-ls/1.2.1:
1468 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1469 | engines: {node: '>= 0.8.0'}
1470 | dev: true
1471 |
1472 | /prettier-linter-helpers/1.0.0:
1473 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1474 | engines: {node: '>=6.0.0'}
1475 | dependencies:
1476 | fast-diff: 1.2.0
1477 | dev: true
1478 |
1479 | /prettier/2.6.2:
1480 | resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==}
1481 | engines: {node: '>=10.13.0'}
1482 | hasBin: true
1483 | dev: true
1484 |
1485 | /punycode/2.1.1:
1486 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
1487 | engines: {node: '>=6'}
1488 | dev: true
1489 |
1490 | /queue-microtask/1.2.3:
1491 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1492 | dev: true
1493 |
1494 | /readdirp/3.6.0:
1495 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1496 | engines: {node: '>=8.10.0'}
1497 | dependencies:
1498 | picomatch: 2.3.1
1499 |
1500 | /regexpp/3.2.0:
1501 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
1502 | engines: {node: '>=8'}
1503 | dev: true
1504 |
1505 | /resolve-from/4.0.0:
1506 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1507 | engines: {node: '>=4'}
1508 | dev: true
1509 |
1510 | /resolve/1.22.0:
1511 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
1512 | hasBin: true
1513 | dependencies:
1514 | is-core-module: 2.9.0
1515 | path-parse: 1.0.7
1516 | supports-preserve-symlinks-flag: 1.0.0
1517 | dev: true
1518 |
1519 | /reusify/1.0.4:
1520 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1521 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1522 | dev: true
1523 |
1524 | /rimraf/3.0.2:
1525 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1526 | hasBin: true
1527 | dependencies:
1528 | glob: 7.2.3
1529 | dev: true
1530 |
1531 | /rollup/2.74.1:
1532 | resolution: {integrity: sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==}
1533 | engines: {node: '>=10.0.0'}
1534 | hasBin: true
1535 | optionalDependencies:
1536 | fsevents: 2.3.2
1537 | dev: true
1538 |
1539 | /run-parallel/1.2.0:
1540 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1541 | dependencies:
1542 | queue-microtask: 1.2.3
1543 | dev: true
1544 |
1545 | /sass/1.52.1:
1546 | resolution: {integrity: sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==}
1547 | engines: {node: '>=12.0.0'}
1548 | hasBin: true
1549 | dependencies:
1550 | chokidar: 3.5.3
1551 | immutable: 4.1.0
1552 | source-map-js: 1.0.2
1553 |
1554 | /semver/7.3.7:
1555 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
1556 | engines: {node: '>=10'}
1557 | hasBin: true
1558 | dependencies:
1559 | lru-cache: 6.0.0
1560 | dev: true
1561 |
1562 | /shebang-command/2.0.0:
1563 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1564 | engines: {node: '>=8'}
1565 | dependencies:
1566 | shebang-regex: 3.0.0
1567 | dev: true
1568 |
1569 | /shebang-regex/3.0.0:
1570 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1571 | engines: {node: '>=8'}
1572 | dev: true
1573 |
1574 | /slash/3.0.0:
1575 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1576 | engines: {node: '>=8'}
1577 | dev: true
1578 |
1579 | /source-map-js/1.0.2:
1580 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1581 | engines: {node: '>=0.10.0'}
1582 |
1583 | /source-map/0.6.1:
1584 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1585 | engines: {node: '>=0.10.0'}
1586 |
1587 | /sourcemap-codec/1.4.8:
1588 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1589 |
1590 | /strip-ansi/6.0.1:
1591 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1592 | engines: {node: '>=8'}
1593 | dependencies:
1594 | ansi-regex: 5.0.1
1595 | dev: true
1596 |
1597 | /strip-json-comments/3.1.1:
1598 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1599 | engines: {node: '>=8'}
1600 | dev: true
1601 |
1602 | /supports-color/7.2.0:
1603 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1604 | engines: {node: '>=8'}
1605 | dependencies:
1606 | has-flag: 4.0.0
1607 | dev: true
1608 |
1609 | /supports-preserve-symlinks-flag/1.0.0:
1610 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1611 | engines: {node: '>= 0.4'}
1612 | dev: true
1613 |
1614 | /text-table/0.2.0:
1615 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
1616 | dev: true
1617 |
1618 | /to-fast-properties/2.0.0:
1619 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
1620 | engines: {node: '>=4'}
1621 |
1622 | /to-regex-range/5.0.1:
1623 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1624 | engines: {node: '>=8.0'}
1625 | dependencies:
1626 | is-number: 7.0.0
1627 |
1628 | /tslib/1.14.1:
1629 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
1630 | dev: true
1631 |
1632 | /tsutils/3.21.0_typescript@4.7.2:
1633 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
1634 | engines: {node: '>= 6'}
1635 | peerDependencies:
1636 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
1637 | dependencies:
1638 | tslib: 1.14.1
1639 | typescript: 4.7.2
1640 | dev: true
1641 |
1642 | /type-check/0.4.0:
1643 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1644 | engines: {node: '>= 0.8.0'}
1645 | dependencies:
1646 | prelude-ls: 1.2.1
1647 | dev: true
1648 |
1649 | /type-fest/0.20.2:
1650 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1651 | engines: {node: '>=10'}
1652 | dev: true
1653 |
1654 | /typescript/4.7.2:
1655 | resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==}
1656 | engines: {node: '>=4.2.0'}
1657 | hasBin: true
1658 | dev: true
1659 |
1660 | /unplugin-vue-components/0.19.6_vite@2.9.9+vue@3.2.36:
1661 | resolution: {integrity: sha512-APvrJ9Hpid1MLT0G4PWerMJgARhNw6dzz0pcCwCxaO2DR7VyvDacMqjOQNC6ukq7FSw3wzD8VH+9i3EFXwkGmw==}
1662 | engines: {node: '>=14'}
1663 | peerDependencies:
1664 | '@babel/parser': ^7.15.8
1665 | '@babel/traverse': ^7.15.4
1666 | vue: 2 || 3
1667 | peerDependenciesMeta:
1668 | '@babel/parser':
1669 | optional: true
1670 | '@babel/traverse':
1671 | optional: true
1672 | dependencies:
1673 | '@antfu/utils': 0.5.2
1674 | '@rollup/pluginutils': 4.2.1
1675 | chokidar: 3.5.3
1676 | debug: 4.3.4
1677 | fast-glob: 3.2.11
1678 | local-pkg: 0.4.1
1679 | magic-string: 0.26.2
1680 | minimatch: 5.1.0
1681 | resolve: 1.22.0
1682 | unplugin: 0.6.3_vite@2.9.9
1683 | vue: 3.2.36
1684 | transitivePeerDependencies:
1685 | - esbuild
1686 | - rollup
1687 | - supports-color
1688 | - vite
1689 | - webpack
1690 | dev: true
1691 |
1692 | /unplugin/0.6.3_vite@2.9.9:
1693 | resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==}
1694 | peerDependencies:
1695 | esbuild: '>=0.13'
1696 | rollup: ^2.50.0
1697 | vite: ^2.3.0
1698 | webpack: 4 || 5
1699 | peerDependenciesMeta:
1700 | esbuild:
1701 | optional: true
1702 | rollup:
1703 | optional: true
1704 | vite:
1705 | optional: true
1706 | webpack:
1707 | optional: true
1708 | dependencies:
1709 | chokidar: 3.5.3
1710 | vite: 2.9.9_sass@1.52.1
1711 | webpack-sources: 3.2.3
1712 | webpack-virtual-modules: 0.4.3
1713 | dev: true
1714 |
1715 | /uri-js/4.4.1:
1716 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1717 | dependencies:
1718 | punycode: 2.1.1
1719 | dev: true
1720 |
1721 | /util-deprecate/1.0.2:
1722 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
1723 | dev: true
1724 |
1725 | /v8-compile-cache/2.3.0:
1726 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
1727 | dev: true
1728 |
1729 | /vite/2.9.9:
1730 | resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==}
1731 | engines: {node: '>=12.2.0'}
1732 | hasBin: true
1733 | peerDependencies:
1734 | less: '*'
1735 | sass: '*'
1736 | stylus: '*'
1737 | peerDependenciesMeta:
1738 | less:
1739 | optional: true
1740 | sass:
1741 | optional: true
1742 | stylus:
1743 | optional: true
1744 | dependencies:
1745 | esbuild: 0.14.39
1746 | postcss: 8.4.14
1747 | resolve: 1.22.0
1748 | rollup: 2.74.1
1749 | optionalDependencies:
1750 | fsevents: 2.3.2
1751 | dev: true
1752 |
1753 | /vite/2.9.9_sass@1.52.1:
1754 | resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==}
1755 | engines: {node: '>=12.2.0'}
1756 | hasBin: true
1757 | peerDependencies:
1758 | less: '*'
1759 | sass: '*'
1760 | stylus: '*'
1761 | peerDependenciesMeta:
1762 | less:
1763 | optional: true
1764 | sass:
1765 | optional: true
1766 | stylus:
1767 | optional: true
1768 | dependencies:
1769 | esbuild: 0.14.39
1770 | postcss: 8.4.14
1771 | resolve: 1.22.0
1772 | rollup: 2.74.1
1773 | sass: 1.52.1
1774 | optionalDependencies:
1775 | fsevents: 2.3.2
1776 | dev: true
1777 |
1778 | /vue-eslint-parser/8.3.0_eslint@8.16.0:
1779 | resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==}
1780 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1781 | peerDependencies:
1782 | eslint: '>=6.0.0'
1783 | dependencies:
1784 | debug: 4.3.4
1785 | eslint: 8.16.0
1786 | eslint-scope: 7.1.1
1787 | eslint-visitor-keys: 3.3.0
1788 | espree: 9.3.2
1789 | esquery: 1.4.0
1790 | lodash: 4.17.21
1791 | semver: 7.3.7
1792 | transitivePeerDependencies:
1793 | - supports-color
1794 | dev: true
1795 |
1796 | /vue-eslint-parser/9.0.2_eslint@8.16.0:
1797 | resolution: {integrity: sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA==}
1798 | engines: {node: ^14.17.0 || >=16.0.0}
1799 | peerDependencies:
1800 | eslint: '>=6.0.0'
1801 | dependencies:
1802 | debug: 4.3.4
1803 | eslint: 8.16.0
1804 | eslint-scope: 7.1.1
1805 | eslint-visitor-keys: 3.3.0
1806 | espree: 9.3.2
1807 | esquery: 1.4.0
1808 | lodash: 4.17.21
1809 | semver: 7.3.7
1810 | transitivePeerDependencies:
1811 | - supports-color
1812 | dev: true
1813 |
1814 | /vue-router/4.0.15_vue@3.2.36:
1815 | resolution: {integrity: sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==}
1816 | peerDependencies:
1817 | vue: ^3.2.0
1818 | dependencies:
1819 | '@vue/devtools-api': 6.1.4
1820 | vue: 3.2.36
1821 | dev: false
1822 |
1823 | /vue-tsc/0.34.16_typescript@4.7.2:
1824 | resolution: {integrity: sha512-9tYBQIOyl3Tz8ZrlYUKtftu5m/wXHfxCalyjR22QzSaUJoBJmZeNOoVs/QEllc0z4ideEZxvvU+pBFdoY3O16A==}
1825 | hasBin: true
1826 | peerDependencies:
1827 | typescript: '*'
1828 | dependencies:
1829 | '@volar/vue-typescript': 0.34.16
1830 | typescript: 4.7.2
1831 | dev: true
1832 |
1833 | /vue/3.2.36:
1834 | resolution: {integrity: sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw==}
1835 | dependencies:
1836 | '@vue/compiler-dom': 3.2.36
1837 | '@vue/compiler-sfc': 3.2.36
1838 | '@vue/runtime-dom': 3.2.36
1839 | '@vue/server-renderer': 3.2.36_vue@3.2.36
1840 | '@vue/shared': 3.2.36
1841 |
1842 | /webpack-sources/3.2.3:
1843 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
1844 | engines: {node: '>=10.13.0'}
1845 | dev: true
1846 |
1847 | /webpack-virtual-modules/0.4.3:
1848 | resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
1849 | dev: true
1850 |
1851 | /which/2.0.2:
1852 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1853 | engines: {node: '>= 8'}
1854 | hasBin: true
1855 | dependencies:
1856 | isexe: 2.0.0
1857 | dev: true
1858 |
1859 | /word-wrap/1.2.3:
1860 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
1861 | engines: {node: '>=0.10.0'}
1862 | dev: true
1863 |
1864 | /wrappy/1.0.2:
1865 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
1866 | dev: true
1867 |
1868 | /xml-name-validator/4.0.0:
1869 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
1870 | engines: {node: '>=12'}
1871 | dev: true
1872 |
1873 | /yallist/4.0.0:
1874 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1875 | dev: true
1876 |
--------------------------------------------------------------------------------