├── .vscode └── settings.json ├── .gitignore ├── tsconfig.json ├── src ├── main.ts ├── install.ts ├── create-context.ts ├── interfaces.ts ├── use-context.ts ├── uninstaller.ts ├── boot-module.ts └── use-module.ts ├── README.md ├── vite.config.ts ├── package.json └── pnpm-lock.yaml /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "volar.tsPlugin": true 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "resolveJsonModule": true, 4 | "lib": ["esnext", "dom"], 5 | }, 6 | "include": ["src/**/*.ts", "src/**/*.d.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { install } from "./install"; 2 | export { useModule } from "./use-module"; 3 | export { uninstall, clear, list } from "./uninstaller"; 4 | export { useContext } from "./use-context"; 5 | export default install; 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ![VML](https://user-images.githubusercontent.com/13450661/178444039-1ddca3df-db6c-43b9-8e76-a55db7077b7f.svg) 3 | 4 | [文档](https://mqhe2007.github.io/vue-module-loader-doc/) 5 | 6 | ## 谁在使用 7 | 8 | ![guogongzhineng](https://user-images.githubusercontent.com/13450661/122190121-1ec3ea80-cec4-11eb-87bf-1f657c70ae8a.png) 9 | -------------------------------------------------------------------------------- /src/install.ts: -------------------------------------------------------------------------------- 1 | import { App } from "vue"; 2 | import { createContext } from "./create-context"; 3 | import { Context } from "./interfaces"; 4 | export function install(app: App, ctx: Context) { 5 | if (!app.version?.startsWith("3")) { 6 | throw new Error(`[vue-module-loader]: 仅适用于vue3`); 7 | } else { 8 | createContext({ 9 | app, 10 | ...ctx, 11 | }); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/create-context.ts: -------------------------------------------------------------------------------- 1 | import { Context } from "./interfaces"; 2 | export function createContext(ctx: Context = {}): Context { 3 | if (!window[Symbol.for("___VML_CONTEXT___")]) { 4 | // 创建上下文对象 5 | window[Symbol.for("___VML_CONTEXT___")] = ctx; 6 | } else { 7 | // 合并上下文对象 8 | window[Symbol.for("___VML_CONTEXT___")] = Object.assign( 9 | window[Symbol.for("___VML_CONTEXT___")], 10 | ctx 11 | ); 12 | } 13 | return window[Symbol.for("___VML_CONTEXT___")]; 14 | } 15 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from "path"; 2 | import { defineConfig } from "vite"; 3 | import dts from "vite-plugin-dts"; 4 | 5 | export default defineConfig({ 6 | build: { 7 | lib: { 8 | entry: resolve(__dirname, "src/main.ts"), 9 | name: "vueModuleLoader", 10 | }, 11 | target: "es2015", 12 | sourcemap: true, 13 | minify: false, 14 | terserOptions: { 15 | format: { 16 | comments: "all", 17 | }, 18 | }, 19 | }, 20 | plugins: [dts()], 21 | }); 22 | -------------------------------------------------------------------------------- /src/interfaces.ts: -------------------------------------------------------------------------------- 1 | import { App, CreateAppFunction } from "vue"; 2 | 3 | export interface Context { 4 | app?: App; 5 | createApp?: CreateAppFunction; 6 | http?: any; 7 | moduleExpose?: { 8 | [propName: string]: any; 9 | }; 10 | [propName: string]: any; 11 | } 12 | export interface ModuleUninstallerMap { 13 | [propName: string]: (context: Context) => void; 14 | } 15 | export interface ModuleOptions { 16 | name: string; 17 | install: (context: Context) => any; 18 | uninstall?: (context: Context) => any; 19 | } 20 | -------------------------------------------------------------------------------- /src/use-context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from "./create-context"; 2 | 3 | /** 4 | * 使用上下文对象里的数据 5 | * @param key 上下文对象中的key 6 | * @returns 根据key获取的上下文对象中的值 7 | */ 8 | function useContext(key: string, instance: any): any { 9 | const context = createContext(); 10 | if (instance) { 11 | context[key] = instance; 12 | } 13 | if (!key) { 14 | return context; 15 | } else { 16 | if (context[key] === undefined) { 17 | context[key] = null; 18 | console.warn( 19 | `[vue-module-loader]:上下文中不存在“${key}”,既然你要用,我先帮你占个坑(初始化为null)。` 20 | ); 21 | } 22 | return context[key]; 23 | } 24 | } 25 | export { useContext }; 26 | -------------------------------------------------------------------------------- /src/uninstaller.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 模块卸载器 3 | * 当模块安装时会缓存卸载程序。 4 | */ 5 | 6 | import { Context, ModuleUninstallerMap } from "./interfaces"; 7 | 8 | const moduleUninstallerMap: ModuleUninstallerMap = {}; 9 | 10 | export default function ( 11 | moduleName: string, 12 | uninstaller: (context: Context) => any 13 | ) { 14 | moduleUninstallerMap[moduleName] = uninstaller; 15 | } 16 | export function list() { 17 | return moduleUninstallerMap; 18 | } 19 | export async function uninstall(moduleName: string) { 20 | moduleUninstallerMap[moduleName](window[Symbol.for("___VML_CONTEXT___")]); 21 | } 22 | export async function clear() { 23 | for (let moduleName in moduleUninstallerMap) { 24 | moduleUninstallerMap[moduleName](window[Symbol.for("___VML_CONTEXT___")]); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-module-loader", 3 | "version": "3.5.3", 4 | "description": "Let you use the micro front-end architecture to build Vue applications.", 5 | "author": "mqhe2007 <122274389@qq.com>", 6 | "homepage": "https://mengqinghe.com", 7 | "license": "MIT", 8 | "keywords": [ 9 | "vue", 10 | "vue-module", 11 | "vue-module-loader", 12 | "micro-front-end" 13 | ], 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/mqhe2007/vue-module-loader" 17 | }, 18 | "files": [ 19 | "dist" 20 | ], 21 | "main": "./dist/vue-module-loader.umd.js", 22 | "module": "./dist/vue-module-loader.es.js", 23 | "types": "./dist/main.d.ts", 24 | "type": "module", 25 | "exports": { 26 | ".": { 27 | "import": "./dist/vue-module-loader.js", 28 | "require": "./dist/vue-module-loader.umd.js" 29 | } 30 | }, 31 | "scripts": { 32 | "dev": "vite build --watch", 33 | "build": "vite build" 34 | }, 35 | "devDependencies": { 36 | "@types/node": "^18.8.5", 37 | "typescript": "^4.7.4", 38 | "vite": "^3.1.8", 39 | "vite-plugin-dts": "^1.6.6" 40 | }, 41 | "dependencies": { 42 | "@qingjin/jsuper": "^1.3.1", 43 | "vue": "^3.2.40" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/boot-module.ts: -------------------------------------------------------------------------------- 1 | import { Context, ModuleOptions } from "./interfaces"; 2 | import uninstallCache from "./uninstaller"; 3 | function loadStyle(moduleData, moduleHostUrl): Promise { 4 | return new Promise((resolve, reject) => { 5 | const style = document.createElement("link"); 6 | style.id = moduleData.name; 7 | style.rel = "stylesheet"; 8 | style.crossOrigin = "anonymous"; 9 | style.href = moduleHostUrl + "style.css"; 10 | style.onload = () => { 11 | resolve(); 12 | }; 13 | style.onerror = () => { 14 | resolve(); 15 | }; 16 | document.head.append(style); 17 | }); 18 | } 19 | export default async function( 20 | moduleData: ModuleOptions, 21 | moduleHostUrl?: string 22 | ): Promise { 23 | let installReturn; 24 | try { 25 | console.log(`[vue-module-loader]: 模块「${moduleData.name}」开始加载...`); 26 | if (moduleHostUrl) { 27 | await loadStyle(moduleData, moduleHostUrl); 28 | } 29 | installReturn = await moduleData.install(window[Symbol.for("___VML_CONTEXT___")]); 30 | console.log(`[vue-module-loader]: 模块「${moduleData.name}」加载完成。`); 31 | // 缓存模块卸载方法,记录已加载模块清单 32 | uninstallCache(moduleData.name, moduleData.uninstall); 33 | } catch (error) { 34 | console.error( 35 | `[vue-module-loader]: 模块「${moduleData.name}」加载错误!`, 36 | error 37 | ); 38 | installReturn = error; 39 | } 40 | 41 | return installReturn; 42 | } 43 | -------------------------------------------------------------------------------- /src/use-module.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from "./create-context"; 2 | import bootModule from "./boot-module"; 3 | import { Context, ModuleOptions } from "./interfaces"; 4 | /** 5 | * 使用模块 6 | * @param moduleData 模块数据,可以是模块定义对象或者是模块资源url。 7 | * @param ctx 上下文对象,如果不传,则使用默认上下文对象。 8 | */ 9 | async function useModule( 10 | moduleData: ModuleOptions, 11 | ctx?: Context 12 | ): Promise; 13 | async function useModule(moduleData: string, ctx?: Context): Promise; 14 | async function useModule(moduleData: any, ctx?: Context): Promise { 15 | const context = createContext(ctx); 16 | // console.log('vml-debug2:', context); 17 | let bootResult; 18 | if (typeof moduleData === "object") { 19 | bootResult = await bootModule(moduleData); 20 | } else if (typeof moduleData === "string") { 21 | if (!context.Vue) 22 | throw new Error("[vue-module-loader]: 上下文对象缺少Vue对象"); 23 | const res = await fetch(moduleData); 24 | const moduleString = await res.text(); 25 | const moduleCode = moduleString.replace( 26 | /^(var|const).+function/, 27 | "return function" 28 | ); 29 | const moduleStringFun = Function(`return function(vue){${moduleCode}}`)(); 30 | const moduleDataFromUrl = moduleStringFun(context.Vue); 31 | bootResult = await bootModule( 32 | moduleDataFromUrl, 33 | moduleData.match(/\S*\//)[0] 34 | ); 35 | } 36 | return bootResult; 37 | } 38 | 39 | export { useModule }; 40 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@qingjin/jsuper': ^1.3.1 5 | '@types/node': ^18.8.5 6 | typescript: ^4.7.4 7 | vite: 3.1.8 8 | vite-plugin-dts: ^1.2.1 9 | vue: ^3.2.40 10 | 11 | dependencies: 12 | '@qingjin/jsuper': 1.3.1 13 | vue: 3.2.40 14 | 15 | devDependencies: 16 | '@types/node': 18.8.5 17 | typescript: 4.7.4 18 | vite: 3.1.8 19 | vite-plugin-dts: 1.2.1_vite@3.1.8 20 | 21 | packages: 22 | 23 | /@babel/helper-validator-identifier/7.18.6: 24 | resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} 25 | engines: {node: '>=6.9.0'} 26 | dev: false 27 | 28 | /@babel/parser/7.18.6: 29 | resolution: {integrity: sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==} 30 | engines: {node: '>=6.0.0'} 31 | hasBin: true 32 | dependencies: 33 | '@babel/types': 7.18.7 34 | dev: false 35 | 36 | /@babel/types/7.18.7: 37 | resolution: {integrity: sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==} 38 | engines: {node: '>=6.9.0'} 39 | dependencies: 40 | '@babel/helper-validator-identifier': 7.18.6 41 | to-fast-properties: 2.0.0 42 | dev: false 43 | 44 | /@esbuild/android-arm/0.15.10: 45 | resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==} 46 | engines: {node: '>=12'} 47 | cpu: [arm] 48 | os: [android] 49 | requiresBuild: true 50 | dev: true 51 | optional: true 52 | 53 | /@esbuild/linux-loong64/0.15.10: 54 | resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==} 55 | engines: {node: '>=12'} 56 | cpu: [loong64] 57 | os: [linux] 58 | requiresBuild: true 59 | dev: true 60 | optional: true 61 | 62 | /@microsoft/api-extractor-model/7.21.0: 63 | resolution: {integrity: sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ==} 64 | dependencies: 65 | '@microsoft/tsdoc': 0.14.1 66 | '@microsoft/tsdoc-config': 0.16.1 67 | '@rushstack/node-core-library': 3.49.0 68 | dev: true 69 | 70 | /@microsoft/api-extractor/7.28.3: 71 | resolution: {integrity: sha512-lkDHPyln8MNEy1QHjmGwedRquclGKU0qL0gHplfnHuSTXSoNQ86UYaPmhG77/GiNehXzGNKMYSIfTsuoQb69jA==} 72 | hasBin: true 73 | dependencies: 74 | '@microsoft/api-extractor-model': 7.21.0 75 | '@microsoft/tsdoc': 0.14.1 76 | '@microsoft/tsdoc-config': 0.16.1 77 | '@rushstack/node-core-library': 3.49.0 78 | '@rushstack/rig-package': 0.3.13 79 | '@rushstack/ts-command-line': 4.12.1 80 | colors: 1.2.5 81 | lodash: 4.17.21 82 | resolve: 1.17.0 83 | semver: 7.3.7 84 | source-map: 0.6.1 85 | typescript: 4.6.4 86 | dev: true 87 | 88 | /@microsoft/tsdoc-config/0.16.1: 89 | resolution: {integrity: sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==} 90 | dependencies: 91 | '@microsoft/tsdoc': 0.14.1 92 | ajv: 6.12.6 93 | jju: 1.4.0 94 | resolve: 1.19.0 95 | dev: true 96 | 97 | /@microsoft/tsdoc/0.14.1: 98 | resolution: {integrity: sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==} 99 | dev: true 100 | 101 | /@nodelib/fs.scandir/2.1.5: 102 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 103 | engines: {node: '>= 8'} 104 | dependencies: 105 | '@nodelib/fs.stat': 2.0.5 106 | run-parallel: 1.2.0 107 | dev: true 108 | 109 | /@nodelib/fs.stat/2.0.5: 110 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 111 | engines: {node: '>= 8'} 112 | dev: true 113 | 114 | /@nodelib/fs.walk/1.2.8: 115 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 116 | engines: {node: '>= 8'} 117 | dependencies: 118 | '@nodelib/fs.scandir': 2.1.5 119 | fastq: 1.13.0 120 | dev: true 121 | 122 | /@qingjin/jsuper/1.3.1: 123 | resolution: {integrity: sha512-UA2dScsCh4SDo0XDGVoMXVI8oC9VwwTTCqc20bX/uxdRlutill3v1/qk9ikGUGKcW4JKL6Im+ZsEUUKhFspZgg==} 124 | dev: false 125 | 126 | /@rushstack/node-core-library/3.49.0: 127 | resolution: {integrity: sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw==} 128 | dependencies: 129 | '@types/node': 12.20.24 130 | colors: 1.2.5 131 | fs-extra: 7.0.1 132 | import-lazy: 4.0.0 133 | jju: 1.4.0 134 | resolve: 1.17.0 135 | semver: 7.3.7 136 | timsort: 0.3.0 137 | z-schema: 5.0.3 138 | dev: true 139 | 140 | /@rushstack/rig-package/0.3.13: 141 | resolution: {integrity: sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA==} 142 | dependencies: 143 | resolve: 1.17.0 144 | strip-json-comments: 3.1.1 145 | dev: true 146 | 147 | /@rushstack/ts-command-line/4.12.1: 148 | resolution: {integrity: sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ==} 149 | dependencies: 150 | '@types/argparse': 1.0.38 151 | argparse: 1.0.10 152 | colors: 1.2.5 153 | string-argv: 0.3.1 154 | dev: true 155 | 156 | /@ts-morph/common/0.13.0: 157 | resolution: {integrity: sha512-fEJ6j7Cu8yiWjA4UmybOBH9Efgb/64ZTWuvCF4KysGu4xz8ettfyaqFt8WZ1btCxXsGZJjZ2/3svOF6rL+UFdQ==} 158 | dependencies: 159 | fast-glob: 3.2.11 160 | minimatch: 5.1.0 161 | mkdirp: 1.0.4 162 | path-browserify: 1.0.1 163 | dev: true 164 | 165 | /@types/argparse/1.0.38: 166 | resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} 167 | dev: true 168 | 169 | /@types/node/12.20.24: 170 | resolution: {integrity: sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==} 171 | dev: true 172 | 173 | /@types/node/18.8.5: 174 | resolution: {integrity: sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q==} 175 | dev: true 176 | 177 | /@vue/compiler-core/3.2.40: 178 | resolution: {integrity: sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==} 179 | dependencies: 180 | '@babel/parser': 7.18.6 181 | '@vue/shared': 3.2.40 182 | estree-walker: 2.0.2 183 | source-map: 0.6.1 184 | dev: false 185 | 186 | /@vue/compiler-dom/3.2.40: 187 | resolution: {integrity: sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==} 188 | dependencies: 189 | '@vue/compiler-core': 3.2.40 190 | '@vue/shared': 3.2.40 191 | dev: false 192 | 193 | /@vue/compiler-sfc/3.2.40: 194 | resolution: {integrity: sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==} 195 | dependencies: 196 | '@babel/parser': 7.18.6 197 | '@vue/compiler-core': 3.2.40 198 | '@vue/compiler-dom': 3.2.40 199 | '@vue/compiler-ssr': 3.2.40 200 | '@vue/reactivity-transform': 3.2.40 201 | '@vue/shared': 3.2.40 202 | estree-walker: 2.0.2 203 | magic-string: 0.25.9 204 | postcss: 8.4.14 205 | source-map: 0.6.1 206 | dev: false 207 | 208 | /@vue/compiler-ssr/3.2.40: 209 | resolution: {integrity: sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==} 210 | dependencies: 211 | '@vue/compiler-dom': 3.2.40 212 | '@vue/shared': 3.2.40 213 | dev: false 214 | 215 | /@vue/reactivity-transform/3.2.40: 216 | resolution: {integrity: sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==} 217 | dependencies: 218 | '@babel/parser': 7.18.6 219 | '@vue/compiler-core': 3.2.40 220 | '@vue/shared': 3.2.40 221 | estree-walker: 2.0.2 222 | magic-string: 0.25.9 223 | dev: false 224 | 225 | /@vue/reactivity/3.2.40: 226 | resolution: {integrity: sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==} 227 | dependencies: 228 | '@vue/shared': 3.2.40 229 | dev: false 230 | 231 | /@vue/runtime-core/3.2.40: 232 | resolution: {integrity: sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==} 233 | dependencies: 234 | '@vue/reactivity': 3.2.40 235 | '@vue/shared': 3.2.40 236 | dev: false 237 | 238 | /@vue/runtime-dom/3.2.40: 239 | resolution: {integrity: sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==} 240 | dependencies: 241 | '@vue/runtime-core': 3.2.40 242 | '@vue/shared': 3.2.40 243 | csstype: 2.6.20 244 | dev: false 245 | 246 | /@vue/server-renderer/3.2.40_vue@3.2.40: 247 | resolution: {integrity: sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==} 248 | peerDependencies: 249 | vue: 3.2.40 250 | dependencies: 251 | '@vue/compiler-ssr': 3.2.40 252 | '@vue/shared': 3.2.40 253 | vue: 3.2.40 254 | dev: false 255 | 256 | /@vue/shared/3.2.40: 257 | resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==} 258 | dev: false 259 | 260 | /ajv/6.12.6: 261 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 262 | dependencies: 263 | fast-deep-equal: 3.1.3 264 | fast-json-stable-stringify: 2.1.0 265 | json-schema-traverse: 0.4.1 266 | uri-js: 4.4.1 267 | dev: true 268 | 269 | /ansi-styles/4.3.0: 270 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 271 | engines: {node: '>=8'} 272 | dependencies: 273 | color-convert: 2.0.1 274 | dev: true 275 | 276 | /argparse/1.0.10: 277 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 278 | dependencies: 279 | sprintf-js: 1.0.3 280 | dev: true 281 | 282 | /balanced-match/1.0.2: 283 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 284 | dev: true 285 | 286 | /brace-expansion/2.0.1: 287 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 288 | dependencies: 289 | balanced-match: 1.0.2 290 | dev: true 291 | 292 | /braces/3.0.2: 293 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 294 | engines: {node: '>=8'} 295 | dependencies: 296 | fill-range: 7.0.1 297 | dev: true 298 | 299 | /chalk/4.1.2: 300 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 301 | engines: {node: '>=10'} 302 | dependencies: 303 | ansi-styles: 4.3.0 304 | supports-color: 7.2.0 305 | dev: true 306 | 307 | /code-block-writer/11.0.1: 308 | resolution: {integrity: sha512-0ch9DeCY8v/BWA9n1/Qu1ALG3lpesel4PYL2eNlGLgvGl+J7k74i+dSXSF3wLvF5SYII8/GUT/Ic+fycBR/DUQ==} 309 | dev: true 310 | 311 | /color-convert/2.0.1: 312 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 313 | engines: {node: '>=7.0.0'} 314 | dependencies: 315 | color-name: 1.1.4 316 | dev: true 317 | 318 | /color-name/1.1.4: 319 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 320 | dev: true 321 | 322 | /colors/1.2.5: 323 | resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} 324 | engines: {node: '>=0.1.90'} 325 | dev: true 326 | 327 | /commander/2.20.3: 328 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 329 | requiresBuild: true 330 | dev: true 331 | optional: true 332 | 333 | /csstype/2.6.20: 334 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} 335 | dev: false 336 | 337 | /debug/4.3.4: 338 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 339 | engines: {node: '>=6.0'} 340 | peerDependencies: 341 | supports-color: '*' 342 | peerDependenciesMeta: 343 | supports-color: 344 | optional: true 345 | dependencies: 346 | ms: 2.1.2 347 | dev: true 348 | 349 | /esbuild-android-64/0.15.10: 350 | resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==} 351 | engines: {node: '>=12'} 352 | cpu: [x64] 353 | os: [android] 354 | requiresBuild: true 355 | dev: true 356 | optional: true 357 | 358 | /esbuild-android-arm64/0.15.10: 359 | resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==} 360 | engines: {node: '>=12'} 361 | cpu: [arm64] 362 | os: [android] 363 | requiresBuild: true 364 | dev: true 365 | optional: true 366 | 367 | /esbuild-darwin-64/0.15.10: 368 | resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==} 369 | engines: {node: '>=12'} 370 | cpu: [x64] 371 | os: [darwin] 372 | requiresBuild: true 373 | dev: true 374 | optional: true 375 | 376 | /esbuild-darwin-arm64/0.15.10: 377 | resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==} 378 | engines: {node: '>=12'} 379 | cpu: [arm64] 380 | os: [darwin] 381 | requiresBuild: true 382 | dev: true 383 | optional: true 384 | 385 | /esbuild-freebsd-64/0.15.10: 386 | resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==} 387 | engines: {node: '>=12'} 388 | cpu: [x64] 389 | os: [freebsd] 390 | requiresBuild: true 391 | dev: true 392 | optional: true 393 | 394 | /esbuild-freebsd-arm64/0.15.10: 395 | resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==} 396 | engines: {node: '>=12'} 397 | cpu: [arm64] 398 | os: [freebsd] 399 | requiresBuild: true 400 | dev: true 401 | optional: true 402 | 403 | /esbuild-linux-32/0.15.10: 404 | resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==} 405 | engines: {node: '>=12'} 406 | cpu: [ia32] 407 | os: [linux] 408 | requiresBuild: true 409 | dev: true 410 | optional: true 411 | 412 | /esbuild-linux-64/0.15.10: 413 | resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==} 414 | engines: {node: '>=12'} 415 | cpu: [x64] 416 | os: [linux] 417 | requiresBuild: true 418 | dev: true 419 | optional: true 420 | 421 | /esbuild-linux-arm/0.15.10: 422 | resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==} 423 | engines: {node: '>=12'} 424 | cpu: [arm] 425 | os: [linux] 426 | requiresBuild: true 427 | dev: true 428 | optional: true 429 | 430 | /esbuild-linux-arm64/0.15.10: 431 | resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==} 432 | engines: {node: '>=12'} 433 | cpu: [arm64] 434 | os: [linux] 435 | requiresBuild: true 436 | dev: true 437 | optional: true 438 | 439 | /esbuild-linux-mips64le/0.15.10: 440 | resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==} 441 | engines: {node: '>=12'} 442 | cpu: [mips64el] 443 | os: [linux] 444 | requiresBuild: true 445 | dev: true 446 | optional: true 447 | 448 | /esbuild-linux-ppc64le/0.15.10: 449 | resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==} 450 | engines: {node: '>=12'} 451 | cpu: [ppc64] 452 | os: [linux] 453 | requiresBuild: true 454 | dev: true 455 | optional: true 456 | 457 | /esbuild-linux-riscv64/0.15.10: 458 | resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==} 459 | engines: {node: '>=12'} 460 | cpu: [riscv64] 461 | os: [linux] 462 | requiresBuild: true 463 | dev: true 464 | optional: true 465 | 466 | /esbuild-linux-s390x/0.15.10: 467 | resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==} 468 | engines: {node: '>=12'} 469 | cpu: [s390x] 470 | os: [linux] 471 | requiresBuild: true 472 | dev: true 473 | optional: true 474 | 475 | /esbuild-netbsd-64/0.15.10: 476 | resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==} 477 | engines: {node: '>=12'} 478 | cpu: [x64] 479 | os: [netbsd] 480 | requiresBuild: true 481 | dev: true 482 | optional: true 483 | 484 | /esbuild-openbsd-64/0.15.10: 485 | resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==} 486 | engines: {node: '>=12'} 487 | cpu: [x64] 488 | os: [openbsd] 489 | requiresBuild: true 490 | dev: true 491 | optional: true 492 | 493 | /esbuild-sunos-64/0.15.10: 494 | resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==} 495 | engines: {node: '>=12'} 496 | cpu: [x64] 497 | os: [sunos] 498 | requiresBuild: true 499 | dev: true 500 | optional: true 501 | 502 | /esbuild-windows-32/0.15.10: 503 | resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==} 504 | engines: {node: '>=12'} 505 | cpu: [ia32] 506 | os: [win32] 507 | requiresBuild: true 508 | dev: true 509 | optional: true 510 | 511 | /esbuild-windows-64/0.15.10: 512 | resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==} 513 | engines: {node: '>=12'} 514 | cpu: [x64] 515 | os: [win32] 516 | requiresBuild: true 517 | dev: true 518 | optional: true 519 | 520 | /esbuild-windows-arm64/0.15.10: 521 | resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==} 522 | engines: {node: '>=12'} 523 | cpu: [arm64] 524 | os: [win32] 525 | requiresBuild: true 526 | dev: true 527 | optional: true 528 | 529 | /esbuild/0.15.10: 530 | resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==} 531 | engines: {node: '>=12'} 532 | hasBin: true 533 | requiresBuild: true 534 | optionalDependencies: 535 | '@esbuild/android-arm': 0.15.10 536 | '@esbuild/linux-loong64': 0.15.10 537 | esbuild-android-64: 0.15.10 538 | esbuild-android-arm64: 0.15.10 539 | esbuild-darwin-64: 0.15.10 540 | esbuild-darwin-arm64: 0.15.10 541 | esbuild-freebsd-64: 0.15.10 542 | esbuild-freebsd-arm64: 0.15.10 543 | esbuild-linux-32: 0.15.10 544 | esbuild-linux-64: 0.15.10 545 | esbuild-linux-arm: 0.15.10 546 | esbuild-linux-arm64: 0.15.10 547 | esbuild-linux-mips64le: 0.15.10 548 | esbuild-linux-ppc64le: 0.15.10 549 | esbuild-linux-riscv64: 0.15.10 550 | esbuild-linux-s390x: 0.15.10 551 | esbuild-netbsd-64: 0.15.10 552 | esbuild-openbsd-64: 0.15.10 553 | esbuild-sunos-64: 0.15.10 554 | esbuild-windows-32: 0.15.10 555 | esbuild-windows-64: 0.15.10 556 | esbuild-windows-arm64: 0.15.10 557 | dev: true 558 | 559 | /estree-walker/2.0.2: 560 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 561 | dev: false 562 | 563 | /fast-deep-equal/3.1.3: 564 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 565 | dev: true 566 | 567 | /fast-glob/3.2.11: 568 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 569 | engines: {node: '>=8.6.0'} 570 | dependencies: 571 | '@nodelib/fs.stat': 2.0.5 572 | '@nodelib/fs.walk': 1.2.8 573 | glob-parent: 5.1.2 574 | merge2: 1.4.1 575 | micromatch: 4.0.5 576 | dev: true 577 | 578 | /fast-json-stable-stringify/2.1.0: 579 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 580 | dev: true 581 | 582 | /fastq/1.13.0: 583 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 584 | dependencies: 585 | reusify: 1.0.4 586 | dev: true 587 | 588 | /fill-range/7.0.1: 589 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 590 | engines: {node: '>=8'} 591 | dependencies: 592 | to-regex-range: 5.0.1 593 | dev: true 594 | 595 | /fs-extra/10.1.0: 596 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 597 | engines: {node: '>=12'} 598 | dependencies: 599 | graceful-fs: 4.2.10 600 | jsonfile: 6.1.0 601 | universalify: 2.0.0 602 | dev: true 603 | 604 | /fs-extra/7.0.1: 605 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 606 | engines: {node: '>=6 <7 || >=8'} 607 | dependencies: 608 | graceful-fs: 4.2.10 609 | jsonfile: 4.0.0 610 | universalify: 0.1.2 611 | dev: true 612 | 613 | /fsevents/2.3.2: 614 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 615 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 616 | os: [darwin] 617 | requiresBuild: true 618 | dev: true 619 | optional: true 620 | 621 | /function-bind/1.1.1: 622 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 623 | dev: true 624 | 625 | /glob-parent/5.1.2: 626 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 627 | engines: {node: '>= 6'} 628 | dependencies: 629 | is-glob: 4.0.3 630 | dev: true 631 | 632 | /graceful-fs/4.2.10: 633 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 634 | dev: true 635 | 636 | /has-flag/4.0.0: 637 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 638 | engines: {node: '>=8'} 639 | dev: true 640 | 641 | /has/1.0.3: 642 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 643 | engines: {node: '>= 0.4.0'} 644 | dependencies: 645 | function-bind: 1.1.1 646 | dev: true 647 | 648 | /import-lazy/4.0.0: 649 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} 650 | engines: {node: '>=8'} 651 | dev: true 652 | 653 | /is-core-module/2.9.0: 654 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 655 | dependencies: 656 | has: 1.0.3 657 | dev: true 658 | 659 | /is-extglob/2.1.1: 660 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 661 | engines: {node: '>=0.10.0'} 662 | dev: true 663 | 664 | /is-glob/4.0.3: 665 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 666 | engines: {node: '>=0.10.0'} 667 | dependencies: 668 | is-extglob: 2.1.1 669 | dev: true 670 | 671 | /is-number/7.0.0: 672 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 673 | engines: {node: '>=0.12.0'} 674 | dev: true 675 | 676 | /jju/1.4.0: 677 | resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} 678 | dev: true 679 | 680 | /json-schema-traverse/0.4.1: 681 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 682 | dev: true 683 | 684 | /jsonfile/4.0.0: 685 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 686 | optionalDependencies: 687 | graceful-fs: 4.2.10 688 | dev: true 689 | 690 | /jsonfile/6.1.0: 691 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 692 | dependencies: 693 | universalify: 2.0.0 694 | optionalDependencies: 695 | graceful-fs: 4.2.10 696 | dev: true 697 | 698 | /lodash.get/4.4.2: 699 | resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} 700 | dev: true 701 | 702 | /lodash.isequal/4.5.0: 703 | resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} 704 | dev: true 705 | 706 | /lodash/4.17.21: 707 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 708 | dev: true 709 | 710 | /lru-cache/6.0.0: 711 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 712 | engines: {node: '>=10'} 713 | dependencies: 714 | yallist: 4.0.0 715 | dev: true 716 | 717 | /magic-string/0.25.9: 718 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 719 | dependencies: 720 | sourcemap-codec: 1.4.8 721 | dev: false 722 | 723 | /merge2/1.4.1: 724 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 725 | engines: {node: '>= 8'} 726 | dev: true 727 | 728 | /micromatch/4.0.5: 729 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 730 | engines: {node: '>=8.6'} 731 | dependencies: 732 | braces: 3.0.2 733 | picomatch: 2.3.1 734 | dev: true 735 | 736 | /minimatch/5.1.0: 737 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} 738 | engines: {node: '>=10'} 739 | dependencies: 740 | brace-expansion: 2.0.1 741 | dev: true 742 | 743 | /mkdirp/1.0.4: 744 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 745 | engines: {node: '>=10'} 746 | hasBin: true 747 | dev: true 748 | 749 | /ms/2.1.2: 750 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 751 | dev: true 752 | 753 | /nanoid/3.3.4: 754 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 755 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 756 | hasBin: true 757 | 758 | /path-browserify/1.0.1: 759 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 760 | dev: true 761 | 762 | /path-parse/1.0.7: 763 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 764 | dev: true 765 | 766 | /picocolors/1.0.0: 767 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 768 | 769 | /picomatch/2.3.1: 770 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 771 | engines: {node: '>=8.6'} 772 | dev: true 773 | 774 | /postcss/8.4.14: 775 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 776 | engines: {node: ^10 || ^12 || >=14} 777 | dependencies: 778 | nanoid: 3.3.4 779 | picocolors: 1.0.0 780 | source-map-js: 1.0.2 781 | dev: false 782 | 783 | /postcss/8.4.18: 784 | resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} 785 | engines: {node: ^10 || ^12 || >=14} 786 | dependencies: 787 | nanoid: 3.3.4 788 | picocolors: 1.0.0 789 | source-map-js: 1.0.2 790 | dev: true 791 | 792 | /punycode/2.1.1: 793 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 794 | engines: {node: '>=6'} 795 | dev: true 796 | 797 | /queue-microtask/1.2.3: 798 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 799 | dev: true 800 | 801 | /resolve/1.17.0: 802 | resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} 803 | dependencies: 804 | path-parse: 1.0.7 805 | dev: true 806 | 807 | /resolve/1.19.0: 808 | resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} 809 | dependencies: 810 | is-core-module: 2.9.0 811 | path-parse: 1.0.7 812 | dev: true 813 | 814 | /resolve/1.22.1: 815 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 816 | hasBin: true 817 | dependencies: 818 | is-core-module: 2.9.0 819 | path-parse: 1.0.7 820 | supports-preserve-symlinks-flag: 1.0.0 821 | dev: true 822 | 823 | /reusify/1.0.4: 824 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 825 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 826 | dev: true 827 | 828 | /rollup/2.78.1: 829 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 830 | engines: {node: '>=10.0.0'} 831 | hasBin: true 832 | optionalDependencies: 833 | fsevents: 2.3.2 834 | dev: true 835 | 836 | /run-parallel/1.2.0: 837 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 838 | dependencies: 839 | queue-microtask: 1.2.3 840 | dev: true 841 | 842 | /semver/7.3.7: 843 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 844 | engines: {node: '>=10'} 845 | hasBin: true 846 | dependencies: 847 | lru-cache: 6.0.0 848 | dev: true 849 | 850 | /source-map-js/1.0.2: 851 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 852 | engines: {node: '>=0.10.0'} 853 | 854 | /source-map/0.6.1: 855 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 856 | engines: {node: '>=0.10.0'} 857 | 858 | /sourcemap-codec/1.4.8: 859 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 860 | dev: false 861 | 862 | /sprintf-js/1.0.3: 863 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 864 | dev: true 865 | 866 | /string-argv/0.3.1: 867 | resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} 868 | engines: {node: '>=0.6.19'} 869 | dev: true 870 | 871 | /strip-json-comments/3.1.1: 872 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 873 | engines: {node: '>=8'} 874 | dev: true 875 | 876 | /supports-color/7.2.0: 877 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 878 | engines: {node: '>=8'} 879 | dependencies: 880 | has-flag: 4.0.0 881 | dev: true 882 | 883 | /supports-preserve-symlinks-flag/1.0.0: 884 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 885 | engines: {node: '>= 0.4'} 886 | dev: true 887 | 888 | /timsort/0.3.0: 889 | resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} 890 | dev: true 891 | 892 | /to-fast-properties/2.0.0: 893 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 894 | engines: {node: '>=4'} 895 | dev: false 896 | 897 | /to-regex-range/5.0.1: 898 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 899 | engines: {node: '>=8.0'} 900 | dependencies: 901 | is-number: 7.0.0 902 | dev: true 903 | 904 | /ts-morph/14.0.0: 905 | resolution: {integrity: sha512-tO8YQ1dP41fw8GVmeQAdNsD8roZi1JMqB7YwZrqU856DvmG5/710e41q2XauzTYrygH9XmMryaFeLo+kdCziyA==} 906 | dependencies: 907 | '@ts-morph/common': 0.13.0 908 | code-block-writer: 11.0.1 909 | dev: true 910 | 911 | /typescript/4.6.4: 912 | resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} 913 | engines: {node: '>=4.2.0'} 914 | hasBin: true 915 | dev: true 916 | 917 | /typescript/4.7.4: 918 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} 919 | engines: {node: '>=4.2.0'} 920 | hasBin: true 921 | dev: true 922 | 923 | /universalify/0.1.2: 924 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 925 | engines: {node: '>= 4.0.0'} 926 | dev: true 927 | 928 | /universalify/2.0.0: 929 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 930 | engines: {node: '>= 10.0.0'} 931 | dev: true 932 | 933 | /uri-js/4.4.1: 934 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 935 | dependencies: 936 | punycode: 2.1.1 937 | dev: true 938 | 939 | /validator/13.7.0: 940 | resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} 941 | engines: {node: '>= 0.10'} 942 | dev: true 943 | 944 | /vite-plugin-dts/1.2.1_vite@3.1.8: 945 | resolution: {integrity: sha512-V59rsKQnPI6FTGybh/ED4+dyK3UeSkvC1CJzpuDNoXb7mKNUcWmg66EM0N5Ijoc8xDAfZIXYxQjg675YHIDvFw==} 946 | engines: {node: '>=12.0.0'} 947 | peerDependencies: 948 | vite: '>=2.4.4' 949 | dependencies: 950 | '@microsoft/api-extractor': 7.28.3 951 | '@rushstack/node-core-library': 3.49.0 952 | chalk: 4.1.2 953 | debug: 4.3.4 954 | fast-glob: 3.2.11 955 | fs-extra: 10.1.0 956 | ts-morph: 14.0.0 957 | vite: 3.1.8 958 | transitivePeerDependencies: 959 | - supports-color 960 | dev: true 961 | 962 | /vite/3.1.8: 963 | resolution: {integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==} 964 | engines: {node: ^14.18.0 || >=16.0.0} 965 | hasBin: true 966 | peerDependencies: 967 | less: '*' 968 | sass: '*' 969 | stylus: '*' 970 | terser: ^5.4.0 971 | peerDependenciesMeta: 972 | less: 973 | optional: true 974 | sass: 975 | optional: true 976 | stylus: 977 | optional: true 978 | terser: 979 | optional: true 980 | dependencies: 981 | esbuild: 0.15.10 982 | postcss: 8.4.18 983 | resolve: 1.22.1 984 | rollup: 2.78.1 985 | optionalDependencies: 986 | fsevents: 2.3.2 987 | dev: true 988 | 989 | /vue/3.2.40: 990 | resolution: {integrity: sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==} 991 | dependencies: 992 | '@vue/compiler-dom': 3.2.40 993 | '@vue/compiler-sfc': 3.2.40 994 | '@vue/runtime-dom': 3.2.40 995 | '@vue/server-renderer': 3.2.40_vue@3.2.40 996 | '@vue/shared': 3.2.40 997 | dev: false 998 | 999 | /yallist/4.0.0: 1000 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1001 | dev: true 1002 | 1003 | /z-schema/5.0.3: 1004 | resolution: {integrity: sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw==} 1005 | engines: {node: '>=8.0.0'} 1006 | hasBin: true 1007 | dependencies: 1008 | lodash.get: 4.4.2 1009 | lodash.isequal: 4.5.0 1010 | validator: 13.7.0 1011 | optionalDependencies: 1012 | commander: 2.20.3 1013 | dev: true 1014 | --------------------------------------------------------------------------------