From 958edc6025b3222f4e3398a2fcff4d7ac6d66d80 Mon Sep 17 00:00:00 2001 From: 1115332213 <1115332213@qq.com> Date: Tue, 1 Nov 2022 11:08:10 +0800 Subject: [PATCH] Initial commit --- .editorconfig | 14 + .env | 2 + .env.development | 14 + .env.production | 19 + .env.staging | 22 + .eslintignore | 10 + .eslintrc.js | 120 + .gitignore | 21 + .husky/commit-msg | 6 + .husky/common.sh | 9 + .husky/lintstagedrc.js | 8 + .husky/pre-commit | 10 + .markdownlint.json | 11 + .npmrc | 3 + .prettierrc.js | 6 + .stylelintignore | 3 + .vscode/extensions.json | 17 + .vscode/settings.json | 31 + .vscode/vue3.0.code-snippets | 22 + .vscode/vue3.2.code-snippets | 17 + LICENSE | 21 + README.en-US.md | 48 + README.md | 62 + build/cdn.ts | 62 + build/compress.ts | 63 + build/index.ts | 43 + build/info.ts | 50 + build/plugins.ts | 74 + commitlint.config.js | 32 + index.html | 87 + mock/asyncRoutes.ts | 49 + mock/login.ts | 36 + mock/refreshToken.ts | 27 + package.json | 136 + pnpm-lock.yaml | 7733 +++++++++++++++++ postcss.config.js | 8 + public/favicon.ico | Bin 0 -> 1270 bytes public/serverConfig.json | 18 + src/App.vue | 22 + src/api/routes.ts | 10 + src/api/user.ts | 39 + src/assets/iconfont/iconfont.css | 38 + src/assets/iconfont/iconfont.js | 64 + src/assets/iconfont/iconfont.json | 51 + src/assets/iconfont/iconfont.ttf | Bin 0 -> 5580 bytes src/assets/iconfont/iconfont.woff | Bin 0 -> 3380 bytes src/assets/iconfont/iconfont.woff2 | Bin 0 -> 2800 bytes src/assets/login/avatar.svg | 1 + src/assets/login/bg.png | Bin 0 -> 17468 bytes src/assets/login/illustration.svg | 1 + src/assets/status/403.svg | 1 + src/assets/status/404.svg | 1 + src/assets/status/500.svg | 1 + src/assets/svg/back_top.svg | 1 + src/assets/svg/dark.svg | 1 + src/assets/svg/day.svg | 1 + src/assets/svg/enter_outlined.svg | 1 + src/assets/svg/exit_screen.svg | 1 + src/assets/svg/full_screen.svg | 1 + src/assets/svg/keyboard_esc.svg | 1 + src/components/ReAuth/index.ts | 5 + src/components/ReAuth/src/auth.tsx | 20 + src/components/ReIcon/index.ts | 12 + src/components/ReIcon/src/hooks.ts | 49 + src/components/ReIcon/src/iconfont.ts | 48 + .../ReIcon/src/iconifyIconOffline.ts | 88 + .../ReIcon/src/iconifyIconOnline.ts | 30 + src/components/ReIcon/src/types.ts | 20 + src/config/index.ts | 56 + src/directives/auth/index.ts | 13 + src/directives/elResizeDetector/index.ts | 27 + src/directives/index.ts | 2 + src/layout/components/appMain.vue | 148 + src/layout/components/navbar.vue | 133 + src/layout/components/notice/data.ts | 146 + src/layout/components/notice/index.vue | 101 + src/layout/components/notice/noticeItem.vue | 169 + src/layout/components/notice/noticeList.vue | 23 + src/layout/components/panel/index.vue | 143 + src/layout/components/screenfull/index.vue | 17 + .../search/components/SearchFooter.vue | 41 + .../search/components/SearchModal.vue | 172 + .../search/components/SearchResult.vue | 97 + .../components/search/components/index.ts | 3 + src/layout/components/search/index.vue | 18 + src/layout/components/setting/index.vue | 523 ++ src/layout/components/sidebar/breadCrumb.vue | 107 + src/layout/components/sidebar/horizontal.vue | 103 + .../components/sidebar/leftCollapse.vue | 47 + src/layout/components/sidebar/logo.vue | 74 + src/layout/components/sidebar/mixNav.vue | 134 + src/layout/components/sidebar/sidebarItem.vue | 261 + src/layout/components/sidebar/topCollapse.vue | 30 + src/layout/components/sidebar/vertical.vue | 94 + src/layout/components/tag/index.scss | 296 + src/layout/components/tag/index.vue | 596 ++ src/layout/frameView.vue | 68 + src/layout/hooks/useBoolean.ts | 26 + src/layout/hooks/useDataThemeChange.ts | 116 + src/layout/hooks/useLayout.ts | 54 + src/layout/hooks/useNav.ts | 137 + src/layout/hooks/useTag.ts | 232 + src/layout/index.vue | 213 + src/layout/redirect.vue | 24 + src/layout/theme/index.ts | 159 + src/layout/types.ts | 87 + src/main.ts | 61 + src/mockProdServer.ts | 14 + src/plugins/echarts/index.ts | 41 + src/plugins/element-plus/index.ts | 141 + src/plugins/vxe-table/index.scss | 6 + src/plugins/vxe-table/index.ts | 98 + src/router/index.ts | 170 + src/router/modules/error.ts | 39 + src/router/modules/home.ts | 26 + src/router/modules/remaining.ts | 34 + src/router/types.ts | 9 + src/router/utils.ts | 348 + src/store/index.ts | 9 + src/store/modules/app.ts | 65 + src/store/modules/epTheme.ts | 46 + src/store/modules/multiTags.ts | 112 + src/store/modules/permission.ts | 47 + src/store/modules/settings.ts | 39 + src/store/modules/types.ts | 44 + src/store/modules/user.ts | 86 + src/style/dark.scss | 163 + src/style/element-plus.scss | 64 + src/style/index.scss | 26 + src/style/login.css | 90 + src/style/mixin.scss | 28 + src/style/reset.scss | 277 + src/style/sidebar.scss | 647 ++ src/style/tailwind.css | 21 + src/style/transition.scss | 55 + src/utils/auth.ts | 72 + src/utils/http/index.ts | 178 + src/utils/http/types.d.ts | 47 + src/utils/mitt.ts | 21 + src/utils/print.ts | 225 + src/utils/progress/index.ts | 17 + src/utils/propTypes.ts | 34 + src/utils/responsive.ts | 37 + src/views/error/403.vue | 67 + src/views/error/404.vue | 67 + src/views/error/500.vue | 67 + src/views/login/index.vue | 165 + src/views/login/utils/motion.ts | 40 + src/views/login/utils/rule.ts | 28 + src/views/login/utils/static.ts | 5 + src/views/permission/button/index.vue | 75 + src/views/permission/page/index.vue | 64 + src/views/welcome/index.vue | 9 + stylelint.config.js | 92 + tailwind.config.js | 20 + tsconfig.json | 46 + types/global.d.ts | 149 + types/index.d.ts | 33 + types/index.ts | 129 + types/shims-tsx.d.ts | 16 + types/shims-vue.d.ts | 15 + vite.config.ts | 90 + 162 files changed, 18726 insertions(+) create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.staging create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100755 .husky/commit-msg create mode 100644 .husky/common.sh create mode 100644 .husky/lintstagedrc.js create mode 100755 .husky/pre-commit create mode 100644 .markdownlint.json create mode 100644 .npmrc create mode 100644 .prettierrc.js create mode 100644 .stylelintignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/vue3.0.code-snippets create mode 100644 .vscode/vue3.2.code-snippets create mode 100644 LICENSE create mode 100644 README.en-US.md create mode 100644 README.md create mode 100644 build/cdn.ts create mode 100644 build/compress.ts create mode 100644 build/index.ts create mode 100644 build/info.ts create mode 100644 build/plugins.ts create mode 100644 commitlint.config.js create mode 100644 index.html create mode 100644 mock/asyncRoutes.ts create mode 100644 mock/login.ts create mode 100644 mock/refreshToken.ts create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 public/favicon.ico create mode 100644 public/serverConfig.json create mode 100644 src/App.vue create mode 100644 src/api/routes.ts create mode 100644 src/api/user.ts create mode 100644 src/assets/iconfont/iconfont.css create mode 100644 src/assets/iconfont/iconfont.js create mode 100644 src/assets/iconfont/iconfont.json create mode 100644 src/assets/iconfont/iconfont.ttf create mode 100644 src/assets/iconfont/iconfont.woff create mode 100644 src/assets/iconfont/iconfont.woff2 create mode 100644 src/assets/login/avatar.svg create mode 100644 src/assets/login/bg.png create mode 100644 src/assets/login/illustration.svg create mode 100644 src/assets/status/403.svg create mode 100644 src/assets/status/404.svg create mode 100644 src/assets/status/500.svg create mode 100644 src/assets/svg/back_top.svg create mode 100644 src/assets/svg/dark.svg create mode 100644 src/assets/svg/day.svg create mode 100644 src/assets/svg/enter_outlined.svg create mode 100644 src/assets/svg/exit_screen.svg create mode 100644 src/assets/svg/full_screen.svg create mode 100644 src/assets/svg/keyboard_esc.svg create mode 100644 src/components/ReAuth/index.ts create mode 100644 src/components/ReAuth/src/auth.tsx create mode 100644 src/components/ReIcon/index.ts create mode 100644 src/components/ReIcon/src/hooks.ts create mode 100644 src/components/ReIcon/src/iconfont.ts create mode 100644 src/components/ReIcon/src/iconifyIconOffline.ts create mode 100644 src/components/ReIcon/src/iconifyIconOnline.ts create mode 100644 src/components/ReIcon/src/types.ts create mode 100644 src/config/index.ts create mode 100644 src/directives/auth/index.ts create mode 100644 src/directives/elResizeDetector/index.ts create mode 100644 src/directives/index.ts create mode 100644 src/layout/components/appMain.vue create mode 100644 src/layout/components/navbar.vue create mode 100644 src/layout/components/notice/data.ts create mode 100644 src/layout/components/notice/index.vue create mode 100644 src/layout/components/notice/noticeItem.vue create mode 100644 src/layout/components/notice/noticeList.vue create mode 100644 src/layout/components/panel/index.vue create mode 100644 src/layout/components/screenfull/index.vue create mode 100644 src/layout/components/search/components/SearchFooter.vue create mode 100644 src/layout/components/search/components/SearchModal.vue create mode 100644 src/layout/components/search/components/SearchResult.vue create mode 100644 src/layout/components/search/components/index.ts create mode 100644 src/layout/components/search/index.vue create mode 100644 src/layout/components/setting/index.vue create mode 100644 src/layout/components/sidebar/breadCrumb.vue create mode 100644 src/layout/components/sidebar/horizontal.vue create mode 100644 src/layout/components/sidebar/leftCollapse.vue create mode 100644 src/layout/components/sidebar/logo.vue create mode 100644 src/layout/components/sidebar/mixNav.vue create mode 100644 src/layout/components/sidebar/sidebarItem.vue create mode 100644 src/layout/components/sidebar/topCollapse.vue create mode 100644 src/layout/components/sidebar/vertical.vue create mode 100644 src/layout/components/tag/index.scss create mode 100644 src/layout/components/tag/index.vue create mode 100644 src/layout/frameView.vue create mode 100644 src/layout/hooks/useBoolean.ts create mode 100644 src/layout/hooks/useDataThemeChange.ts create mode 100644 src/layout/hooks/useLayout.ts create mode 100644 src/layout/hooks/useNav.ts create mode 100644 src/layout/hooks/useTag.ts create mode 100644 src/layout/index.vue create mode 100644 src/layout/redirect.vue create mode 100644 src/layout/theme/index.ts create mode 100644 src/layout/types.ts create mode 100644 src/main.ts create mode 100644 src/mockProdServer.ts create mode 100644 src/plugins/echarts/index.ts create mode 100644 src/plugins/element-plus/index.ts create mode 100644 src/plugins/vxe-table/index.scss create mode 100644 src/plugins/vxe-table/index.ts create mode 100644 src/router/index.ts create mode 100644 src/router/modules/error.ts create mode 100644 src/router/modules/home.ts create mode 100644 src/router/modules/remaining.ts create mode 100644 src/router/types.ts create mode 100644 src/router/utils.ts create mode 100644 src/store/index.ts create mode 100644 src/store/modules/app.ts create mode 100644 src/store/modules/epTheme.ts create mode 100644 src/store/modules/multiTags.ts create mode 100644 src/store/modules/permission.ts create mode 100644 src/store/modules/settings.ts create mode 100644 src/store/modules/types.ts create mode 100644 src/store/modules/user.ts create mode 100644 src/style/dark.scss create mode 100644 src/style/element-plus.scss create mode 100644 src/style/index.scss create mode 100644 src/style/login.css create mode 100644 src/style/mixin.scss create mode 100644 src/style/reset.scss create mode 100644 src/style/sidebar.scss create mode 100644 src/style/tailwind.css create mode 100644 src/style/transition.scss create mode 100644 src/utils/auth.ts create mode 100644 src/utils/http/index.ts create mode 100644 src/utils/http/types.d.ts create mode 100644 src/utils/mitt.ts create mode 100644 src/utils/print.ts create mode 100644 src/utils/progress/index.ts create mode 100644 src/utils/propTypes.ts create mode 100644 src/utils/responsive.ts create mode 100644 src/views/error/403.vue create mode 100644 src/views/error/404.vue create mode 100644 src/views/error/500.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/login/utils/motion.ts create mode 100644 src/views/login/utils/rule.ts create mode 100644 src/views/login/utils/static.ts create mode 100644 src/views/permission/button/index.vue create mode 100644 src/views/permission/page/index.vue create mode 100644 src/views/welcome/index.vue create mode 100644 stylelint.config.js create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 types/global.d.ts create mode 100644 types/index.d.ts create mode 100644 types/index.ts create mode 100644 types/shims-tsx.d.ts create mode 100644 types/shims-vue.d.ts create mode 100644 vite.config.ts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ea6e20f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env b/.env new file mode 100644 index 0000000..da26759 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +# 项目本地运行端口号 +VITE_PORT = 8848 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..c3f4bbd --- /dev/null +++ b/.env.development @@ -0,0 +1,14 @@ +# 项目本地运行端口号 +VITE_PORT = 8848 + +# 开发环境读取配置文件路径 +VITE_PUBLIC_PATH = / + +# 开发环境代理 +VITE_PROXY_DOMAIN = /api + +# 开发环境路由历史模式 +VITE_ROUTER_HISTORY = "hash" + +# 开发环境后端地址 +VITE_PROXY_DOMAIN_REAL = "http://127.0.0.1:3000" \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..fc87876 --- /dev/null +++ b/.env.production @@ -0,0 +1,19 @@ +# 线上环境项目打包路径 +VITE_PUBLIC_PATH = / + +# 线上环境路由历史模式 +VITE_ROUTER_HISTORY = "hash" + +# 线上环境后端地址 +VITE_PROXY_DOMAIN_REAL = "" + +# 是否为打包后的文件提供传统浏览器兼容性支持 支持 true 不支持 false +VITE_LEGACY = false + +# 是否在打包时使用cdn替换本地库 替换 true 不替换 false +VITE_CDN = false + +# 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件) +# 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +# 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +VITE_COMPRESSION = "none" \ No newline at end of file diff --git a/.env.staging b/.env.staging new file mode 100644 index 0000000..f89ad71 --- /dev/null +++ b/.env.staging @@ -0,0 +1,22 @@ +# 预发布也需要生产环境的行为 +# https://cn.vitejs.dev/guide/env-and-mode.html#modes +NODE_ENV=production + +VITE_PUBLIC_PATH = / + +# 线上环境路由历史模式 +VITE_ROUTER_HISTORY = "hash" + +# 线上环境后端地址 +VITE_PROXY_DOMAIN_REAL = "" + +# 是否为打包后的文件提供传统浏览器兼容性支持 支持 true 不支持 false +VITE_LEGACY = false + +# 是否在打包时使用cdn替换本地库 替换 true 不替换 false +VITE_CDN = false + +# 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件) +# 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +# 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) +VITE_COMPRESSION = "none" \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..d1cfbc8 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,10 @@ +public +dist +*.d.ts +package.json +.eslintrc.js +.prettierrc.js +commitlint.config.js +postcss.config.js +tailwind.config.js +stylelint.config.js \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..009f5bc --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,120 @@ +module.exports = { + root: true, + env: { + node: true + }, + globals: { + // Ref sugar (take 2) + $: "readonly", + $$: "readonly", + $ref: "readonly", + $shallowRef: "readonly", + $computed: "readonly", + + // index.d.ts + // global.d.ts + Fn: "readonly", + PromiseFn: "readonly", + RefType: "readonly", + LabelValueOptions: "readonly", + EmitType: "readonly", + TargetContext: "readonly", + ComponentElRef: "readonly", + ComponentRef: "readonly", + ElRef: "readonly", + global: "readonly", + ForDataType: "readonly", + ComponentRoutes: "readonly", + + // script setup + defineProps: "readonly", + defineEmits: "readonly", + defineExpose: "readonly", + withDefaults: "readonly" + }, + extends: [ + "plugin:vue/vue3-essential", + "eslint:recommended", + "@vue/typescript/recommended", + "@vue/prettier", + "@vue/eslint-config-typescript" + ], + parser: "vue-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + ecmaVersion: 2020, + sourceType: "module", + jsxPragma: "React", + ecmaFeatures: { + jsx: true + } + }, + overrides: [ + { + files: ["*.ts", "*.vue"], + rules: { + "no-undef": "off" + } + }, + { + files: ["*.vue"], + parser: "vue-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + extraFileExtensions: [".vue"], + ecmaVersion: "latest", + ecmaFeatures: { + jsx: true + } + }, + rules: { + "no-undef": "off" + } + } + ], + rules: { + "vue/no-v-html": "off", + "vue/require-default-prop": "off", + "vue/require-explicit-emits": "off", + "vue/multi-word-component-names": "off", + "@typescript-eslint/no-explicit-any": "off", // any + "no-debugger": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", // setup() + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "vue/html-self-closing": [ + "error", + { + html: { + void: "always", + normal: "always", + component: "always" + }, + svg: "always", + math: "always" + } + ], + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_" + } + ], + "no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_" + } + ], + "prettier/prettier": [ + "error", + { + endOfLine: "auto" + } + ] + } +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f387679 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +.eslintcache +report.html + +yarn.lock +npm-debug.log* +.pnpm-error.log* +.pnpm-debug.log +tests/**/coverage/ + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..567ff71 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,6 @@ +#!/bin/sh + +# shellcheck source=./_/husky.sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit "$1" diff --git a/.husky/common.sh b/.husky/common.sh new file mode 100644 index 0000000..5f0540b --- /dev/null +++ b/.husky/common.sh @@ -0,0 +1,9 @@ +#!/bin/sh +command_exists () { + command -v "$1" >/dev/null 2>&1 +} + +# Workaround for Windows 10, Git Bash and Pnpm +if command_exists winpty && test -t 1; then + exec < /dev/tty +fi diff --git a/.husky/lintstagedrc.js b/.husky/lintstagedrc.js new file mode 100644 index 0000000..a9b439c --- /dev/null +++ b/.husky/lintstagedrc.js @@ -0,0 +1,8 @@ +module.exports = { + "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"], + "{!(package)*.json}": ["prettier --write--parser json"], + "package.json": ["prettier --write"], + "*.vue": ["eslint --fix", "prettier --write", "stylelint --fix"], + "*.{vue,css,scss,postcss,less}": ["stylelint --fix", "prettier --write"], + "*.md": ["prettier --write"] +}; diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..c7d15f2 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,10 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" +. "$(dirname "$0")/common.sh" + +[ -n "$CI" ] && exit 0 + +# Format and submit code according to lintstagedrc.js configuration +npm run lint:lint-staged + +npm run lint:pretty diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..d628d44 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,11 @@ +{ + "default": true, + "MD003": false, + "MD033": false, + "MD013": false, + "MD001": false, + "MD025": false, + "MD024": false, + "MD007": { "indent": 4 }, + "no-hard-tabs": false +} diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..0154bc0 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +shamefully-hoist=true +strict-peer-dependencies=false +shell-emulator=true \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..16bb32c --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + bracketSpacing: true, + singleQuote: false, + arrowParens: "avoid", + trailingComma: "none" +}; diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..8e46e10 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,3 @@ +/dist/* +/public/* +public/* \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..041d9c9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,17 @@ +{ + "recommendations": [ + "christian-kohler.path-intellisense", + "vscode-icons-team.vscode-icons", + "davidanson.vscode-markdownlint", + "stylelint.vscode-stylelint", + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "redhat.vscode-yaml", + "csstools.postcss", + "mikestead.dotenv", + "eamodio.gitlens", + "antfu.iconify", + "Vue.volar" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1aa0ecb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,31 @@ +{ + "editor.formatOnType": true, + "editor.formatOnSave": true, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.tabSize": 2, + "editor.formatOnPaste": true, + "editor.guides.bracketPairs": "active", + "files.autoSave": "afterDelay", + "git.confirmSync": false, + "workbench.startupEditor": "newUntitledFile", + "editor.suggestSelection": "first", + "editor.acceptSuggestionOnCommitCharacter": false, + "css.lint.propertyIgnoredDueToDisplay": "ignore", + "editor.quickSuggestions": { + "other": true, + "comments": true, + "strings": true + }, + "files.associations": { + "editor.snippetSuggestions": "top" + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "iconify.excludes": ["el"] +} diff --git a/.vscode/vue3.0.code-snippets b/.vscode/vue3.0.code-snippets new file mode 100644 index 0000000..fdab05b --- /dev/null +++ b/.vscode/vue3.0.code-snippets @@ -0,0 +1,22 @@ +{ + "Vue3.0快速生成模板": { + "prefix": "Vue3.0", + "body": [ + "\n", + "\n", + "", + "$2" + ], + "description": "Vue3.0" + } +} diff --git a/.vscode/vue3.2.code-snippets b/.vscode/vue3.2.code-snippets new file mode 100644 index 0000000..fa637f5 --- /dev/null +++ b/.vscode/vue3.2.code-snippets @@ -0,0 +1,17 @@ +{ + "Vue3.2+快速生成模板": { + "prefix": "Vue3.2+", + "body": [ + "\n", + "\n", + "", + "$2" + ], + "description": "Vue3.2+" + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3084aef --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 啝裳 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.en-US.md b/README.en-US.md new file mode 100644 index 0000000..6bca145 --- /dev/null +++ b/README.en-US.md @@ -0,0 +1,48 @@ +

vue-pure-admin Lite Edition(no i18n version)

+ +[![license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin.svg)](LICENSE) + +**English** | [中文](./README.md) + +## introduce + +The Lite version is based on the shelf extracted from [vue-pure-admin](https://github.com/xiaoxian521/vue-pure-admin), including the main functions, which is more suitable for actual project development, and the packaged size is lower than ` 3MB`, and will permanently sync the full version of the code. After enabling `brotli` compression and `cdn` to replace the native library mode, the package size is less than `500kb` + +## Supporting Video + +- [Click Watch Tutorial](https://www.bilibili.com/video/BV1534y1S7HV) +- [Click Watch UI Design](https://www.bilibili.com/video/BV17g411T7rq) + +## Docs + +- [Click me to view the domestic documentation site](http://yiming_chang.gitee.io/pure-admin-doc) +- [Click me to view foreign document site 1](https://xiaoxian521.github.io/pure-admin-doc) +- [Click me to view foreign document site 2](https://pure-admin-doc.vercel.app) + +## Usage + +### Installation dependencies + +pnpm install + +### Install a package + +pnpm add packageName + +### Uninstall a package + +pnpm remove packageName + +I think you should fork the project first to develop, so that you can pull the update synchronously when I update! ! ! + +## Supporting video tutorial + +bilibili: https://www.bilibili.com/video/BV1534y1S7HV/ + +## ⚠️ Attention + +- The Lite version does not accept any issues and prs. If you have any questions, please go to the full version https://github.com/xiaoxian521/vue-pure-admin/issues/new/choose to mention, thank you! ! ! + +## License + +In principle, no fees and copyrights are charged, and you can use it with confidence, but if you need secondary open source, please contact the author for permission! diff --git a/README.md b/README.md new file mode 100644 index 0000000..f8dcaa6 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +

vue-pure-admin精简版(非国际化版本)

+ +[![license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin.svg)](LICENSE) + +**中文** | [English](./README.en-US.md) + +## 介绍 + +精简版是基于 [vue-pure-admin](https://github.com/xiaoxian521/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小低于 `3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `500kb` + +## 配套视频 + +- [点我查看教程](https://www.bilibili.com/video/BV1534y1S7HV) +- [点我查看 UI 设计](https://www.bilibili.com/video/BV17g411T7rq) + +## 配套文档 + +- [点我查看国内文档站](http://yiming_chang.gitee.io/pure-admin-doc) +- [点我查看国外文档站 1](https://xiaoxian521.github.io/pure-admin-doc) +- [点我查看国外文档站 2](https://pure-admin-doc.vercel.app) + +## 维护者 + +[xiaoxian521](https://github.com/xiaoxian521) + +## 捐赠 + +如果你觉得这个项目对您有帮助,可以帮作者买一杯果汁 🍹 表示支持 + + + +## QQ 交流群 + +一群已满,下面是二群,群里严禁 `黄` 、 `赌` 、 `毒` 、 `vpn` 等违法行为! + + + +## 用法 + +### 安装依赖 + +pnpm install + +### 安装一个包 + +pnpm add 包名 + +### 卸载一个包 + +pnpm remove 包名 + +我认为你应该先 `fork` 项目去开发,以便我更新时您可以同步拉取更新!!! + +## ⚠️ 注意 + +- 精简版不接受任何 `issues` 和 `pr`,如果有问题请到完整版 [issues](https://github.com/xiaoxian521/vue-pure-admin/issues/new/choose) 去提,谢谢!!! + +## 许可证 + +原则上不收取任何费用及版权,可以放心使用,不过如需二次开源(比如用此平台二次开发并开源)请联系作者获取许可! + +[MIT © xiaoxian521-2020](./LICENSE) diff --git a/build/cdn.ts b/build/cdn.ts new file mode 100644 index 0000000..abf71b7 --- /dev/null +++ b/build/cdn.ts @@ -0,0 +1,62 @@ +import { Plugin as importToCDN } from "vite-plugin-cdn-import"; + +/** + * @description 打包时采用`cdn`模式,仅限外网使用(默认不采用,如果需要采用cdn模式,请在 .env.production 文件,将 VITE_CDN 设置成true) + * 平台采用国内cdn:https://www.bootcdn.cn,当然你也可以选择 https://unpkg.com 或者 https://www.jsdelivr.com + * 提醒:mockjs不能用cdn模式引入,会报错。正确的方式是,生产环境删除mockjs,使用真实的后端请求 + * 注意:上面提到的仅限外网使用也不是完全肯定的,如果你们公司内网部署的有相关js、css文件,也可以将下面配置对应改一下,整一套内网版cdn + */ +export const cdn = importToCDN({ + //(prodUrl解释: name: 对应下面modules的name,version: 自动读取本地package.json中dependencies依赖中对应包的版本号,path: 对应下面modules的path) + prodUrl: "https://cdn.bootcdn.net/ajax/libs/{name}/{version}/{path}", + modules: [ + { + name: "vue", + var: "Vue", + path: "vue.global.prod.min.js" + }, + { + name: "vue-router", + var: "VueRouter", + path: "vue-router.global.min.js" + }, + // 项目中没有直接安装vue-demi,但是pinia用到了,所以需要在引入pinia前引入vue-demi(https://github.com/vuejs/pinia/blob/v2/packages/pinia/package.json#L77) + { + name: "vue-demi", + var: "VueDemi", + path: "index.iife.min.js" + }, + { + name: "pinia", + var: "Pinia", + path: "pinia.iife.min.js" + }, + { + name: "element-plus", + var: "ElementPlus", + path: "index.full.min.js", + css: "index.min.css" + }, + { + name: "axios", + var: "axios", + path: "axios.min.js" + }, + { + name: "dayjs", + var: "dayjs", + path: "dayjs.min.js" + }, + { + name: "echarts", + var: "echarts", + path: "echarts.min.js" + }, + { + name: "lodash", + var: "lodash", + // 可写`完整路径`,会替换`prodUrl` + path: "https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js" + } + ] +}); diff --git a/build/compress.ts b/build/compress.ts new file mode 100644 index 0000000..6178986 --- /dev/null +++ b/build/compress.ts @@ -0,0 +1,63 @@ +import type { Plugin } from "vite"; +import { isArray } from "@pureadmin/utils"; +import compressPlugin from "vite-plugin-compression"; + +export const configCompressPlugin = ( + compress: ViteCompression +): Plugin | Plugin[] => { + if (compress === "none") return null; + + const gz = { + // 生成的压缩包后缀 + ext: ".gz", + // 体积大于threshold才会被压缩 + threshold: 0, + // 默认压缩.js|mjs|json|css|html后缀文件,设置成true,压缩全部文件 + filter: () => true, + // 压缩后是否删除原始文件 + deleteOriginFile: false + }; + const br = { + ext: ".br", + algorithm: "brotliCompress", + threshold: 0, + filter: () => true, + deleteOriginFile: false + }; + + const codeList = [ + { k: "gzip", v: gz }, + { k: "brotli", v: br }, + { k: "both", v: [gz, br] } + ]; + + const plugins: Plugin[] = []; + + codeList.forEach(item => { + if (compress.includes(item.k)) { + if (compress.includes("clear")) { + if (isArray(item.v)) { + item.v.forEach(vItem => { + plugins.push( + compressPlugin(Object.assign(vItem, { deleteOriginFile: true })) + ); + }); + } else { + plugins.push( + compressPlugin(Object.assign(item.v, { deleteOriginFile: true })) + ); + } + } else { + if (isArray(item.v)) { + item.v.forEach(vItem => { + plugins.push(compressPlugin(vItem)); + }); + } else { + plugins.push(compressPlugin(item.v)); + } + } + } + }); + + return plugins; +}; diff --git a/build/index.ts b/build/index.ts new file mode 100644 index 0000000..ed7cdfb --- /dev/null +++ b/build/index.ts @@ -0,0 +1,43 @@ +/** 处理环境变量 */ +const warpperEnv = (envConf: Recordable): ViteEnv => { + /** 此处为默认值,无需修改 */ + const ret: ViteEnv = { + VITE_PORT: 8848, + VITE_PUBLIC_PATH: "", + VITE_PROXY_DOMAIN: "", + VITE_PROXY_DOMAIN_REAL: "", + VITE_ROUTER_HISTORY: "", + VITE_LEGACY: false, + VITE_CDN: false, + VITE_COMPRESSION: "none" + }; + + for (const envName of Object.keys(envConf)) { + let realName = envConf[envName].replace(/\\n/g, "\n"); + realName = + realName === "true" ? true : realName === "false" ? false : realName; + + if (envName === "VITE_PORT") { + realName = Number(realName); + } + ret[envName] = realName; + if (typeof realName === "string") { + process.env[envName] = realName; + } else if (typeof realName === "object") { + process.env[envName] = JSON.stringify(realName); + } + } + return ret; +}; + +/** 跨域代理重写 */ +const regExps = (value: string, reg: string): string => { + return value.replace(new RegExp(`^${reg}`, "g"), ""); +}; + +/** 环境变量 */ +const loadEnv = (): ViteEnv => { + return import.meta.env; +}; + +export { warpperEnv, regExps, loadEnv }; diff --git a/build/info.ts b/build/info.ts new file mode 100644 index 0000000..42d9bf6 --- /dev/null +++ b/build/info.ts @@ -0,0 +1,50 @@ +import type { Plugin } from "vite"; +import dayjs, { Dayjs } from "dayjs"; +import duration from "dayjs/plugin/duration"; +import { green, blue, bold } from "picocolors"; +import { getPackageSize } from "@pureadmin/utils"; +dayjs.extend(duration); + +export function viteBuildInfo(): Plugin { + let config: { command: string }; + let startTime: Dayjs; + let endTime: Dayjs; + return { + name: "vite:buildInfo", + configResolved(resolvedConfig: { command: string }) { + config = resolvedConfig; + }, + buildStart() { + console.log( + bold( + green( + `👏欢迎使用${blue( + "[vue-pure-admin]" + )},如果您感觉不错,记得点击后面链接给个star哦💖 https://github.com/xiaoxian521/vue-pure-admin` + ) + ) + ); + if (config.command === "build") { + startTime = dayjs(new Date()); + } + }, + closeBundle() { + if (config.command === "build") { + endTime = dayjs(new Date()); + getPackageSize({ + callback: (size: string) => { + console.log( + bold( + green( + `🎉恭喜打包完成(总用时${dayjs + .duration(endTime.diff(startTime)) + .format("mm分ss秒")},打包后的大小为${size})` + ) + ) + ); + } + }); + } + } + }; +} diff --git a/build/plugins.ts b/build/plugins.ts new file mode 100644 index 0000000..4253c91 --- /dev/null +++ b/build/plugins.ts @@ -0,0 +1,74 @@ +import { cdn } from "./cdn"; +import vue from "@vitejs/plugin-vue"; +import { viteBuildInfo } from "./info"; +import svgLoader from "vite-svg-loader"; +import legacy from "@vitejs/plugin-legacy"; +import vueJsx from "@vitejs/plugin-vue-jsx"; +import { viteMockServe } from "vite-plugin-mock"; +import { configCompressPlugin } from "./compress"; +// import ElementPlus from "unplugin-element-plus/vite"; +import { visualizer } from "rollup-plugin-visualizer"; +import removeConsole from "vite-plugin-remove-console"; +import themePreprocessorPlugin from "@pureadmin/theme"; +import DefineOptions from "unplugin-vue-define-options/vite"; +import { genScssMultipleScopeVars } from "../src/layout/theme"; + +export function getPluginsList( + command: string, + VITE_LEGACY: boolean, + VITE_CDN: boolean, + VITE_COMPRESSION: ViteCompression +) { + const prodMock = true; + const lifecycle = process.env.npm_lifecycle_event; + return [ + vue(), + // jsx、tsx语法支持 + vueJsx(), + VITE_CDN ? cdn : null, + configCompressPlugin(VITE_COMPRESSION), + DefineOptions(), + // 线上环境删除console + removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }), + viteBuildInfo(), + // 自定义主题 + themePreprocessorPlugin({ + scss: { + multipleScopeVars: genScssMultipleScopeVars(), + // 在生产模式是否抽取独立的主题css文件,extract为true以下属性有效 + extract: true, + // 会选取defaultScopeName对应的主题css文件在html添加link + themeLinkTagId: "head", + // "head"||"head-prepend" || "body" ||"body-prepend" + themeLinkTagInjectTo: "head", + // 是否对抽取的css文件内对应scopeName的权重类名移除 + removeCssScopeName: false + } + }), + // svg组件化支持 + svgLoader(), + // ElementPlus({}), + // mock支持 + viteMockServe({ + mockPath: "mock", + localEnabled: command === "serve", + prodEnabled: command !== "serve" && prodMock, + injectCode: ` + import { setupProdMockServer } from './mockProdServer'; + setupProdMockServer(); + `, + logger: false + }), + // 是否为打包后的文件提供传统浏览器兼容性支持 + VITE_LEGACY + ? legacy({ + targets: ["ie >= 11"], + additionalLegacyPolyfills: ["regenerator-runtime/runtime"] + }) + : null, + // 打包分析 + lifecycle === "report" + ? visualizer({ open: true, brotliSize: true, filename: "report.html" }) + : null + ]; +} diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..71bc373 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,32 @@ +module.exports = { + ignores: [commit => commit.includes("init")], + extends: ["@commitlint/config-conventional"], + rules: { + "body-leading-blank": [2, "always"], + "footer-leading-blank": [1, "always"], + "header-max-length": [2, "always", 108], + "subject-empty": [2, "never"], + "type-empty": [2, "never"], + "type-enum": [ + 2, + "always", + [ + "feat", + "fix", + "perf", + "style", + "docs", + "test", + "refactor", + "build", + "ci", + "chore", + "revert", + "wip", + "workflow", + "types", + "release" + ] + ] + } +}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..f8a332e --- /dev/null +++ b/index.html @@ -0,0 +1,87 @@ + + + + + + + + pure-admin-thin + + + + + +
+ +
+
+ + + diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts new file mode 100644 index 0000000..da6a559 --- /dev/null +++ b/mock/asyncRoutes.ts @@ -0,0 +1,49 @@ +// 模拟后端动态生成路由 +import { MockMethod } from "vite-plugin-mock"; + +/** + * roles:页面级别权限,这里模拟二种 "admin"、"common" + * admin:管理员角色 + * common:普通角色 + */ + +const permissionRouter = { + path: "/permission", + meta: { + title: "权限管理", + icon: "lollipop", + rank: 10 + }, + children: [ + { + path: "/permission/page/index", + name: "PermissionPage", + meta: { + title: "页面权限", + roles: ["admin", "common"] + } + }, + { + path: "/permission/button/index", + name: "PermissionButton", + meta: { + title: "按钮权限", + roles: ["admin", "common"], + auths: ["btn_add", "btn_edit", "btn_delete"] + } + } + ] +}; + +export default [ + { + url: "/getAsyncRoutes", + method: "get", + response: () => { + return { + success: true, + data: [permissionRouter] + }; + } + } +] as MockMethod[]; diff --git a/mock/login.ts b/mock/login.ts new file mode 100644 index 0000000..cddd4e4 --- /dev/null +++ b/mock/login.ts @@ -0,0 +1,36 @@ +// 根据角色动态生成路由 +import { MockMethod } from "vite-plugin-mock"; + +export default [ + { + url: "/login", + method: "post", + response: ({ body }) => { + if (body.username === "admin") { + return { + success: true, + data: { + username: "admin", + // 一个用户可能有多个角色 + roles: ["admin"], + accessToken: "eyJhbGciOiJIUzUxMiJ9.admin", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh", + expires: "2023/10/30 00:00:00" + } + }; + } else { + return { + success: true, + data: { + username: "common", + // 一个用户可能有多个角色 + roles: ["common"], + accessToken: "eyJhbGciOiJIUzUxMiJ9.common", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.commonRefresh", + expires: "2023/10/30 00:00:00" + } + }; + } + } + } +] as MockMethod[]; diff --git a/mock/refreshToken.ts b/mock/refreshToken.ts new file mode 100644 index 0000000..dfdb711 --- /dev/null +++ b/mock/refreshToken.ts @@ -0,0 +1,27 @@ +import { MockMethod } from "vite-plugin-mock"; + +// 模拟刷新token接口 +export default [ + { + url: "/refreshToken", + method: "post", + response: ({ body }) => { + if (body.refreshToken) { + return { + success: true, + data: { + accessToken: "eyJhbGciOiJIUzUxMiJ9.admin", + refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh", + // `expires`选择这种日期格式是为了方便调试,后端直接设置时间戳或许更方便(每次都应该递增)。如果后端返回的是时间戳格式,前端开发请来到这个目录`src/utils/auth.ts`,把第`38`行的代码换成expires = data.expires即可。 + expires: "2023/10/30 23:59:59" + } + }; + } else { + return { + success: false, + data: {} + }; + } + } + } +] as MockMethod[]; diff --git a/package.json b/package.json new file mode 100644 index 0000000..e2e742d --- /dev/null +++ b/package.json @@ -0,0 +1,136 @@ +{ + "name": "pure-admin-thin", + "version": "3.6.2", + "private": true, + "scripts": { + "dev": "NODE_OPTIONS=--max-old-space-size=4096 vite", + "serve": "pnpm dev", + "build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build", + "build:staging": "rimraf dist && vite build --mode staging", + "report": "rimraf dist && vite build", + "preview": "vite preview", + "preview:build": "pnpm build && vite preview", + "typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck", + "cloc": "NODE_OPTIONS=--max-old-space-size=4096 cloc . --exclude-dir=node_modules --exclude-lang=YAML", + "clean:cache": "rm -rf node_modules && rm -rf .eslintcache && npm cache clean --force && pnpm install", + "lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock,build}/**/*.{vue,js,ts,tsx}\" --fix", + "lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", + "lint:stylelint": "stylelint --cache --fix \"**/*.{vue,css,scss,postcss,less}\" --cache --cache-location node_modules/.cache/stylelint/", + "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js", + "lint:pretty": "pretty-quick --staged", + "lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint", + "prepare": "husky install", + "preinstall": "npx only-allow pnpm" + }, + "browserslist": [ + "> 1%", + "not ie 11", + "not op_mini all" + ], + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@pureadmin/components": "^1.1.0", + "@pureadmin/descriptions": "^1.1.0", + "@pureadmin/table": "^1.2.0", + "@pureadmin/utils": "^1.1.5", + "@vueuse/core": "^9.4.0", + "@vueuse/motion": "^2.0.0-beta.12", + "@vueuse/shared": "^9.4.0", + "animate.css": "^4.1.1", + "axios": "^1.1.3", + "dayjs": "^1.11.4", + "echarts": "^5.3.3", + "element-plus": "^2.2.16", + "element-resize-detector": "^1.2.3", + "js-cookie": "^3.0.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "mitt": "^3.0.0", + "mockjs": "^1.1.0", + "nprogress": "^0.2.0", + "path": "^0.12.7", + "pinia": "^2.0.21", + "qs": "^6.11.0", + "resize-observer-polyfill": "^1.5.1", + "responsive-storage": "^2.1.0", + "vue": "^3.2.40", + "vue-router": "^4.1.6", + "vue-types": "^4.2.1", + "vxe-table": "^4.3.2", + "xe-utils": "^3.5.6" + }, + "devDependencies": { + "@commitlint/cli": "13.1.0", + "@commitlint/config-conventional": "13.1.0", + "@iconify-icons/ep": "^1.2.7", + "@iconify-icons/ri": "^1.2.3", + "@iconify/vue": "^3.2.1", + "@pureadmin/theme": "^2.4.0", + "@types/element-resize-detector": "1.1.3", + "@types/js-cookie": "^3.0.1", + "@types/lodash": "^4.14.180", + "@types/lodash-es": "^4.17.6", + "@types/mockjs": "1.0.3", + "@types/node": "14.14.14", + "@types/nprogress": "0.2.0", + "@types/qs": "^6.9.7", + "@typescript-eslint/eslint-plugin": "^5.10.2", + "@typescript-eslint/parser": "^5.10.2", + "@vitejs/plugin-legacy": "^2.2.0", + "@vitejs/plugin-vue": "^3.1.2", + "@vitejs/plugin-vue-jsx": "^2.0.1", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-typescript": "^10.0.0", + "@vue/runtime-core": "^3.2.40", + "autoprefixer": "^10.4.12", + "cloc": "^2.10.0", + "cssnano": "^5.1.13", + "eslint": "^8.8.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-vue": "^8.4.1", + "font-awesome": "^4.7.0", + "husky": "^7.0.4", + "lint-staged": "11.1.2", + "picocolors": "^1.0.0", + "postcss": "^8.4.17", + "postcss-html": "^1.5.0", + "postcss-import": "^15.0.0", + "postcss-scss": "^4.0.5", + "prettier": "^2.5.1", + "pretty-quick": "3.1.1", + "rimraf": "3.0.2", + "rollup-plugin-visualizer": "^5.8.2", + "sass": "^1.53.0", + "sass-loader": "^13.0.2", + "stylelint": "^14.3.0", + "stylelint-config-html": "^1.0.0", + "stylelint-config-prettier": "^9.0.3", + "stylelint-config-recommended": "^6.0.0", + "stylelint-config-standard": "^24.0.0", + "stylelint-order": "^5.0.0", + "tailwindcss": "^3.2.1", + "terser": "^5.15.0", + "typescript": "^4.7.4", + "unplugin-vue-define-options": "0.7.3", + "vite": "^3.1.8", + "vite-plugin-cdn-import": "^0.3.5", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-mock": "^2.9.6", + "vite-plugin-remove-console": "^1.1.0", + "vite-svg-loader": "^3.6.0", + "vue-eslint-parser": "^8.2.0", + "vue-tsc": "^0.40.13" + }, + "pnpm": { + "peerDependencyRules": { + "ignoreMissing": [ + "rollup", + "webpack" + ] + } + }, + "repository": "git@github.com:xiaoxian521/pure-admin-thin.git", + "author": "xiaoxian521", + "license": "MIT" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..0b4b64a --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7733 @@ +lockfileVersion: 5.3 + +specifiers: + "@commitlint/cli": 13.1.0 + "@commitlint/config-conventional": 13.1.0 + "@ctrl/tinycolor": ^3.4.1 + "@iconify-icons/ep": ^1.2.7 + "@iconify-icons/ri": ^1.2.3 + "@iconify/vue": ^3.2.1 + "@pureadmin/components": ^1.1.0 + "@pureadmin/descriptions": ^1.1.0 + "@pureadmin/table": ^1.2.0 + "@pureadmin/theme": ^2.4.0 + "@pureadmin/utils": ^1.1.5 + "@types/element-resize-detector": 1.1.3 + "@types/js-cookie": ^3.0.1 + "@types/lodash": ^4.14.180 + "@types/lodash-es": ^4.17.6 + "@types/mockjs": 1.0.3 + "@types/node": 14.14.14 + "@types/nprogress": 0.2.0 + "@types/qs": ^6.9.7 + "@typescript-eslint/eslint-plugin": ^5.10.2 + "@typescript-eslint/parser": ^5.10.2 + "@vitejs/plugin-legacy": ^2.2.0 + "@vitejs/plugin-vue": ^3.1.2 + "@vitejs/plugin-vue-jsx": ^2.0.1 + "@vue/eslint-config-prettier": ^7.0.0 + "@vue/eslint-config-typescript": ^10.0.0 + "@vue/runtime-core": ^3.2.40 + "@vueuse/core": ^9.4.0 + "@vueuse/motion": ^2.0.0-beta.12 + "@vueuse/shared": ^9.4.0 + animate.css: ^4.1.1 + autoprefixer: ^10.4.12 + axios: ^1.1.3 + cloc: ^2.10.0 + cssnano: ^5.1.13 + dayjs: ^1.11.4 + echarts: ^5.3.3 + element-plus: ^2.2.16 + element-resize-detector: ^1.2.3 + eslint: ^8.8.0 + eslint-plugin-prettier: ^4.0.0 + eslint-plugin-vue: ^8.4.1 + font-awesome: ^4.7.0 + husky: ^7.0.4 + js-cookie: ^3.0.1 + lint-staged: 11.1.2 + lodash: ^4.17.21 + lodash-es: ^4.17.21 + lodash-unified: ^1.0.2 + mitt: ^3.0.0 + mockjs: ^1.1.0 + nprogress: ^0.2.0 + path: ^0.12.7 + picocolors: ^1.0.0 + pinia: ^2.0.21 + postcss: ^8.4.17 + postcss-html: ^1.5.0 + postcss-import: ^15.0.0 + postcss-scss: ^4.0.5 + prettier: ^2.5.1 + pretty-quick: 3.1.1 + qs: ^6.11.0 + resize-observer-polyfill: ^1.5.1 + responsive-storage: ^2.1.0 + rimraf: 3.0.2 + rollup-plugin-visualizer: ^5.8.2 + sass: ^1.53.0 + sass-loader: ^13.0.2 + stylelint: ^14.3.0 + stylelint-config-html: ^1.0.0 + stylelint-config-prettier: ^9.0.3 + stylelint-config-recommended: ^6.0.0 + stylelint-config-standard: ^24.0.0 + stylelint-order: ^5.0.0 + tailwindcss: ^3.2.1 + terser: ^5.15.0 + typescript: ^4.7.4 + unplugin-vue-define-options: 0.7.3 + vite: ^3.1.8 + vite-plugin-cdn-import: ^0.3.5 + vite-plugin-compression: ^0.5.1 + vite-plugin-mock: ^2.9.6 + vite-plugin-remove-console: ^1.1.0 + vite-svg-loader: ^3.6.0 + vue: ^3.2.40 + vue-eslint-parser: ^8.2.0 + vue-router: ^4.1.6 + vue-tsc: ^0.40.13 + vue-types: ^4.2.1 + vxe-table: ^4.3.2 + xe-utils: ^3.5.6 + +dependencies: + "@ctrl/tinycolor": 3.4.1 + "@pureadmin/components": 1.1.0_vue@3.2.41 + "@pureadmin/descriptions": 1.1.1 + "@pureadmin/table": 1.2.0 + "@pureadmin/utils": 1.1.5_7f78bda4b8c80174b50d3da38250cc61 + "@vueuse/core": 9.4.0_vue@3.2.41 + "@vueuse/motion": 2.0.0-beta.12_vue@3.2.41 + "@vueuse/shared": 9.4.0_vue@3.2.41 + animate.css: 4.1.1 + axios: 1.1.3 + dayjs: 1.11.5 + echarts: 5.4.0 + element-plus: 2.2.18_vue@3.2.41 + element-resize-detector: 1.2.4 + js-cookie: 3.0.1 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd + mitt: 3.0.0 + mockjs: 1.1.0 + nprogress: 0.2.0 + path: 0.12.7 + pinia: 2.0.23_typescript@4.8.4+vue@3.2.41 + qs: 6.11.0 + resize-observer-polyfill: 1.5.1 + responsive-storage: 2.1.0 + vue: 3.2.41 + vue-router: 4.1.6_vue@3.2.41 + vue-types: 4.2.1_vue@3.2.41 + vxe-table: 4.3.5_vue@3.2.41+xe-utils@3.5.7 + xe-utils: 3.5.7 + +devDependencies: + "@commitlint/cli": 13.1.0 + "@commitlint/config-conventional": 13.1.0 + "@iconify-icons/ep": 1.2.9 + "@iconify-icons/ri": 1.2.3 + "@iconify/vue": 3.2.1_vue@3.2.41 + "@pureadmin/theme": 2.4.0 + "@types/element-resize-detector": 1.1.3 + "@types/js-cookie": 3.0.2 + "@types/lodash": 4.14.186 + "@types/lodash-es": 4.17.6 + "@types/mockjs": 1.0.3 + "@types/node": 14.14.14 + "@types/nprogress": 0.2.0 + "@types/qs": 6.9.7 + "@typescript-eslint/eslint-plugin": 5.40.1_a28c3c0d332041765cb07f6bda2cfee6 + "@typescript-eslint/parser": 5.40.1_eslint@8.25.0+typescript@4.8.4 + "@vitejs/plugin-legacy": 2.2.0_terser@5.15.1+vite@3.1.8 + "@vitejs/plugin-vue": 3.1.2_vite@3.1.8+vue@3.2.41 + "@vitejs/plugin-vue-jsx": 2.0.1_vite@3.1.8+vue@3.2.41 + "@vue/eslint-config-prettier": 7.0.0_eslint@8.25.0+prettier@2.7.1 + "@vue/eslint-config-typescript": 10.0.0_07d3deb2283d82fbf0376bf257049d49 + "@vue/runtime-core": 3.2.41 + autoprefixer: 10.4.12_postcss@8.4.18 + cloc: 2.10.0 + cssnano: 5.1.13_postcss@8.4.18 + eslint: 8.25.0 + eslint-plugin-prettier: 4.2.1_eslint@8.25.0+prettier@2.7.1 + eslint-plugin-vue: 8.7.1_eslint@8.25.0 + font-awesome: 4.7.0 + husky: 7.0.4 + lint-staged: 11.1.2 + picocolors: 1.0.0 + postcss: 8.4.18 + postcss-html: 1.5.0 + postcss-import: 15.0.0_postcss@8.4.18 + postcss-scss: 4.0.5_postcss@8.4.18 + prettier: 2.7.1 + pretty-quick: 3.1.1_prettier@2.7.1 + rimraf: 3.0.2 + rollup-plugin-visualizer: 5.8.3 + sass: 1.55.0 + sass-loader: 13.1.0_sass@1.55.0 + stylelint: 14.14.0 + stylelint-config-html: 1.1.0_d583a01b74088eff946efe8e3f4544a9 + stylelint-config-prettier: 9.0.3_stylelint@14.14.0 + stylelint-config-recommended: 6.0.0_stylelint@14.14.0 + stylelint-config-standard: 24.0.0_stylelint@14.14.0 + stylelint-order: 5.0.0_stylelint@14.14.0 + tailwindcss: 3.2.1 + terser: 5.15.1 + typescript: 4.8.4 + unplugin-vue-define-options: 0.7.3_vite@3.1.8+vue@3.2.41 + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + vite-plugin-cdn-import: 0.3.5 + vite-plugin-compression: 0.5.1_vite@3.1.8 + vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@3.1.8 + vite-plugin-remove-console: 1.1.0 + vite-svg-loader: 3.6.0 + vue-eslint-parser: 8.3.0_eslint@8.25.0 + vue-tsc: 0.40.13_typescript@4.8.4 + +packages: + /@ampproject/remapping/2.2.0: + resolution: + { + integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/gen-mapping": 0.1.1 + "@jridgewell/trace-mapping": 0.3.17 + dev: true + + /@ant-design/colors/6.0.0: + resolution: + { + integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + } + dependencies: + "@ctrl/tinycolor": 3.4.1 + dev: false + + /@ant-design/icons-svg/4.2.1: + resolution: + { + integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== + } + dev: false + + /@ant-design/icons-vue/6.1.0_vue@3.2.41: + resolution: + { + integrity: sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA== + } + peerDependencies: + vue: ">=3.0.3" + dependencies: + "@ant-design/colors": 6.0.0 + "@ant-design/icons-svg": 4.2.1 + vue: 3.2.41 + dev: false + + /@babel/code-frame/7.18.6: + resolution: + { + integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/highlight": 7.18.6 + dev: true + + /@babel/compat-data/7.19.4: + resolution: + { + integrity: sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/core/7.19.3: + resolution: + { + integrity: sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== + } + engines: { node: ">=6.9.0" } + dependencies: + "@ampproject/remapping": 2.2.0 + "@babel/code-frame": 7.18.6 + "@babel/generator": 7.19.5 + "@babel/helper-compilation-targets": 7.19.3_@babel+core@7.19.3 + "@babel/helper-module-transforms": 7.19.0 + "@babel/helpers": 7.19.4 + "@babel/parser": 7.19.4 + "@babel/template": 7.18.10 + "@babel/traverse": 7.19.4 + "@babel/types": 7.19.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.19.5: + resolution: + { + integrity: sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + "@jridgewell/gen-mapping": 0.3.2 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: + { + integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.3: + resolution: + { + integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/compat-data": 7.19.4 + "@babel/core": 7.19.3 + "@babel/helper-validator-option": 7.18.6 + browserslist: 4.21.4 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.3: + resolution: + { + integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/core": 7.19.3 + "@babel/helper-annotate-as-pure": 7.18.6 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.19.0 + "@babel/helper-member-expression-to-functions": 7.18.9 + "@babel/helper-optimise-call-expression": 7.18.6 + "@babel/helper-replace-supers": 7.19.1 + "@babel/helper-split-export-declaration": 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor/7.18.9: + resolution: + { + integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-function-name/7.19.0: + resolution: + { + integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.18.10 + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-hoist-variables/7.18.6: + resolution: + { + integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-member-expression-to-functions/7.18.9: + resolution: + { + integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-module-imports/7.18.6: + resolution: + { + integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-module-transforms/7.19.0: + resolution: + { + integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-module-imports": 7.18.6 + "@babel/helper-simple-access": 7.19.4 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/helper-validator-identifier": 7.19.1 + "@babel/template": 7.18.10 + "@babel/traverse": 7.19.4 + "@babel/types": 7.19.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: + { + integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-plugin-utils/7.19.0: + resolution: + { + integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-replace-supers/7.19.1: + resolution: + { + integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-member-expression-to-functions": 7.18.9 + "@babel/helper-optimise-call-expression": 7.18.6 + "@babel/traverse": 7.19.4 + "@babel/types": 7.19.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.19.4: + resolution: + { + integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-split-export-declaration/7.18.6: + resolution: + { + integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.4 + dev: true + + /@babel/helper-string-parser/7.19.4: + resolution: + { + integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + } + engines: { node: ">=6.9.0" } + + /@babel/helper-validator-identifier/7.19.1: + resolution: + { + integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + } + engines: { node: ">=6.9.0" } + + /@babel/helper-validator-option/7.18.6: + resolution: + { + integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helpers/7.19.4: + resolution: + { + integrity: sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.18.10 + "@babel/traverse": 7.19.4 + "@babel/types": 7.19.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.18.6: + resolution: + { + integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.19.4: + resolution: + { + integrity: sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== + } + engines: { node: ">=6.0.0" } + hasBin: true + dependencies: + "@babel/types": 7.19.4 + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.19.3: + resolution: + { + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.19.3 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.3: + resolution: + { + integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.19.3 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.3: + resolution: + { + integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.19.3 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.3: + resolution: + { + integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.19.3 + "@babel/helper-create-class-features-plugin": 7.19.0_@babel+core@7.19.3 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/plugin-syntax-typescript": 7.18.6_@babel+core@7.19.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/standalone/7.19.5: + resolution: + { + integrity: sha512-H2eXpo1ZfTZhBwsCbfSKHrjTb934laSas14hdjULLSKmLxU4B7kazQKm3mjpDuH/HyPmRq1cbrGL7223M7EDFw== + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/template/7.18.10: + resolution: + { + integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.18.6 + "@babel/parser": 7.19.4 + "@babel/types": 7.19.4 + dev: true + + /@babel/traverse/7.19.4: + resolution: + { + integrity: sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.18.6 + "@babel/generator": 7.19.5 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.19.0 + "@babel/helper-hoist-variables": 7.18.6 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/parser": 7.19.4 + "@babel/types": 7.19.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.19.4: + resolution: + { + integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-string-parser": 7.19.4 + "@babel/helper-validator-identifier": 7.19.1 + to-fast-properties: 2.0.0 + + /@commitlint/cli/13.1.0: + resolution: + { + integrity: sha512-xN/uNYWtGTva5OMSd+xA6e6/c2jk8av7MUbdd6w2cw89u6z3fAWoyiH87X0ewdSMNYmW/6B3L/2dIVGHRDID5w== + } + engines: { node: ">=v12" } + hasBin: true + dependencies: + "@commitlint/format": 13.2.0 + "@commitlint/lint": 13.2.0 + "@commitlint/load": 13.2.1 + "@commitlint/read": 13.2.0 + "@commitlint/types": 13.2.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.6.0 + dev: true + + /@commitlint/config-conventional/13.1.0: + resolution: + { + integrity: sha512-zukJXqdr6jtMiVRy3tTHmwgKcUMGfqKDEskRigc5W3k2aYF4gBAtCEjMAJGZgSQE4DMcHeok0pEV2ANmTpb0cw== + } + engines: { node: ">=v12" } + dependencies: + conventional-changelog-conventionalcommits: 4.6.3 + dev: true + + /@commitlint/ensure/13.2.0: + resolution: + { + integrity: sha512-rqhT62RehdLTRBu8OrPHnRCCd/7RmHEE4TiTlT4BLlr5ls5jlZhecOQWJ8np872uCNirrJ5NFjnjYYdbkNoW9Q== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/types": 13.2.0 + lodash: 4.17.21 + dev: true + + /@commitlint/execute-rule/13.2.0: + resolution: + { + integrity: sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g== + } + engines: { node: ">=v12" } + dev: true + + /@commitlint/format/13.2.0: + resolution: + { + integrity: sha512-yNBQJe6YFhM1pJAta4LvzQxccSKof6axJH7ALYjuhQqfT8AKlad7Y/2SuJ07ioyreNIqwOTuF2UfU8yJ7JzEIQ== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/types": 13.2.0 + chalk: 4.1.2 + dev: true + + /@commitlint/is-ignored/13.2.0: + resolution: + { + integrity: sha512-onnx4WctHFPPkHGFFAZBIWRSaNwuhixIIfbwPhcZ6IewwQX5n4jpjwM1GokA7vhlOnQ57W7AavbKUGjzIVtnRQ== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/types": 13.2.0 + semver: 7.3.5 + dev: true + + /@commitlint/lint/13.2.0: + resolution: + { + integrity: sha512-5XYkh0e9ehHjA7BxAHFpjPgr1qqbFY8OFG1wpBiAhycbYBtJnQmculA2wcwqTM40YCUBqEvWFdq86jTG8fbkMw== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/is-ignored": 13.2.0 + "@commitlint/parse": 13.2.0 + "@commitlint/rules": 13.2.0 + "@commitlint/types": 13.2.0 + dev: true + + /@commitlint/load/13.2.1: + resolution: + { + integrity: sha512-qlaJkj0hfa9gtWRfCfbgFBTK3GYQRmjZhba4l9mUu4wV9lEZ4ICFlrLtd/8kaLXf/8xbrPhkAPkVFOAqM0YwUQ== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/execute-rule": 13.2.0 + "@commitlint/resolve-extends": 13.2.0 + "@commitlint/types": 13.2.0 + "@endemolshinegroup/cosmiconfig-typescript-loader": 3.0.2_72d781bdd7b0c1239c8cb5d589ccc43e + chalk: 4.1.2 + cosmiconfig: 7.0.1 + lodash: 4.17.21 + resolve-from: 5.0.0 + typescript: 4.8.4 + dev: true + + /@commitlint/message/13.2.0: + resolution: + { + integrity: sha512-+LlErJj2F2AC86xJb33VJIvSt25xqSF1I0b0GApSgoUtQBeJhx4SxIj1BLvGcLVmbRmbgTzAFq/QylwLId7EhA== + } + engines: { node: ">=v12" } + dev: true + + /@commitlint/parse/13.2.0: + resolution: + { + integrity: sha512-AtfKSQJQADbDhW+kuC5PxOyBANsYCuuJlZRZ2PYslOz2rvWwZ93zt+nKjM4g7C9ETbz0uq4r7/EoOsTJ2nJqfQ== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/types": 13.2.0 + conventional-changelog-angular: 5.0.13 + conventional-commits-parser: 3.2.4 + dev: true + + /@commitlint/read/13.2.0: + resolution: + { + integrity: sha512-7db5e1Bn3re6hQN0SqygTMF/QX6/MQauoJn3wJiUHE93lvwO6aFQxT3qAlYeyBPwfWsmDz/uSH454jtrSsv3Uw== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/top-level": 13.2.0 + "@commitlint/types": 13.2.0 + fs-extra: 10.1.0 + git-raw-commits: 2.0.11 + dev: true + + /@commitlint/resolve-extends/13.2.0: + resolution: + { + integrity: sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw== + } + engines: { node: ">=v12" } + dependencies: + import-fresh: 3.3.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: true + + /@commitlint/rules/13.2.0: + resolution: + { + integrity: sha512-O3A9S7blOzvHfzrJrUQe9JxdtGy154ol/GXHwvd8WfMJ10y5ryBB4b6+0YZ1XhItWzrEASOfOKbD++EdLV90dQ== + } + engines: { node: ">=v12" } + dependencies: + "@commitlint/ensure": 13.2.0 + "@commitlint/message": 13.2.0 + "@commitlint/to-lines": 13.2.0 + "@commitlint/types": 13.2.0 + execa: 5.1.1 + dev: true + + /@commitlint/to-lines/13.2.0: + resolution: + { + integrity: sha512-ZfWZix2y/CzewReCrj5g0nKOEfj5HW9eBMDrqjJJMPApve00CWv0tYrFCGXuGlv244lW4uvWJt6J/0HLRWsfyg== + } + engines: { node: ">=v12" } + dev: true + + /@commitlint/top-level/13.2.0: + resolution: + { + integrity: sha512-knBvWYbIq6VV6VPHrVeDsxDiJq4Zq6cv5NIYU3iesKAsmK2KlLfsZPa+Ig96Y4AqAPU3zNJwjHxYkz9qxdBbfA== + } + engines: { node: ">=v12" } + dependencies: + find-up: 5.0.0 + dev: true + + /@commitlint/types/13.2.0: + resolution: + { + integrity: sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ== + } + engines: { node: ">=v12" } + dependencies: + chalk: 4.1.2 + dev: true + + /@csstools/selector-specificity/2.0.2_1d546e2941f6b4ca889831b9fbdc79d8: + resolution: + { + integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== + } + engines: { node: ^12 || ^14 || >=16 } + peerDependencies: + postcss: ^8.2 + postcss-selector-parser: ^6.0.10 + dependencies: + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + dev: true + + /@ctrl/tinycolor/3.4.1: + resolution: + { + integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== + } + engines: { node: ">=10" } + dev: false + + /@element-plus/icons-vue/2.0.10_vue@3.2.41: + resolution: + { + integrity: sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ== + } + peerDependencies: + vue: ^3.2.0 + dependencies: + vue: 3.2.41 + dev: false + + /@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_72d781bdd7b0c1239c8cb5d589ccc43e: + resolution: + { + integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA== + } + engines: { node: ">=10.0.0" } + peerDependencies: + cosmiconfig: ">=6" + dependencies: + cosmiconfig: 7.0.1 + lodash.get: 4.4.2 + make-error: 1.3.6 + ts-node: 9.1.1_typescript@4.8.4 + tslib: 2.4.0 + transitivePeerDependencies: + - typescript + dev: true + + /@esbuild/android-arm/0.15.11: + resolution: + { + integrity: sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA== + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.11: + resolution: + { + integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw== + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/1.3.3: + resolution: + { + integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.0 + globals: 13.17.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@floating-ui/core/1.0.1: + resolution: + { + integrity: sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA== + } + dev: false + + /@floating-ui/dom/1.0.2: + resolution: + { + integrity: sha512-5X9WSvZ8/fjy3gDu8yx9HAA4KG1lazUN2P4/VnaXLxTO9Dz53HI1oYoh1OlhqFNlHgGDiwFX5WhFCc2ljbW3yA== + } + dependencies: + "@floating-ui/core": 1.0.1 + dev: false + + /@humanwhocodes/config-array/0.10.7: + resolution: + { + integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + } + engines: { node: ">=12.22" } + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + } + dev: true + + /@iconify-icons/ep/1.2.9: + resolution: + { + integrity: sha512-oDVLB8E/qHWfJzWlYW70N06E2L4mLB/1q6yoDk6KqJGWRV+KlyDHOem/yXWqUiU9ddmnBHFz/mGF7+3NJ2bJHQ== + } + dependencies: + "@iconify/types": 2.0.0 + dev: true + + /@iconify-icons/ri/1.2.3: + resolution: + { + integrity: sha512-9yIE6qVgz9t8B5dQOJFC0N3NUwgoARiJjZ3z2IAV+vxLwa3tO/OTlddfDBBZhOVquB7DIh4cWqYC2dSfbWbfhw== + } + dependencies: + "@iconify/types": 2.0.0 + dev: true + + /@iconify/types/2.0.0: + resolution: + { + integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== + } + dev: true + + /@iconify/vue/3.2.1_vue@3.2.41: + resolution: + { + integrity: sha512-c4R6ZgFo1JrJ8aPMMgOPgfU7lBswihMGR+yWe/P4ZukC3kTkeT4+lkt9Pc/itVFMkwva/S/7u9YofmYv57fnNQ== + } + peerDependencies: + vue: 3.x + dependencies: + vue: 3.2.41 + dev: true + + /@jridgewell/gen-mapping/0.1.1: + resolution: + { + integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.14 + dev: true + + /@jridgewell/gen-mapping/0.3.2: + resolution: + { + integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.14 + "@jridgewell/trace-mapping": 0.3.17 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: + { + integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/source-map/0.3.2: + resolution: + { + integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + } + dependencies: + "@jridgewell/gen-mapping": 0.3.2 + "@jridgewell/trace-mapping": 0.3.17 + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: + { + integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + } + dev: true + + /@jridgewell/trace-mapping/0.3.17: + resolution: + { + integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + } + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + } + engines: { node: ">= 8" } + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.13.0 + dev: true + + /@pureadmin/components/1.1.0_vue@3.2.41: + resolution: + { + integrity: sha512-Y7FCUVQVkZ2P3K/3vLrfQOfpjbf8g0TDPUWuFUlaq6aIW3BRduiVfqn4k/r3TX6LtasxGvgnJ/TO9tGed5VlTg== + } + peerDependencies: + vue: ^3.2.0 + dependencies: + "@ant-design/icons-svg": 4.2.1 + "@ant-design/icons-vue": 6.1.0_vue@3.2.41 + vue: 3.2.41 + dev: false + + /@pureadmin/descriptions/1.1.1: + resolution: + { + integrity: sha512-4BHLKomLU/LxGs5EUA+h+aKNrJEkhrU6+QE8VoWfJZ8VTU6ddvFLT/Pi4WuO5CWNXM9ZjqvHLFFVwEPlKntqtg== + } + dependencies: + "@element-plus/icons-vue": 2.0.10_vue@3.2.41 + element-plus: 2.2.18_vue@3.2.41 + vue: 3.2.41 + transitivePeerDependencies: + - "@vue/composition-api" + dev: false + + /@pureadmin/table/1.2.0: + resolution: + { + integrity: sha512-mJBpMj0YkaqTM5TDz+ek/f8h74qRLhDc/gLJhBq0wpyfCgG++Jd/9i+QUj8gedA5oN8IL6LOSFbcvlGDYxHgkw== + } + dependencies: + element-plus: 2.2.18_vue@3.2.41 + vue: 3.2.41 + transitivePeerDependencies: + - "@vue/composition-api" + dev: false + + /@pureadmin/theme/2.4.0: + resolution: + { + integrity: sha512-aqX2O5WpqOCUiy6jhle92Pj7gDqF1/cHPWD+fWcDmmgmV7l7zqEDMWmZI1Iueg55fGxR39D400LaD2VrE8ihGA== + } + dependencies: + "@zougt/some-loader-utils": 1.4.3 + fs-extra: 10.1.0 + string-hash: 1.1.3 + dev: true + + /@pureadmin/utils/1.1.5_7f78bda4b8c80174b50d3da38250cc61: + resolution: + { + integrity: sha512-5nQZyFAbs59gkMBj0WLox7BlY7llILR/ENo2QNEKW6avMt8sDL1+858EFjEbELl6enPsVvJpoCTxatmZzVjyAw== + } + peerDependencies: + dayjs: "*" + echarts: "*" + vue: "*" + peerDependenciesMeta: + dayjs: + optional: true + echarts: + optional: true + vue: + optional: true + dependencies: + dayjs: 1.11.5 + echarts: 5.4.0 + vue: 3.2.41 + dev: false + + /@rollup/plugin-node-resolve/13.3.0: + resolution: + { + integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== + } + engines: { node: ">= 10.0.0" } + peerDependencies: + rollup: ^2.42.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + "@rollup/pluginutils": 3.1.0 + "@types/resolve": 1.17.1 + deepmerge: 4.2.2 + is-builtin-module: 3.2.0 + is-module: 1.0.0 + resolve: 1.22.1 + dev: true + + /@rollup/pluginutils/3.1.0: + resolution: + { + integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + } + engines: { node: ">= 8.0.0" } + peerDependencies: + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + "@types/estree": 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: + { + integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + } + engines: { node: ">= 8.0.0" } + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@sxzz/popperjs-es/2.11.7: + resolution: + { + integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ== + } + dev: false + + /@trysound/sax/0.2.0: + resolution: + { + integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + } + engines: { node: ">=10.13.0" } + dev: true + + /@types/element-resize-detector/1.1.3: + resolution: + { + integrity: sha512-rqmeHxzNMPar/3IbdQRm+mydv8KlEXUtcp5M47rbZUEjslTjg+bT5+OXCknTCIy1AfvNR0Kio44iMY2zUH65CQ== + } + dev: true + + /@types/estree/0.0.39: + resolution: + { + integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + } + dev: true + + /@types/js-cookie/3.0.2: + resolution: + { + integrity: sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA== + } + dev: true + + /@types/json-schema/7.0.11: + resolution: + { + integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + } + dev: true + + /@types/lodash-es/4.17.6: + resolution: + { + integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg== + } + dependencies: + "@types/lodash": 4.14.186 + + /@types/lodash/4.14.186: + resolution: + { + integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== + } + + /@types/minimatch/3.0.5: + resolution: + { + integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + } + dev: true + + /@types/minimist/1.2.2: + resolution: + { + integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + } + dev: true + + /@types/mockjs/1.0.3: + resolution: + { + integrity: sha512-OlwyyyoY81P8f7FU0zILUPxqQQ3/W+CwbqI6dWvOxaH8w948fAl1+hOG9C9ZgJcwzG+aloJcsastY4c4p91R1Q== + } + dev: true + + /@types/mockjs/1.0.7: + resolution: + { + integrity: sha512-OCxXz6hEaJOVpRwuJMiVY5a6LtJcih+br9gwB/Q8ooOBikvk5FpBQ31OlNimXo3EqKha1Z7PFBni+q9m+8NCWg== + } + dev: true + + /@types/node/14.14.14: + resolution: + { + integrity: sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== + } + dev: true + + /@types/normalize-package-data/2.4.1: + resolution: + { + integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + } + dev: true + + /@types/nprogress/0.2.0: + resolution: + { + integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== + } + dev: true + + /@types/parse-json/4.0.0: + resolution: + { + integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + } + dev: true + + /@types/qs/6.9.7: + resolution: + { + integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + } + dev: true + + /@types/resolve/1.17.1: + resolution: + { + integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + } + dependencies: + "@types/node": 14.14.14 + dev: true + + /@types/semver/7.3.12: + resolution: + { + integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== + } + dev: true + + /@types/web-bluetooth/0.0.14: + resolution: + { + integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A== + } + dev: false + + /@types/web-bluetooth/0.0.16: + resolution: + { + integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ== + } + dev: false + + /@typescript-eslint/eslint-plugin/5.40.1_a28c3c0d332041765cb07f6bda2cfee6: + resolution: + { + integrity: sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/parser": 5.40.1_eslint@8.25.0+typescript@4.8.4 + "@typescript-eslint/scope-manager": 5.40.1 + "@typescript-eslint/type-utils": 5.40.1_eslint@8.25.0+typescript@4.8.4 + "@typescript-eslint/utils": 5.40.1_eslint@8.25.0+typescript@4.8.4 + debug: 4.3.4 + eslint: 8.25.0 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.40.1_eslint@8.25.0+typescript@4.8.4: + resolution: + { + integrity: sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/scope-manager": 5.40.1 + "@typescript-eslint/types": 5.40.1 + "@typescript-eslint/typescript-estree": 5.40.1_typescript@4.8.4 + debug: 4.3.4 + eslint: 8.25.0 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.40.1: + resolution: + { + integrity: sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.40.1 + "@typescript-eslint/visitor-keys": 5.40.1 + dev: true + + /@typescript-eslint/type-utils/5.40.1_eslint@8.25.0+typescript@4.8.4: + resolution: + { + integrity: sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/typescript-estree": 5.40.1_typescript@4.8.4 + "@typescript-eslint/utils": 5.40.1_eslint@8.25.0+typescript@4.8.4 + debug: 4.3.4 + eslint: 8.25.0 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.40.1: + resolution: + { + integrity: sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@typescript-eslint/typescript-estree/5.40.1_typescript@4.8.4: + resolution: + { + integrity: sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/types": 5.40.1 + "@typescript-eslint/visitor-keys": 5.40.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.40.1_eslint@8.25.0+typescript@4.8.4: + resolution: + { + integrity: sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + "@types/json-schema": 7.0.11 + "@types/semver": 7.3.12 + "@typescript-eslint/scope-manager": 5.40.1 + "@typescript-eslint/types": 5.40.1 + "@typescript-eslint/typescript-estree": 5.40.1_typescript@4.8.4 + eslint: 8.25.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.25.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.40.1: + resolution: + { + integrity: sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.40.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /@vitejs/plugin-legacy/2.2.0_terser@5.15.1+vite@3.1.8: + resolution: + { + integrity: sha512-xkSXZl2LNk0KKyo5CJknNW84mSlmHIClFzsBuFXkX3yBt+Lr8UO/n4QOg2X7+jvurgBRies9FRn3ZvMem+TmIg== + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + terser: ^5.4.0 + vite: ^3.0.0 + dependencies: + "@babel/standalone": 7.19.5 + core-js: 3.25.5 + magic-string: 0.26.7 + regenerator-runtime: 0.13.10 + systemjs: 6.13.0 + terser: 5.15.1 + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + dev: true + + /@vitejs/plugin-vue-jsx/2.0.1_vite@3.1.8+vue@3.2.41: + resolution: + { + integrity: sha512-lmiR1k9+lrF7LMczO0pxtQ8mOn6XeppJDHxnpxkJQpT5SiKz4SKhKdeNstXaTNuR8qZhUo5X0pJlcocn72Y4Jg== + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^3.0.0 + vue: ^3.0.0 + dependencies: + "@babel/core": 7.19.3 + "@babel/plugin-syntax-import-meta": 7.10.4_@babel+core@7.19.3 + "@babel/plugin-transform-typescript": 7.19.3_@babel+core@7.19.3 + "@vue/babel-plugin-jsx": 1.1.1_@babel+core@7.19.3 + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + vue: 3.2.41 + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue/3.1.2_vite@3.1.8+vue@3.2.41: + resolution: + { + integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ== + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + dependencies: + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + vue: 3.2.41 + dev: true + + /@volar/code-gen/0.40.13: + resolution: + { + integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA== + } + dependencies: + "@volar/source-map": 0.40.13 + dev: true + + /@volar/source-map/0.40.13: + resolution: + { + integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg== + } + dependencies: + "@vue/reactivity": 3.2.38 + dev: true + + /@volar/typescript-faster/0.40.13: + resolution: + { + integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw== + } + dependencies: + semver: 7.3.8 + dev: true + + /@volar/vue-language-core/0.40.13: + resolution: + { + integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q== + } + dependencies: + "@volar/code-gen": 0.40.13 + "@volar/source-map": 0.40.13 + "@vue/compiler-core": 3.2.41 + "@vue/compiler-dom": 3.2.41 + "@vue/compiler-sfc": 3.2.41 + "@vue/reactivity": 3.2.41 + "@vue/shared": 3.2.41 + dev: true + + /@volar/vue-typescript/0.40.13: + resolution: + { + integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ== + } + dependencies: + "@volar/code-gen": 0.40.13 + "@volar/typescript-faster": 0.40.13 + "@volar/vue-language-core": 0.40.13 + dev: true + + /@vue/babel-helper-vue-transform-on/1.0.2: + resolution: + { + integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== + } + dev: true + + /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.19.3: + resolution: + { + integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== + } + dependencies: + "@babel/helper-module-imports": 7.18.6 + "@babel/plugin-syntax-jsx": 7.18.6_@babel+core@7.19.3 + "@babel/template": 7.18.10 + "@babel/traverse": 7.19.4 + "@babel/types": 7.19.4 + "@vue/babel-helper-vue-transform-on": 1.0.2 + camelcase: 6.3.0 + html-tags: 3.2.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - "@babel/core" + - supports-color + dev: true + + /@vue/compiler-core/3.2.41: + resolution: + { + integrity: sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw== + } + dependencies: + "@babel/parser": 7.19.4 + "@vue/shared": 3.2.41 + estree-walker: 2.0.2 + source-map: 0.6.1 + + /@vue/compiler-dom/3.2.41: + resolution: + { + integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw== + } + dependencies: + "@vue/compiler-core": 3.2.41 + "@vue/shared": 3.2.41 + + /@vue/compiler-sfc/3.2.41: + resolution: + { + integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w== + } + dependencies: + "@babel/parser": 7.19.4 + "@vue/compiler-core": 3.2.41 + "@vue/compiler-dom": 3.2.41 + "@vue/compiler-ssr": 3.2.41 + "@vue/reactivity-transform": 3.2.41 + "@vue/shared": 3.2.41 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.18 + source-map: 0.6.1 + + /@vue/compiler-ssr/3.2.41: + resolution: + { + integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ== + } + dependencies: + "@vue/compiler-dom": 3.2.41 + "@vue/shared": 3.2.41 + + /@vue/devtools-api/6.4.5: + resolution: + { + integrity: sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ== + } + dev: false + + /@vue/eslint-config-prettier/7.0.0_eslint@8.25.0+prettier@2.7.1: + resolution: + { + integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw== + } + peerDependencies: + eslint: ">= 7.28.0" + prettier: ">= 2.0.0" + dependencies: + eslint: 8.25.0 + eslint-config-prettier: 8.5.0_eslint@8.25.0 + eslint-plugin-prettier: 4.2.1_3d430c1653672911bd9e295f62a81c27 + prettier: 2.7.1 + dev: true + + /@vue/eslint-config-typescript/10.0.0_07d3deb2283d82fbf0376bf257049d49: + resolution: + { + integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^8.0.1 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/eslint-plugin": 5.40.1_a28c3c0d332041765cb07f6bda2cfee6 + "@typescript-eslint/parser": 5.40.1_eslint@8.25.0+typescript@4.8.4 + eslint: 8.25.0 + eslint-plugin-vue: 8.7.1_eslint@8.25.0 + typescript: 4.8.4 + vue-eslint-parser: 8.3.0_eslint@8.25.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/reactivity-transform/3.2.41: + resolution: + { + integrity: sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A== + } + dependencies: + "@babel/parser": 7.19.4 + "@vue/compiler-core": 3.2.41 + "@vue/shared": 3.2.41 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + /@vue/reactivity/3.2.38: + resolution: + { + integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw== + } + dependencies: + "@vue/shared": 3.2.38 + dev: true + + /@vue/reactivity/3.2.41: + resolution: + { + integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g== + } + dependencies: + "@vue/shared": 3.2.41 + + /@vue/runtime-core/3.2.41: + resolution: + { + integrity: sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ== + } + dependencies: + "@vue/reactivity": 3.2.41 + "@vue/shared": 3.2.41 + + /@vue/runtime-dom/3.2.41: + resolution: + { + integrity: sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA== + } + dependencies: + "@vue/runtime-core": 3.2.41 + "@vue/shared": 3.2.41 + csstype: 2.6.21 + dev: false + + /@vue/server-renderer/3.2.41_vue@3.2.41: + resolution: + { + integrity: sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig== + } + peerDependencies: + vue: 3.2.41 + dependencies: + "@vue/compiler-ssr": 3.2.41 + "@vue/shared": 3.2.41 + vue: 3.2.41 + dev: false + + /@vue/shared/3.2.38: + resolution: + { + integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg== + } + dev: true + + /@vue/shared/3.2.41: + resolution: + { + integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw== + } + + /@vueuse/core/8.9.4_vue@3.2.41: + resolution: + { + integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q== + } + peerDependencies: + "@vue/composition-api": ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + "@vue/composition-api": + optional: true + vue: + optional: true + dependencies: + "@types/web-bluetooth": 0.0.14 + "@vueuse/metadata": 8.9.4 + "@vueuse/shared": 8.9.4_vue@3.2.41 + vue: 3.2.41 + vue-demi: 0.13.11_vue@3.2.41 + dev: false + + /@vueuse/core/9.4.0_vue@3.2.41: + resolution: + { + integrity: sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q== + } + dependencies: + "@types/web-bluetooth": 0.0.16 + "@vueuse/metadata": 9.4.0 + "@vueuse/shared": 9.4.0_vue@3.2.41 + vue-demi: 0.13.11_vue@3.2.41 + transitivePeerDependencies: + - "@vue/composition-api" + - vue + dev: false + + /@vueuse/metadata/8.9.4: + resolution: + { + integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw== + } + dev: false + + /@vueuse/metadata/9.4.0: + resolution: + { + integrity: sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q== + } + dev: false + + /@vueuse/motion/2.0.0-beta.12_vue@3.2.41: + resolution: + { + integrity: sha512-cAZqXexLX6xo+H1N1Mv+wBSSqG4wB+BdjIuHQ50jwlelXCDxSi8gj0K/9nDS+aUZtWh6YMwS6UGCKg58jMVglA== + } + peerDependencies: + "@vue/composition-api": ^1.4.1 + vue: ^2.0.0 || >=3.0.0-rc.0 + peerDependenciesMeta: + "@vue/composition-api": + optional: true + dependencies: + "@vueuse/core": 8.9.4_vue@3.2.41 + "@vueuse/shared": 8.9.4_vue@3.2.41 + framesync: 6.1.2 + popmotion: 11.0.5 + style-value-types: 5.1.2 + vue: 3.2.41 + vue-demi: 0.13.11_vue@3.2.41 + dev: false + + /@vueuse/shared/8.9.4_vue@3.2.41: + resolution: + { + integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag== + } + peerDependencies: + "@vue/composition-api": ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + "@vue/composition-api": + optional: true + vue: + optional: true + dependencies: + vue: 3.2.41 + vue-demi: 0.13.11_vue@3.2.41 + dev: false + + /@vueuse/shared/9.4.0_vue@3.2.41: + resolution: + { + integrity: sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ== + } + dependencies: + vue-demi: 0.13.11_vue@3.2.41 + transitivePeerDependencies: + - "@vue/composition-api" + - vue + dev: false + + /@zougt/some-loader-utils/1.4.3: + resolution: + { + integrity: sha512-0FsoqSTQ+qOyp6x5Q6LZQ7xVwquEgLYiIStG3L8p0Q2GsGGYKDkOZ0mIpMt67aNdr8XLsbxXjzTl/iHtTz5zcA== + } + engines: { node: ">= 10.13.0" } + hasBin: true + dependencies: + cac: 6.7.14 + color: 4.2.3 + cssnano: 5.1.13_postcss@8.4.18 + cssnano-preset-lite: 2.1.3_postcss@8.4.18 + fs-extra: 10.1.0 + postcss: 8.4.18 + prettier: 2.7.1 + uuid: 8.3.2 + dev: true + + /JSONStream/1.3.5: + resolution: + { + integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + } + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.0: + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.0 + dev: true + + /acorn-node/1.8.2: + resolution: + { + integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + } + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: true + + /acorn-walk/7.2.0: + resolution: + { + integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + } + engines: { node: ">=0.4.0" } + dev: true + + /acorn/7.4.1: + resolution: + { + integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + } + engines: { node: ">=0.4.0" } + hasBin: true + dev: true + + /acorn/8.8.0: + resolution: + { + integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + } + engines: { node: ">=0.4.0" } + hasBin: true + dev: true + + /aggregate-error/3.1.0: + resolution: + { + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + } + engines: { node: ">=8" } + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv/6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/8.11.0: + resolution: + { + integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + } + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /animate.css/4.1.1: + resolution: + { + integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ== + } + dev: false + + /ansi-colors/4.1.3: + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + } + engines: { node: ">=6" } + dev: true + + /ansi-escapes/4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex/5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + } + engines: { node: ">=8" } + dev: true + + /ansi-styles/3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + } + engines: { node: ">=4" } + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + } + engines: { node: ">=8" } + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch/3.1.2: + resolution: + { + integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + } + engines: { node: ">= 8" } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg/4.1.3: + resolution: + { + integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + } + dev: true + + /arg/5.0.2: + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + } + dev: true + + /argparse/2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + } + dev: true + + /array-differ/3.0.0: + resolution: + { + integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + } + engines: { node: ">=8" } + dev: true + + /array-ify/1.0.0: + resolution: + { + integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + } + dev: true + + /array-union/2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + } + engines: { node: ">=8" } + dev: true + + /arrify/1.0.1: + resolution: + { + integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + } + engines: { node: ">=0.10.0" } + dev: true + + /arrify/2.0.1: + resolution: + { + integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + } + engines: { node: ">=8" } + dev: true + + /astral-regex/2.0.0: + resolution: + { + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + } + engines: { node: ">=8" } + dev: true + + /async-validator/4.2.5: + resolution: + { + integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + } + dev: false + + /asynckit/0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + } + dev: false + + /autoprefixer/10.4.12_postcss@8.4.18: + resolution: + { + integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q== + } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001422 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /axios/1.1.3: + resolution: + { + integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== + } + dependencies: + follow-redirects: 1.15.2 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match/1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + } + dev: true + + /balanced-match/2.0.0: + resolution: + { + integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== + } + dev: true + + /batch-processor/1.0.0: + resolution: { integrity: sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= } + dev: false + + /binary-extensions/2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + } + engines: { node: ">=8" } + dev: true + + /boolbase/1.0.0: + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + } + dev: true + + /brace-expansion/1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces/3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + } + engines: { node: ">=8" } + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist/4.21.4: + resolution: + { + integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001422 + electron-to-chromium: 1.4.284 + node-releases: 2.0.6 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + dev: true + + /buffer-from/1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + } + dev: true + + /builtin-modules/3.3.0: + resolution: + { + integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + } + engines: { node: ">=6" } + dev: true + + /cac/6.7.14: + resolution: + { + integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + } + engines: { node: ">=8" } + dev: true + + /call-bind/1.0.2: + resolution: + { + integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.3 + dev: false + + /callsites/3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + } + engines: { node: ">=6" } + dev: true + + /camelcase-css/2.0.1: + resolution: + { + integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + } + engines: { node: ">= 6" } + dev: true + + /camelcase-keys/6.2.2: + resolution: + { + integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + } + engines: { node: ">=8" } + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: + { + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + } + engines: { node: ">=6" } + dev: true + + /camelcase/6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + } + engines: { node: ">=10" } + dev: true + + /caniuse-api/3.0.0: + resolution: + { + integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + } + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001422 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001422: + resolution: + { + integrity: sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog== + } + dev: true + + /chalk/2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + } + engines: { node: ">=4" } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/3.0.0: + resolution: + { + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + } + engines: { node: ">=8" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chokidar/3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + } + engines: { node: ">= 8.10.0" } + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /clean-stack/2.2.0: + resolution: + { + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + } + engines: { node: ">=6" } + dev: true + + /cli-cursor/3.1.0: + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + } + engines: { node: ">=8" } + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-truncate/2.1.0: + resolution: + { + integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + } + engines: { node: ">=8" } + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cliui/8.0.1: + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + } + engines: { node: ">=12" } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cloc/2.10.0: + resolution: + { + integrity: sha512-iHYXbhKNF+Wy6TNxHozD8WkW0qbZ7WKecyFntyFron4BF4SOX6hp7HEuNJ8iVnjimnf3xpLd81kMwoRj2WiCoA== + } + hasBin: true + dev: true + + /color-convert/1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + } + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + } + engines: { node: ">=7.0.0" } + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + } + dev: true + + /color-name/1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + } + dev: true + + /color-string/1.9.1: + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + } + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: true + + /color/4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + } + engines: { node: ">=12.5.0" } + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: true + + /colord/2.9.3: + resolution: + { + integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + } + dev: true + + /colorette/2.0.19: + resolution: + { + integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + } + dev: true + + /combined-stream/1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + } + engines: { node: ">= 0.8" } + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander/2.20.3: + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + } + dev: true + + /commander/7.2.0: + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + } + engines: { node: ">= 10" } + dev: true + + /commander/9.4.1: + resolution: + { + integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== + } + engines: { node: ^12.20.0 || >=14 } + dev: false + + /compare-func/2.0.0: + resolution: + { + integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + } + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /concat-map/0.0.1: + resolution: { integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= } + dev: true + + /connect/3.7.0: + resolution: + { + integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + } + engines: { node: ">= 0.10.0" } + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /conventional-changelog-angular/5.0.13: + resolution: + { + integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + } + engines: { node: ">=10" } + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + dev: true + + /conventional-changelog-conventionalcommits/4.6.3: + resolution: + { + integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== + } + engines: { node: ">=10" } + dependencies: + compare-func: 2.0.0 + lodash: 4.17.21 + q: 1.5.1 + dev: true + + /conventional-commits-parser/3.2.4: + resolution: + { + integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + is-text-path: 1.0.1 + JSONStream: 1.3.5 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /convert-source-map/1.9.0: + resolution: + { + integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + } + dev: true + + /core-js/3.25.5: + resolution: + { + integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw== + } + requiresBuild: true + dev: true + + /cosmiconfig/7.0.1: + resolution: + { + integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + } + engines: { node: ">=10" } + dependencies: + "@types/parse-json": 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /create-require/1.1.1: + resolution: + { + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + } + dev: true + + /cross-spawn/7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-declaration-sorter/6.3.1_postcss@8.4.18: + resolution: + { + integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== + } + engines: { node: ^10 || ^12 || >=14 } + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.18 + dev: true + + /css-functions-list/3.1.0: + resolution: + { + integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w== + } + engines: { node: ">=12.22" } + dev: true + + /css-select/4.3.0: + resolution: + { + integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + } + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-tree/1.1.3: + resolution: + { + integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + } + engines: { node: ">=8.0.0" } + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: + { + integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + } + engines: { node: ">= 6" } + dev: true + + /cssesc/3.0.0: + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /cssnano-preset-default/5.2.12_postcss@8.4.18: + resolution: + { + integrity: sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.3.1_postcss@8.4.18 + cssnano-utils: 3.1.0_postcss@8.4.18 + postcss: 8.4.18 + postcss-calc: 8.2.4_postcss@8.4.18 + postcss-colormin: 5.3.0_postcss@8.4.18 + postcss-convert-values: 5.1.2_postcss@8.4.18 + postcss-discard-comments: 5.1.2_postcss@8.4.18 + postcss-discard-duplicates: 5.1.0_postcss@8.4.18 + postcss-discard-empty: 5.1.1_postcss@8.4.18 + postcss-discard-overridden: 5.1.0_postcss@8.4.18 + postcss-merge-longhand: 5.1.6_postcss@8.4.18 + postcss-merge-rules: 5.1.2_postcss@8.4.18 + postcss-minify-font-values: 5.1.0_postcss@8.4.18 + postcss-minify-gradients: 5.1.1_postcss@8.4.18 + postcss-minify-params: 5.1.3_postcss@8.4.18 + postcss-minify-selectors: 5.2.1_postcss@8.4.18 + postcss-normalize-charset: 5.1.0_postcss@8.4.18 + postcss-normalize-display-values: 5.1.0_postcss@8.4.18 + postcss-normalize-positions: 5.1.1_postcss@8.4.18 + postcss-normalize-repeat-style: 5.1.1_postcss@8.4.18 + postcss-normalize-string: 5.1.0_postcss@8.4.18 + postcss-normalize-timing-functions: 5.1.0_postcss@8.4.18 + postcss-normalize-unicode: 5.1.0_postcss@8.4.18 + postcss-normalize-url: 5.1.0_postcss@8.4.18 + postcss-normalize-whitespace: 5.1.1_postcss@8.4.18 + postcss-ordered-values: 5.1.3_postcss@8.4.18 + postcss-reduce-initial: 5.1.0_postcss@8.4.18 + postcss-reduce-transforms: 5.1.0_postcss@8.4.18 + postcss-svgo: 5.1.0_postcss@8.4.18 + postcss-unique-selectors: 5.1.1_postcss@8.4.18 + dev: true + + /cssnano-preset-lite/2.1.3_postcss@8.4.18: + resolution: + { + integrity: sha512-samvnCll/DUVZu0Qc+JH36nt7dlaOT7WjOgg8SbLJ78sp51JZ12s2hyerxrarjPBG4O53rErUtOY2IYLYgBGEQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.18 + postcss: 8.4.18 + postcss-discard-comments: 5.1.2_postcss@8.4.18 + postcss-discard-empty: 5.1.1_postcss@8.4.18 + postcss-normalize-whitespace: 5.1.1_postcss@8.4.18 + dev: true + + /cssnano-utils/3.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + dev: true + + /cssnano/5.1.13_postcss@8.4.18: + resolution: + { + integrity: sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.12_postcss@8.4.18 + lilconfig: 2.0.6 + postcss: 8.4.18 + yaml: 1.10.2 + dev: true + + /csso/4.2.0: + resolution: + { + integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + } + engines: { node: ">=8.0.0" } + dependencies: + css-tree: 1.1.3 + dev: true + + /csstype/2.6.21: + resolution: + { + integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== + } + dev: false + + /dargs/7.0.0: + resolution: + { + integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + } + engines: { node: ">=8" } + dev: true + + /dayjs/1.11.5: + resolution: + { + integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== + } + dev: false + + /debug/2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decamelize-keys/1.1.0: + resolution: + { + integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + } + engines: { node: ">=0.10.0" } + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: + { + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + } + engines: { node: ">=0.10.0" } + dev: true + + /deep-is/0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + } + dev: true + + /deepmerge/4.2.2: + resolution: + { + integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + } + engines: { node: ">=0.10.0" } + dev: true + + /define-lazy-prop/2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + } + engines: { node: ">=8" } + dev: true + + /defined/1.0.1: + resolution: + { + integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + } + dev: true + + /delayed-stream/1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + } + engines: { node: ">=0.4.0" } + dev: false + + /detective/5.2.1: + resolution: + { + integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== + } + engines: { node: ">=0.8.0" } + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.1 + minimist: 1.2.7 + dev: true + + /didyoumean/1.2.2: + resolution: + { + integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + } + dev: true + + /diff/4.0.2: + resolution: + { + integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + } + engines: { node: ">=0.3.1" } + dev: true + + /dir-glob/3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + } + engines: { node: ">=8" } + dependencies: + path-type: 4.0.0 + dev: true + + /dlv/1.1.3: + resolution: + { + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + } + dev: true + + /doctrine/3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer/1.4.1: + resolution: + { + integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + } + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-serializer/2.0.0: + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + } + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.4.0 + dev: true + + /domelementtype/2.3.0: + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + } + dev: true + + /domhandler/4.3.1: + resolution: + { + integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + } + engines: { node: ">= 4" } + dependencies: + domelementtype: 2.3.0 + dev: true + + /domhandler/5.0.3: + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + } + engines: { node: ">= 4" } + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/2.8.0: + resolution: + { + integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + } + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /domutils/3.0.1: + resolution: + { + integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + } + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-prop/5.3.0: + resolution: + { + integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + } + engines: { node: ">=8" } + dependencies: + is-obj: 2.0.0 + dev: true + + /echarts/5.4.0: + resolution: + { + integrity: sha512-uPsO9VRUIKAdFOoH3B0aNg7NRVdN7aM39/OjovjO9MwmWsAkfGyeXJhK+dbRi51iDrQWliXV60/XwLA7kg3z0w== + } + dependencies: + tslib: 2.3.0 + zrender: 5.4.0 + dev: false + + /ee-first/1.1.1: + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + } + dev: true + + /electron-to-chromium/1.4.284: + resolution: + { + integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== + } + dev: true + + /element-plus/2.2.18_vue@3.2.41: + resolution: + { + integrity: sha512-2pK2zmVOwP14eFl3rGoR+3BWJwDyO+DZCvzjQ8L6qjUR+hVKwFhgxIcSkKJatbcHFw5Xui6UyN20jV+gQP7mLg== + } + peerDependencies: + vue: ^3.2.0 + dependencies: + "@ctrl/tinycolor": 3.4.1 + "@element-plus/icons-vue": 2.0.10_vue@3.2.41 + "@floating-ui/dom": 1.0.2 + "@popperjs/core": /@sxzz/popperjs-es/2.11.7 + "@types/lodash": 4.14.186 + "@types/lodash-es": 4.17.6 + "@vueuse/core": 9.4.0_vue@3.2.41 + async-validator: 4.2.5 + dayjs: 1.11.5 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.2.41 + transitivePeerDependencies: + - "@vue/composition-api" + dev: false + + /element-resize-detector/1.2.4: + resolution: + { + integrity: sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg== + } + dependencies: + batch-processor: 1.0.0 + dev: false + + /emoji-regex/8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + } + dev: true + + /encodeurl/1.0.2: + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + } + engines: { node: ">= 0.8" } + dev: true + + /end-of-stream/1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + } + dependencies: + once: 1.4.0 + dev: true + + /enquirer/2.3.6: + resolution: + { + integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + } + engines: { node: ">=8.6" } + dependencies: + ansi-colors: 4.1.3 + dev: true + + /entities/2.2.0: + resolution: + { + integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + } + dev: true + + /entities/4.4.0: + resolution: + { + integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + } + engines: { node: ">=0.12" } + dev: true + + /error-ex/1.3.2: + resolution: + { + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + } + dependencies: + is-arrayish: 0.2.1 + dev: true + + /esbuild-android-64/0.15.11: + resolution: + { + integrity: sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw== + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.11: + resolution: + { + integrity: sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.11: + resolution: + { + integrity: sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA== + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.11: + resolution: + { + integrity: sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.11: + resolution: + { + integrity: sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg== + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.11: + resolution: + { + integrity: sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.11: + resolution: + { + integrity: sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA== + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.11: + resolution: + { + integrity: sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA== + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.11: + resolution: + { + integrity: sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A== + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.11: + resolution: + { + integrity: sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.11: + resolution: + { + integrity: sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA== + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.11: + resolution: + { + integrity: sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg== + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.11: + resolution: + { + integrity: sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw== + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.11: + resolution: + { + integrity: sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg== + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.11: + resolution: + { + integrity: sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A== + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.11: + resolution: + { + integrity: sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.11: + resolution: + { + integrity: sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw== + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.11: + resolution: + { + integrity: sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q== + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.11: + resolution: + { + integrity: sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.11: + resolution: + { + integrity: sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.11.3: + resolution: + { + integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw== + } + hasBin: true + requiresBuild: true + dev: true + + /esbuild/0.15.11: + resolution: + { + integrity: sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg== + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + optionalDependencies: + "@esbuild/android-arm": 0.15.11 + "@esbuild/linux-loong64": 0.15.11 + esbuild-android-64: 0.15.11 + esbuild-android-arm64: 0.15.11 + esbuild-darwin-64: 0.15.11 + esbuild-darwin-arm64: 0.15.11 + esbuild-freebsd-64: 0.15.11 + esbuild-freebsd-arm64: 0.15.11 + esbuild-linux-32: 0.15.11 + esbuild-linux-64: 0.15.11 + esbuild-linux-arm: 0.15.11 + esbuild-linux-arm64: 0.15.11 + esbuild-linux-mips64le: 0.15.11 + esbuild-linux-ppc64le: 0.15.11 + esbuild-linux-riscv64: 0.15.11 + esbuild-linux-s390x: 0.15.11 + esbuild-netbsd-64: 0.15.11 + esbuild-openbsd-64: 0.15.11 + esbuild-sunos-64: 0.15.11 + esbuild-windows-32: 0.15.11 + esbuild-windows-64: 0.15.11 + esbuild-windows-arm64: 0.15.11 + dev: true + + /escalade/3.1.1: + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + } + engines: { node: ">=6" } + dev: true + + /escape-html/1.0.3: + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + } + + /escape-string-regexp/1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + } + engines: { node: ">=0.8.0" } + dev: true + + /escape-string-regexp/4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + } + engines: { node: ">=10" } + dev: true + + /eslint-config-prettier/8.5.0_eslint@8.25.0: + resolution: + { + integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + } + hasBin: true + peerDependencies: + eslint: ">=7.0.0" + dependencies: + eslint: 8.25.0 + dev: true + + /eslint-plugin-prettier/4.2.1_3d430c1653672911bd9e295f62a81c27: + resolution: + { + integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + } + engines: { node: ">=12.0.0" } + peerDependencies: + eslint: ">=7.28.0" + eslint-config-prettier: "*" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.25.0 + eslint-config-prettier: 8.5.0_eslint@8.25.0 + prettier: 2.7.1 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-prettier/4.2.1_eslint@8.25.0+prettier@2.7.1: + resolution: + { + integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + } + engines: { node: ">=12.0.0" } + peerDependencies: + eslint: ">=7.28.0" + eslint-config-prettier: "*" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.25.0 + prettier: 2.7.1 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-vue/8.7.1_eslint@8.25.0: + resolution: + { + integrity: sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.25.0 + eslint-utils: 3.0.0_eslint@8.25.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.10 + semver: 7.3.8 + vue-eslint-parser: 8.3.0_eslint@8.25.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + } + engines: { node: ">=8.0.0" } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: + { + integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.25.0: + resolution: + { + integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + } + engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } + peerDependencies: + eslint: ">=5" + dependencies: + eslint: 8.25.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: + { + integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + } + engines: { node: ">=10" } + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: + { + integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /eslint/8.25.0: + resolution: + { + integrity: sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + "@eslint/eslintrc": 1.3.3 + "@humanwhocodes/config-array": 0.10.7 + "@humanwhocodes/module-importer": 1.0.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.25.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.17.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-sdsl: 4.1.5 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.0: + resolution: + { + integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esquery/1.4.0: + resolution: + { + integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + } + engines: { node: ">=0.10" } + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + } + engines: { node: ">=4.0" } + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + } + engines: { node: ">=4.0" } + dev: true + + /estraverse/5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + } + engines: { node: ">=4.0" } + dev: true + + /estree-walker/1.0.1: + resolution: + { + integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + } + dev: true + + /estree-walker/2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + } + + /esutils/2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + } + engines: { node: ">=0.10.0" } + dev: true + + /execa/4.1.0: + resolution: + { + integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + } + engines: { node: ">=10" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa/5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + } + engines: { node: ">=10" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /fast-deep-equal/3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + } + dev: true + + /fast-diff/1.2.0: + resolution: + { + integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + } + dev: true + + /fast-glob/3.2.12: + resolution: + { + integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + } + engines: { node: ">=8.6.0" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + } + dev: true + + /fast-levenshtein/2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + } + dev: true + + /fastest-levenshtein/1.0.16: + resolution: + { + integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + } + engines: { node: ">= 4.9.1" } + dev: true + + /fastq/1.13.0: + resolution: + { + integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + } + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache/6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range/7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + } + engines: { node: ">=8" } + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler/1.1.2: + resolution: + { + integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + } + engines: { node: ">= 0.8" } + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-up/4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + } + engines: { node: ">=8" } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + } + engines: { node: ">=10" } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: + { + integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: + { + integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + } + dev: true + + /follow-redirects/1.15.2: + resolution: + { + integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + } + engines: { node: ">=4.0" } + peerDependencies: + debug: "*" + peerDependenciesMeta: + debug: + optional: true + dev: false + + /font-awesome/4.7.0: + resolution: + { + integrity: sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg== + } + engines: { node: ">=0.10.3" } + dev: true + + /form-data/4.0.0: + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + } + engines: { node: ">= 6" } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fraction.js/4.2.0: + resolution: + { + integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + } + dev: true + + /framesync/6.1.2: + resolution: + { + integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== + } + dependencies: + tslib: 2.4.0 + dev: false + + /fs-extra/10.1.0: + resolution: + { + integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + } + engines: { node: ">=12" } + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath/1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + } + dev: true + + /fsevents/2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + } + + /gensync/1.0.0-beta.2: + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + } + engines: { node: ">=6.9.0" } + dev: true + + /get-caller-file/2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /get-intrinsic/1.1.3: + resolution: + { + integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + + /get-own-enumerable-property-symbols/3.0.2: + resolution: + { + integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + } + dev: true + + /get-stream/5.2.0: + resolution: + { + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + } + engines: { node: ">=8" } + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + } + engines: { node: ">=10" } + dev: true + + /git-raw-commits/2.0.11: + resolution: + { + integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /glob-parent/5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + } + engines: { node: ">= 6" } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent/6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + } + engines: { node: ">=10.13.0" } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-dirs/0.1.1: + resolution: + { + integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== + } + engines: { node: ">=4" } + dependencies: + ini: 1.3.8 + dev: true + + /global-modules/2.0.0: + resolution: + { + integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + } + engines: { node: ">=6" } + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix/3.0.0: + resolution: + { + integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + } + engines: { node: ">=6" } + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /globals/11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + } + engines: { node: ">=4" } + dev: true + + /globals/13.17.0: + resolution: + { + integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + } + engines: { node: ">=10" } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globjoin/0.1.4: + resolution: + { + integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== + } + dev: true + + /graceful-fs/4.2.10: + resolution: + { + integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + } + dev: true + + /grapheme-splitter/1.0.4: + resolution: + { + integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + } + dev: true + + /hard-rejection/2.1.0: + resolution: + { + integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + } + engines: { node: ">=6" } + dev: true + + /has-flag/3.0.0: + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + } + engines: { node: ">=4" } + dev: true + + /has-flag/4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + } + engines: { node: ">=8" } + dev: true + + /has-symbols/1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + } + engines: { node: ">= 0.4" } + dev: false + + /has/1.0.3: + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + } + engines: { node: ">= 0.4.0" } + dependencies: + function-bind: 1.1.1 + + /hey-listen/1.0.8: + resolution: + { + integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== + } + dev: false + + /hosted-git-info/2.8.9: + resolution: + { + integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + } + dev: true + + /hosted-git-info/4.1.0: + resolution: + { + integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + } + engines: { node: ">=10" } + dependencies: + lru-cache: 6.0.0 + dev: true + + /html-tags/3.2.0: + resolution: + { + integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== + } + engines: { node: ">=8" } + dev: true + + /htmlparser2/8.0.1: + resolution: + { + integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + } + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.0.1 + entities: 4.4.0 + dev: true + + /human-signals/1.1.1: + resolution: + { + integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + } + engines: { node: ">=8.12.0" } + dev: true + + /human-signals/2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + } + engines: { node: ">=10.17.0" } + dev: true + + /husky/7.0.4: + resolution: + { + integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== + } + engines: { node: ">=12" } + hasBin: true + dev: true + + /ignore/5.2.0: + resolution: + { + integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + } + engines: { node: ">= 4" } + dev: true + + /immutable/4.1.0: + resolution: + { + integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + } + dev: true + + /import-fresh/3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + } + engines: { node: ">=6" } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy/4.0.0: + resolution: + { + integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + } + engines: { node: ">=8" } + dev: true + + /imurmurhash/0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + } + engines: { node: ">=0.8.19" } + dev: true + + /indent-string/4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + } + engines: { node: ">=8" } + dev: true + + /inflight/1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.3: + resolution: + { + integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + } + dev: false + + /inherits/2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + } + dev: true + + /ini/1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + } + dev: true + + /is-arrayish/0.2.1: + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + } + dev: true + + /is-arrayish/0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + } + dev: true + + /is-binary-path/2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-builtin-module/3.2.0: + resolution: + { + integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== + } + engines: { node: ">=6" } + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-core-module/2.11.0: + resolution: + { + integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + } + dependencies: + has: 1.0.3 + dev: true + + /is-docker/2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + } + engines: { node: ">=8" } + hasBin: true + dev: true + + /is-extglob/2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + } + engines: { node: ">=0.10.0" } + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + } + engines: { node: ">=8" } + dev: true + + /is-glob/4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-module/1.0.0: + resolution: + { + integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + } + dev: true + + /is-number/7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + } + engines: { node: ">=0.12.0" } + dev: true + + /is-obj/1.0.1: + resolution: + { + integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + } + engines: { node: ">=0.10.0" } + dev: true + + /is-obj/2.0.0: + resolution: + { + integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + } + engines: { node: ">=8" } + dev: true + + /is-plain-obj/1.1.0: + resolution: + { + integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + } + engines: { node: ">=0.10.0" } + dev: true + + /is-plain-object/5.0.0: + resolution: + { + integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + } + engines: { node: ">=0.10.0" } + + /is-reference/1.2.1: + resolution: + { + integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + } + dependencies: + "@types/estree": 0.0.39 + dev: true + + /is-regexp/1.0.0: + resolution: + { + integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + } + engines: { node: ">=0.10.0" } + dev: true + + /is-stream/2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + } + engines: { node: ">=8" } + dev: true + + /is-text-path/1.0.1: + resolution: + { + integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + } + engines: { node: ">=0.10.0" } + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-unicode-supported/0.1.0: + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + } + engines: { node: ">=10" } + dev: true + + /is-wsl/2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + } + engines: { node: ">=8" } + dependencies: + is-docker: 2.2.1 + dev: true + + /isexe/2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + } + dev: true + + /js-cookie/3.0.1: + resolution: + { + integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw== + } + engines: { node: ">=12" } + dev: false + + /js-sdsl/4.1.5: + resolution: + { + integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== + } + dev: true + + /js-tokens/4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + } + dev: true + + /js-tokens/8.0.0: + resolution: + { + integrity: sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA== + } + dev: true + + /js-yaml/4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + } + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc/2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + } + dev: true + + /json-schema-traverse/0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + } + dev: true + + /json-schema-traverse/1.0.0: + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + } + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + } + dev: true + + /json5/2.2.1: + resolution: + { + integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + } + engines: { node: ">=6" } + hasBin: true + dev: true + + /jsonfile/6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + } + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonparse/1.3.1: + resolution: + { + integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + } + engines: { "0": node >= 0.2.0 } + dev: true + + /kind-of/6.0.3: + resolution: + { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + } + engines: { node: ">=0.10.0" } + dev: true + + /klona/2.0.5: + resolution: + { + integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + } + engines: { node: ">= 8" } + dev: true + + /known-css-properties/0.25.0: + resolution: + { + integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA== + } + dev: true + + /levn/0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig/2.0.6: + resolution: + { + integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + } + engines: { node: ">=10" } + dev: true + + /lines-and-columns/1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + } + dev: true + + /lint-staged/11.1.2: + resolution: + { + integrity: sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== + } + hasBin: true + dependencies: + chalk: 4.1.2 + cli-truncate: 2.1.0 + commander: 7.2.0 + cosmiconfig: 7.0.1 + debug: 4.3.4 + enquirer: 2.3.6 + execa: 5.1.1 + listr2: 3.14.0_enquirer@2.3.6 + log-symbols: 4.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + please-upgrade-node: 3.2.0 + string-argv: 0.3.1 + stringify-object: 3.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2/3.14.0_enquirer@2.3.6: + resolution: + { + integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== + } + engines: { node: ">=10.0.0" } + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.19 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.5.7 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /locate-path/5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + } + engines: { node: ">=8" } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + } + engines: { node: ">=10" } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es/4.17.21: + resolution: + { + integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + } + dev: false + + /lodash-unified/1.0.2_da03a4540fbd16bbaafbb96724306afd: + resolution: + { + integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g== + } + peerDependencies: + "@types/lodash-es": "*" + lodash: "*" + lodash-es: "*" + dependencies: + "@types/lodash-es": 4.17.6 + lodash: 4.17.21 + lodash-es: 4.17.21 + dev: false + + /lodash.get/4.4.2: + resolution: + { + integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + } + dev: true + + /lodash.memoize/4.1.2: + resolution: + { + integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + } + dev: true + + /lodash.merge/4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + } + dev: true + + /lodash.truncate/4.4.2: + resolution: + { + integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + } + dev: true + + /lodash.uniq/4.5.0: + resolution: + { + integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + } + dev: true + + /lodash/4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + } + + /log-symbols/4.1.0: + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + } + engines: { node: ">=10" } + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/4.0.0: + resolution: + { + integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + } + engines: { node: ">=10" } + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /lru-cache/6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.9: + resolution: + { + integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + } + dependencies: + sourcemap-codec: 1.4.8 + + /magic-string/0.26.7: + resolution: + { + integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + } + engines: { node: ">=12" } + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /make-error/1.3.6: + resolution: + { + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + } + dev: true + + /map-obj/1.0.1: + resolution: + { + integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + } + engines: { node: ">=0.10.0" } + dev: true + + /map-obj/4.3.0: + resolution: + { + integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + } + engines: { node: ">=8" } + dev: true + + /mathml-tag-names/2.1.3: + resolution: + { + integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + } + dev: true + + /mdn-data/2.0.14: + resolution: + { + integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + } + dev: true + + /memoize-one/6.0.0: + resolution: + { + integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + } + dev: false + + /meow/8.1.2: + resolution: + { + integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + } + engines: { node: ">=10" } + dependencies: + "@types/minimist": 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /meow/9.0.0: + resolution: + { + integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + } + engines: { node: ">=10" } + dependencies: + "@types/minimist": 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-stream/2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + } + dev: true + + /merge2/1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + } + engines: { node: ">= 8" } + dev: true + + /micromatch/4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + } + engines: { node: ">=8.6" } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + } + engines: { node: ">= 0.6" } + dev: false + + /mime-types/2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + } + engines: { node: ">= 0.6" } + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn/2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + } + engines: { node: ">=6" } + dev: true + + /min-indent/1.0.1: + resolution: + { + integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + } + engines: { node: ">=4" } + dev: true + + /minimatch/3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist-options/4.1.0: + resolution: + { + integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + } + engines: { node: ">= 6" } + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.7: + resolution: + { + integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + } + dev: true + + /mitt/3.0.0: + resolution: + { + integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ== + } + dev: false + + /mockjs/1.1.0: + resolution: + { + integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ== + } + hasBin: true + dependencies: + commander: 9.4.1 + dev: false + + /mri/1.2.0: + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + } + engines: { node: ">=4" } + dev: true + + /ms/2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + } + dev: true + + /ms/2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + } + dev: true + + /multimatch/4.0.0: + resolution: + { + integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + } + engines: { node: ">=8" } + dependencies: + "@types/minimatch": 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: true + + /nanoid/3.3.4: + resolution: + { + integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + /natural-compare/1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + } + dev: true + + /neo-async/2.6.2: + resolution: + { + integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + } + dev: true + + /node-releases/2.0.6: + resolution: + { + integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + } + dev: true + + /normalize-package-data/2.5.0: + resolution: + { + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + } + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.3: + resolution: + { + integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + } + engines: { node: ">=10" } + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.11.0 + semver: 7.3.8 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + } + engines: { node: ">=0.10.0" } + dev: true + + /normalize-range/0.1.2: + resolution: + { + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + } + engines: { node: ">=0.10.0" } + dev: true + + /normalize-url/6.1.0: + resolution: + { + integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + } + engines: { node: ">=10" } + dev: true + + /normalize-wheel-es/1.2.0: + resolution: + { + integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw== + } + dev: false + + /npm-run-path/4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + } + engines: { node: ">=8" } + dependencies: + path-key: 3.1.1 + dev: true + + /nprogress/0.2.0: + resolution: + { + integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + } + dev: false + + /nth-check/2.1.1: + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + } + dependencies: + boolbase: 1.0.0 + dev: true + + /object-hash/3.0.0: + resolution: + { + integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + } + engines: { node: ">= 6" } + dev: true + + /object-inspect/1.12.2: + resolution: + { + integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + } + dev: false + + /on-finished/2.3.0: + resolution: + { + integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + } + engines: { node: ">= 0.8" } + dependencies: + ee-first: 1.1.1 + dev: true + + /once/1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + } + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + } + engines: { node: ">=6" } + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/8.4.0: + resolution: + { + integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + } + engines: { node: ">=12" } + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /optionator/0.9.1: + resolution: + { + integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + } + engines: { node: ">= 0.8.0" } + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-limit/2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + } + engines: { node: ">=6" } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + } + engines: { node: ">=10" } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + } + engines: { node: ">=8" } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + } + engines: { node: ">=10" } + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map/4.0.0: + resolution: + { + integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + } + engines: { node: ">=10" } + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try/2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + } + engines: { node: ">=6" } + dev: true + + /parent-module/1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + } + engines: { node: ">=6" } + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json/5.2.0: + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + } + engines: { node: ">=8" } + dependencies: + "@babel/code-frame": 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parseurl/1.3.3: + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + } + engines: { node: ">= 0.8" } + dev: true + + /path-exists/4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + } + engines: { node: ">=8" } + dev: true + + /path-is-absolute/1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + } + engines: { node: ">=0.10.0" } + dev: true + + /path-key/3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + } + engines: { node: ">=8" } + dev: true + + /path-parse/1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + } + dev: true + + /path-to-regexp/6.2.1: + resolution: + { + integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + } + dev: true + + /path-type/4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + } + engines: { node: ">=8" } + dev: true + + /path/0.12.7: + resolution: + { + integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q== + } + dependencies: + process: 0.11.10 + util: 0.10.4 + dev: false + + /picocolors/1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + } + + /picomatch/2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + } + engines: { node: ">=8.6" } + dev: true + + /pify/2.3.0: + resolution: + { + integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + } + engines: { node: ">=0.10.0" } + dev: true + + /pinia/2.0.23_typescript@4.8.4+vue@3.2.41: + resolution: + { + integrity: sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q== + } + peerDependencies: + "@vue/composition-api": ^1.4.0 + typescript: ">=4.4.4" + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + "@vue/composition-api": + optional: true + typescript: + optional: true + dependencies: + "@vue/devtools-api": 6.4.5 + typescript: 4.8.4 + vue: 3.2.41 + vue-demi: 0.13.11_vue@3.2.41 + dev: false + + /please-upgrade-node/3.2.0: + resolution: + { + integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + } + dependencies: + semver-compare: 1.0.0 + dev: true + + /popmotion/11.0.5: + resolution: + { + integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA== + } + dependencies: + framesync: 6.1.2 + hey-listen: 1.0.8 + style-value-types: 5.1.2 + tslib: 2.4.0 + dev: false + + /postcss-calc/8.2.4_postcss@8.4.18: + resolution: + { + integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + } + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-colormin/5.3.0_postcss@8.4.18: + resolution: + { + integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values/5.1.2_postcss@8.4.18: + resolution: + { + integrity: sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-discard-comments/5.1.2_postcss@8.4.18: + resolution: + { + integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-discard-duplicates/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-discard-empty/5.1.1_postcss@8.4.18: + resolution: + { + integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-discard-overridden/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-html/1.5.0: + resolution: + { + integrity: sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA== + } + engines: { node: ^12 || >=14 } + dependencies: + htmlparser2: 8.0.1 + js-tokens: 8.0.0 + postcss: 8.4.18 + postcss-safe-parser: 6.0.0_postcss@8.4.18 + dev: true + + /postcss-import/14.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + } + engines: { node: ">=10.0.0" } + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-import/15.0.0_postcss@8.4.18: + resolution: + { + integrity: sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg== + } + engines: { node: ">=14.0.0" } + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-js/4.0.0_postcss@8.4.18: + resolution: + { + integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + } + engines: { node: ^12 || ^14 || >= 16 } + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.18 + dev: true + + /postcss-load-config/3.1.4_postcss@8.4.18: + resolution: + { + integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + } + engines: { node: ">= 10" } + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.18 + yaml: 1.10.2 + dev: true + + /postcss-media-query-parser/0.2.3: + resolution: + { + integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== + } + dev: true + + /postcss-merge-longhand/5.1.6_postcss@8.4.18: + resolution: + { + integrity: sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.0_postcss@8.4.18 + dev: true + + /postcss-merge-rules/5.1.2_postcss@8.4.18: + resolution: + { + integrity: sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0_postcss@8.4.18 + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-minify-font-values/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients/5.1.1_postcss@8.4.18: + resolution: + { + integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0_postcss@8.4.18 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params/5.1.3_postcss@8.4.18: + resolution: + { + integrity: sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + cssnano-utils: 3.1.0_postcss@8.4.18 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors/5.2.1_postcss@8.4.18: + resolution: + { + integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-nested/6.0.0_postcss@8.4.18: + resolution: + { + integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== + } + engines: { node: ">=12.0" } + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-normalize-charset/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-normalize-display-values/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions/5.1.1_postcss@8.4.18: + resolution: + { + integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style/5.1.1_postcss@8.4.18: + resolution: + { + integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace/5.1.1_postcss@8.4.18: + resolution: + { + integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-ordered-values/5.1.3_postcss@8.4.18: + resolution: + { + integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.18 + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-reduce-initial/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + postcss: 8.4.18 + dev: true + + /postcss-reduce-transforms/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-resolve-nested-selector/0.1.1: + resolution: + { + integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw== + } + dev: true + + /postcss-safe-parser/6.0.0_postcss@8.4.18: + resolution: + { + integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== + } + engines: { node: ">=12.0" } + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-scss/4.0.5_postcss@8.4.18: + resolution: + { + integrity: sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA== + } + engines: { node: ">=12.0" } + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: + { + integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + } + engines: { node: ">=4" } + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-sorting/7.0.1_postcss@8.4.18: + resolution: + { + integrity: sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g== + } + peerDependencies: + postcss: ^8.3.9 + dependencies: + postcss: 8.4.18 + dev: true + + /postcss-svgo/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: true + + /postcss-unique-selectors/5.1.1_postcss@8.4.18: + resolution: + { + integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-value-parser/4.2.0: + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + } + dev: true + + /postcss/8.4.18: + resolution: + { + integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + } + engines: { node: ">= 0.8.0" } + dev: true + + /prettier-linter-helpers/1.0.0: + resolution: + { + integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + } + engines: { node: ">=6.0.0" } + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier/2.7.1: + resolution: + { + integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + } + engines: { node: ">=10.13.0" } + hasBin: true + dev: true + + /pretty-quick/3.1.1_prettier@2.7.1: + resolution: + { + integrity: sha512-ZYLGiMoV2jcaas3vTJrLvKAYsxDoXQBUn8OSTxkl67Fyov9lyXivJTl0+2WVh+y6EovGcw7Lm5ThYpH+Sh3XxQ== + } + engines: { node: ">=10.13" } + hasBin: true + peerDependencies: + prettier: ">=2.0.0" + dependencies: + chalk: 3.0.0 + execa: 4.1.0 + find-up: 4.1.0 + ignore: 5.2.0 + mri: 1.2.0 + multimatch: 4.0.0 + prettier: 2.7.1 + dev: true + + /process/0.11.10: + resolution: + { + integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + } + engines: { node: ">= 0.6.0" } + dev: false + + /proxy-from-env/1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + } + dev: false + + /pump/3.0.0: + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/2.1.1: + resolution: + { + integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + } + engines: { node: ">=6" } + dev: true + + /q/1.5.1: + resolution: + { + integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + } + engines: { node: ">=0.6.0", teleport: ">=0.2.0" } + dev: true + + /qs/6.11.0: + resolution: + { + integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + } + engines: { node: ">=0.6" } + dependencies: + side-channel: 1.0.4 + dev: false + + /queue-microtask/1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + } + dev: true + + /quick-lru/4.0.1: + resolution: + { + integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + } + engines: { node: ">=8" } + dev: true + + /quick-lru/5.1.1: + resolution: + { + integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + } + engines: { node: ">=10" } + dev: true + + /read-cache/1.0.0: + resolution: + { + integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + } + dependencies: + pify: 2.3.0 + dev: true + + /read-pkg-up/7.0.1: + resolution: + { + integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + } + engines: { node: ">=8" } + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/5.2.0: + resolution: + { + integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + } + engines: { node: ">=8" } + dependencies: + "@types/normalize-package-data": 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/3.6.0: + resolution: + { + integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + } + engines: { node: ">= 6" } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + } + engines: { node: ">=8.10.0" } + dependencies: + picomatch: 2.3.1 + dev: true + + /redent/3.0.0: + resolution: + { + integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + } + engines: { node: ">=8" } + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /regenerator-runtime/0.13.10: + resolution: + { + integrity: sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== + } + dev: true + + /regexpp/3.2.0: + resolution: + { + integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + } + engines: { node: ">=8" } + dev: true + + /require-directory/2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + } + engines: { node: ">=0.10.0" } + dev: true + + /require-from-string/2.0.2: + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + } + engines: { node: ">=0.10.0" } + dev: true + + /resize-observer-polyfill/1.5.1: + resolution: + { + integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + } + dev: false + + /resolve-from/4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + } + engines: { node: ">=4" } + dev: true + + /resolve-from/5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + } + engines: { node: ">=8" } + dev: true + + /resolve-global/1.0.0: + resolution: + { + integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + } + engines: { node: ">=8" } + dependencies: + global-dirs: 0.1.1 + dev: true + + /resolve/1.22.1: + resolution: + { + integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + } + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responsive-storage/2.1.0: + resolution: + { + integrity: sha512-LXqyeZ/5J7SCcid+psVuwVfWaV8iX1HjvHUn7aSX5Q6H6QSZo9yDDotRjuFp1UNm3XU7yLZhWKejkmFA0xkeuw== + } + dev: false + + /restore-cursor/3.1.0: + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + } + engines: { node: ">=8" } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify/1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + dev: true + + /rfdc/1.3.0: + resolution: + { + integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + } + dev: true + + /rimraf/3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + } + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup-plugin-external-globals/0.6.1: + resolution: + { + integrity: sha512-mlp3KNa5sE4Sp9UUR2rjBrxjG79OyZAh/QC18RHIjM+iYkbBwNXSo8DHRMZWtzJTrH8GxQ+SJvCTN3i14uMXIA== + } + peerDependencies: + rollup: ^2.25.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + "@rollup/pluginutils": 4.2.1 + estree-walker: 2.0.2 + is-reference: 1.2.1 + magic-string: 0.25.9 + dev: true + + /rollup-plugin-visualizer/5.8.3: + resolution: + { + integrity: sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q== + } + engines: { node: ">=14" } + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.0 + source-map: 0.7.4 + yargs: 17.6.0 + dev: true + + /rollup/2.78.1: + resolution: + { + integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg== + } + engines: { node: ">=10.0.0" } + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + } + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs/7.5.7: + resolution: + { + integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== + } + dependencies: + tslib: 2.4.0 + dev: true + + /safe-buffer/5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + } + dev: true + + /sass-loader/13.1.0_sass@1.55.0: + resolution: + { + integrity: sha512-tZS1RJQ2n2+QNyf3CCAo1H562WjL/5AM6Gi8YcPVVoNxQX8d19mx8E+8fRrMWsyc93ZL6Q8vZDSM0FHVTJaVnQ== + } + engines: { node: ">= 14.15.0" } + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: "*" + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + dependencies: + klona: 2.0.5 + neo-async: 2.6.2 + sass: 1.55.0 + dev: true + + /sass/1.55.0: + resolution: + { + integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A== + } + engines: { node: ">=12.0.0" } + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.1.0 + source-map-js: 1.0.2 + dev: true + + /semver-compare/1.0.0: + resolution: + { + integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + } + dev: true + + /semver/5.7.1: + resolution: + { + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + } + hasBin: true + dev: true + + /semver/6.3.0: + resolution: + { + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + } + hasBin: true + dev: true + + /semver/7.3.5: + resolution: + { + integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver/7.3.8: + resolution: + { + integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + } + engines: { node: ">=8" } + dev: true + + /side-channel/1.0.4: + resolution: + { + integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 + dev: false + + /signal-exit/3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + } + dev: true + + /simple-swizzle/0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + } + dependencies: + is-arrayish: 0.3.2 + dev: true + + /slash/3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + } + engines: { node: ">=8" } + dev: true + + /slice-ansi/3.0.0: + resolution: + { + integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + } + engines: { node: ">=8" } + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: + { + integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-js/1.0.2: + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + } + engines: { node: ">=0.10.0" } + + /source-map-support/0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + } + engines: { node: ">=0.10.0" } + + /source-map/0.7.4: + resolution: + { + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + } + engines: { node: ">= 8" } + dev: true + + /sourcemap-codec/1.4.8: + resolution: + { + integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + } + + /spdx-correct/3.1.1: + resolution: + { + integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + } + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-exceptions/2.3.0: + resolution: + { + integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + } + dev: true + + /spdx-expression-parse/3.0.1: + resolution: + { + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + } + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-license-ids/3.0.12: + resolution: + { + integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + } + dev: true + + /split2/3.2.2: + resolution: + { + integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + } + dependencies: + readable-stream: 3.6.0 + dev: true + + /stable/0.1.8: + resolution: + { + integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + } + deprecated: "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + dev: true + + /statuses/1.5.0: + resolution: + { + integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + } + engines: { node: ">= 0.6" } + dev: true + + /string-argv/0.3.1: + resolution: + { + integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + } + engines: { node: ">=0.6.19" } + dev: true + + /string-hash/1.1.3: + resolution: + { + integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== + } + dev: true + + /string-width/4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + } + engines: { node: ">=8" } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string_decoder/1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-object/3.3.0: + resolution: + { + integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + } + engines: { node: ">=4" } + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi/6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + } + engines: { node: ">=8" } + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-final-newline/2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + } + engines: { node: ">=6" } + dev: true + + /strip-indent/3.0.0: + resolution: + { + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + } + engines: { node: ">=8" } + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + } + engines: { node: ">=8" } + dev: true + + /style-search/0.1.0: + resolution: + { + integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg== + } + dev: true + + /style-value-types/5.1.2: + resolution: + { + integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q== + } + dependencies: + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false + + /stylehacks/5.1.0_postcss@8.4.18: + resolution: + { + integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== + } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.18 + postcss-selector-parser: 6.0.10 + dev: true + + /stylelint-config-html/1.1.0_d583a01b74088eff946efe8e3f4544a9: + resolution: + { + integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ== + } + engines: { node: ^12 || >=14 } + peerDependencies: + postcss-html: ^1.0.0 + stylelint: ">=14.0.0" + dependencies: + postcss-html: 1.5.0 + stylelint: 14.14.0 + dev: true + + /stylelint-config-prettier/9.0.3_stylelint@14.14.0: + resolution: + { + integrity: sha512-5n9gUDp/n5tTMCq1GLqSpA30w2sqWITSSEiAWQlpxkKGAUbjcemQ0nbkRvRUa0B1LgD3+hCvdL7B1eTxy1QHJg== + } + engines: { node: ">= 12" } + hasBin: true + peerDependencies: + stylelint: ">=11.0.0" + dependencies: + stylelint: 14.14.0 + dev: true + + /stylelint-config-recommended/6.0.0_stylelint@14.14.0: + resolution: + { + integrity: sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw== + } + peerDependencies: + stylelint: ^14.0.0 + dependencies: + stylelint: 14.14.0 + dev: true + + /stylelint-config-standard/24.0.0_stylelint@14.14.0: + resolution: + { + integrity: sha512-+RtU7fbNT+VlNbdXJvnjc3USNPZRiRVp/d2DxOF/vBDDTi0kH5RX2Ny6errdtZJH3boO+bmqIYEllEmok4jiuw== + } + peerDependencies: + stylelint: ^14.0.0 + dependencies: + stylelint: 14.14.0 + stylelint-config-recommended: 6.0.0_stylelint@14.14.0 + dev: true + + /stylelint-order/5.0.0_stylelint@14.14.0: + resolution: + { + integrity: sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw== + } + peerDependencies: + stylelint: ^14.0.0 + dependencies: + postcss: 8.4.18 + postcss-sorting: 7.0.1_postcss@8.4.18 + stylelint: 14.14.0 + dev: true + + /stylelint/14.14.0: + resolution: + { + integrity: sha512-yUI+4xXfPHVnueYddSQ/e1GuEA/2wVhWQbGj16AmWLtQJtn28lVxfS4b0CsWyVRPgd3Auzi0NXOthIEUhtQmmA== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + dependencies: + "@csstools/selector-specificity": 2.0.2_1d546e2941f6b4ca889831b9fbdc79d8 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.0.1 + css-functions-list: 3.1.0 + debug: 4.3.4 + fast-glob: 3.2.12 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.2.0 + ignore: 5.2.0 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.25.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.18 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 6.0.0_postcss@8.4.18 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + supports-hyperlinks: 2.3.0 + svg-tags: 1.0.0 + table: 6.8.0 + v8-compile-cache: 2.3.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color/5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + } + engines: { node: ">=4" } + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks/2.3.0: + resolution: + { + integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + } + engines: { node: ">= 0.4" } + dev: true + + /svg-tags/1.0.0: + resolution: + { + integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + } + dev: true + + /svgo/2.8.0: + resolution: + { + integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + } + engines: { node: ">=10.13.0" } + hasBin: true + dependencies: + "@trysound/sax": 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /systemjs/6.13.0: + resolution: + { + integrity: sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g== + } + dev: true + + /table/6.8.0: + resolution: + { + integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + } + engines: { node: ">=10.0.0" } + dependencies: + ajv: 8.11.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /tailwindcss/3.2.1: + resolution: + { + integrity: sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg== + } + engines: { node: ">=12.13.0" } + hasBin: true + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.18 + postcss-import: 14.1.0_postcss@8.4.18 + postcss-js: 4.0.0_postcss@8.4.18 + postcss-load-config: 3.1.4_postcss@8.4.18 + postcss-nested: 6.0.0_postcss@8.4.18 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: true + + /terser/5.15.1: + resolution: + { + integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + "@jridgewell/source-map": 0.3.2 + acorn: 8.8.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /text-extensions/1.9.0: + resolution: + { + integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + } + engines: { node: ">=0.10" } + dev: true + + /text-table/0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + } + dev: true + + /through/2.3.8: + resolution: + { + integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + } + dev: true + + /through2/4.0.2: + resolution: + { + integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + } + dependencies: + readable-stream: 3.6.0 + dev: true + + /to-fast-properties/2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + } + engines: { node: ">=4" } + + /to-regex-range/5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + } + engines: { node: ">=8.0" } + dependencies: + is-number: 7.0.0 + dev: true + + /trim-newlines/3.0.1: + resolution: + { + integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + } + engines: { node: ">=8" } + dev: true + + /ts-node/9.1.1_typescript@4.8.4: + resolution: + { + integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + } + engines: { node: ">=10.0.0" } + hasBin: true + peerDependencies: + typescript: ">=2.7" + dependencies: + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.21 + typescript: 4.8.4 + yn: 3.1.1 + dev: true + + /tslib/1.14.1: + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + } + dev: true + + /tslib/2.3.0: + resolution: + { + integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + } + dev: false + + /tslib/2.4.0: + resolution: + { + integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + } + + /tsutils/3.21.0_typescript@4.8.4: + resolution: + { + integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + } + engines: { node: ">= 6" } + peerDependencies: + 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" + dependencies: + tslib: 1.14.1 + typescript: 4.8.4 + dev: true + + /type-check/0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest/0.18.1: + resolution: + { + integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + } + engines: { node: ">=10" } + dev: true + + /type-fest/0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + } + engines: { node: ">=10" } + dev: true + + /type-fest/0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + } + engines: { node: ">=10" } + dev: true + + /type-fest/0.6.0: + resolution: + { + integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + } + engines: { node: ">=8" } + dev: true + + /type-fest/0.8.1: + resolution: + { + integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + } + engines: { node: ">=8" } + dev: true + + /typescript/4.8.4: + resolution: + { + integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + } + engines: { node: ">=4.2.0" } + hasBin: true + dev: true + + /universalify/2.0.0: + resolution: + { + integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + } + engines: { node: ">= 10.0.0" } + dev: true + + /unpipe/1.0.0: + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + } + engines: { node: ">= 0.8" } + dev: true + + /unplugin-vue-define-options/0.7.3_vite@3.1.8+vue@3.2.41: + resolution: + { + integrity: sha512-VbexYR8m2v/TLi49+F7Yf3rO2EyS0EkrXjJxqym6W0NxOzom9zdmRUR+av4UAu4GruhMumJc/9ITS1Wj+rozjg== + } + engines: { node: ">=14.19.0" } + peerDependencies: + vue: ^3.2.25 + dependencies: + "@rollup/pluginutils": 4.2.1 + "@vue/compiler-sfc": 3.2.41 + unplugin: 0.8.1_vite@3.1.8 + vue: 3.2.41 + transitivePeerDependencies: + - esbuild + - rollup + - vite + - webpack + dev: true + + /unplugin/0.8.1_vite@3.1.8: + resolution: + { + integrity: sha512-o7rUZoPLG1fH4LKinWgb77gDtTE6mw/iry0Pq0Z5UPvZ9+HZ1/4+7fic7t58s8/CGkPrDpGq+RltO+DmswcR4g== + } + peerDependencies: + esbuild: ">=0.13" + rollup: ^2.50.0 + vite: ^2.3.0 || ^3.0.0-0 + webpack: 4 || 5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + acorn: 8.8.0 + chokidar: 3.5.3 + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.4.5 + dev: true + + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: + { + integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js/4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + } + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate/1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + } + dev: true + + /util/0.10.4: + resolution: + { + integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + } + dependencies: + inherits: 2.0.3 + dev: false + + /utils-merge/1.0.1: + resolution: { integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= } + engines: { node: ">= 0.4.0" } + dev: true + + /uuid/8.3.2: + resolution: + { + integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + } + hasBin: true + dev: true + + /v8-compile-cache/2.3.0: + resolution: + { + integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + } + dev: true + + /validate-npm-package-license/3.0.4: + resolution: + { + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + } + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /vite-plugin-cdn-import/0.3.5: + resolution: + { + integrity: sha512-e1raoalfBiIhv+hnMeSp1UNjloDDBhHpeFxkwRRdPBmTdDRqdEEn8owUmT5u8UBSVCs4xN3n/od4a91vXEhXPQ== + } + dependencies: + rollup-plugin-external-globals: 0.6.1 + transitivePeerDependencies: + - rollup + dev: true + + /vite-plugin-compression/0.5.1_vite@3.1.8: + resolution: + { + integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg== + } + peerDependencies: + vite: ">=2.0.0" + dependencies: + chalk: 4.1.2 + debug: 4.3.4 + fs-extra: 10.1.0 + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@3.1.8: + resolution: + { + integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg== + } + engines: { node: ">=12.0.0" } + peerDependencies: + mockjs: ">=1.1.0" + vite: ">=2.0.0" + dependencies: + "@rollup/plugin-node-resolve": 13.3.0 + "@types/mockjs": 1.0.7 + chalk: 4.1.2 + chokidar: 3.5.3 + connect: 3.7.0 + debug: 4.3.4 + esbuild: 0.11.3 + fast-glob: 3.2.12 + mockjs: 1.1.0 + path-to-regexp: 6.2.1 + vite: 3.1.8_sass@1.55.0+terser@5.15.1 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /vite-plugin-remove-console/1.1.0: + resolution: + { + integrity: sha512-FZ0gLEsRqgHPCl+blHpT3h004+InKrGddmBXTfs7Cj/xWY7FdHpL9Zc9kgjxh8zIzjZ/MblsPDDEqg5BVHIXDA== + } + dev: true + + /vite-svg-loader/3.6.0: + resolution: + { + integrity: sha512-bZJffcgCREW57kNkgMhuNqeDznWXyQwJ3wKrRhHLMMzwDnP5jr3vXW3cqsmquRR7VTP5mLdKj1/zzPPooGUuPw== + } + dependencies: + "@vue/compiler-sfc": 3.2.41 + svgo: 2.8.0 + dev: true + + /vite/3.1.8_sass@1.55.0+terser@5.15.1: + resolution: + { + integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg== + } + engines: { node: ^14.18.0 || >=16.0.0 } + hasBin: true + peerDependencies: + less: "*" + sass: "*" + stylus: "*" + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.15.11 + postcss: 8.4.18 + resolve: 1.22.1 + rollup: 2.78.1 + sass: 1.55.0 + terser: 5.15.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vue-demi/0.13.11_vue@3.2.41: + resolution: + { + integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + peerDependencies: + "@vue/composition-api": ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + "@vue/composition-api": + optional: true + dependencies: + vue: 3.2.41 + dev: false + + /vue-eslint-parser/8.3.0_eslint@8.25.0: + resolution: + { + integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ">=6.0.0" + dependencies: + debug: 4.3.4 + eslint: 8.25.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + lodash: 4.17.21 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-router/4.1.6_vue@3.2.41: + resolution: + { + integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ== + } + peerDependencies: + vue: ^3.2.0 + dependencies: + "@vue/devtools-api": 6.4.5 + vue: 3.2.41 + dev: false + + /vue-tsc/0.40.13_typescript@4.8.4: + resolution: + { + integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA== + } + hasBin: true + peerDependencies: + typescript: "*" + dependencies: + "@volar/vue-language-core": 0.40.13 + "@volar/vue-typescript": 0.40.13 + typescript: 4.8.4 + dev: true + + /vue-types/4.2.1_vue@3.2.41: + resolution: + { + integrity: sha512-DNQZmJuOvovLUIp0BENRkdnZHbI0V4e2mNvjAZOAXKD56YGvRchtUYOXA/XqTxdv7Ng5SJLZqRKRpAhm5NLaPQ== + } + engines: { node: ">=12.16.0" } + peerDependencies: + vue: ^2.0.0 || ^3.0.0 + dependencies: + is-plain-object: 5.0.0 + vue: 3.2.41 + dev: false + + /vue/3.2.41: + resolution: + { + integrity: sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ== + } + dependencies: + "@vue/compiler-dom": 3.2.41 + "@vue/compiler-sfc": 3.2.41 + "@vue/runtime-dom": 3.2.41 + "@vue/server-renderer": 3.2.41_vue@3.2.41 + "@vue/shared": 3.2.41 + dev: false + + /vxe-table/4.3.5_vue@3.2.41+xe-utils@3.5.7: + resolution: + { + integrity: sha512-JEvGAs7SBN1rWn5f2tkoRiXd/rAT7RfnDTTlFsHsTtASiUTKNTISI2WBsVeLkkNRTs0SXh6FgrYsIPO2soSBXA== + } + peerDependencies: + vue: ^3.2.28 + xe-utils: ^3.5.0 + dependencies: + vue: 3.2.41 + xe-utils: 3.5.7 + dev: false + + /webpack-sources/3.2.3: + resolution: + { + integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + } + engines: { node: ">=10.13.0" } + dev: true + + /webpack-virtual-modules/0.4.5: + resolution: + { + integrity: sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg== + } + dev: true + + /which/1.3.1: + resolution: + { + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: + { + integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + } + engines: { node: ">=0.10.0" } + dev: true + + /wrap-ansi/6.2.0: + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + } + engines: { node: ">=8" } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + } + dev: true + + /write-file-atomic/4.0.2: + resolution: + { + integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /xe-utils/3.5.7: + resolution: + { + integrity: sha512-3H+fDBKBR2wLJgyA7k9C/w1Xljx6Maml5ukV0WDY06HjYyGs2FEz6XhcwRCLIDXX4pBP3Gu0nX9DbCeuuRA2Ew== + } + dev: false + + /xtend/4.0.2: + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + } + engines: { node: ">=0.4" } + dev: true + + /y18n/5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + } + engines: { node: ">=10" } + dev: true + + /yallist/4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + } + dev: true + + /yaml/1.10.2: + resolution: + { + integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + } + engines: { node: ">= 6" } + dev: true + + /yargs-parser/20.2.9: + resolution: + { + integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + } + engines: { node: ">=10" } + dev: true + + /yargs-parser/21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + } + engines: { node: ">=12" } + dev: true + + /yargs/17.6.0: + resolution: + { + integrity: sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g== + } + engines: { node: ">=12" } + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn/3.1.1: + resolution: + { + integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + } + engines: { node: ">=6" } + dev: true + + /yocto-queue/0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + } + engines: { node: ">=10" } + dev: true + + /zrender/5.4.0: + resolution: + { + integrity: sha512-rOS09Z2HSVGFs2dn/TuYk5BlCaZcVe8UDLLjj1ySYF828LATKKdxuakSZMvrDz54yiKPDYVfjdKqcX8Jky3BIA== + } + dependencies: + tslib: 2.3.0 + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..20d42d8 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + "postcss-import": {}, + tailwindcss: {}, + autoprefixer: {}, + ...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {}) + } +}; diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bef93d4b01212f57cecb50658e8c9518be13e607 GIT binary patch literal 1270 zcmVPx(ut`KgR9Hu~mu*a2RT#(r=eE7z0C^Jz8!DR##z|jzZ413cjgEl9q1$4Zb4*!4 zXjK@R=~U)K+?GvQvStqBzAS3?L86&PjfvBRDVv}SWNy0Q3kb4JH)snHXnD*f0=Mn$ z3o0k+m;3ym|MR=gIX&lGh6N72)v@-pEvi*6?L;@NDA2N>7h=g4A{MmK2d#^rozi|Cv!*48t1H)C9mNv+tmC;++D_EL^x z@6DML`&inAwjP%aAoDmWjfGk^7AizYYd}|fEhcPA`8fl0Qe(!@*lvqzXzLum3B0NY zKr}HtXI86T`CkF_7H2a9)ykSOTC=xu$!dTs|HMZ)H{F?^!Ji2QB4`JETJPnWqWEm| z$u0Lrdp>6G3mWD9{~5qkO|fon>^OluT0d(XA3lu1&KHrFSAepzM?C5gQJq=K?+*qM zumc9`*a6VA)t^b^m0kGb(yue&&6}%{m8F+TLz)V|00yh$K@g7mD}Ez)3>SJnnhWzh zk8Rr;k(jttk`jC>WC4tIw8)}BbepS}9xTq9G#ii2NIEe1@cSiUC7_Fm)MBFF-h~u3t82qKn z@7hXQnv7?+H-Y20`8^Bx)T~hz$|d;#7%Yyr0c?;HFJE#NeP164wy?2jQzde8@;r15 zXfSD1jo!%~0J+wYY>pHi{wkzQ9>T>RgYPf5r)%+8Rh_R5M>-*$@0JEU0E||9DUoEq zmnaiez3A_<1$}!_5EC1R#+P36(GsZHtl_r?0;nKjZ_2jceH4A?z6c3G6z$$^LqtTR z_cZ*eB&E)vWxve^JUU>o*tY|$Nv=x#=spY%TnrhYzWxQIrrzSKpLUlBy6_KW0gN@y zGGgR&)8ROR`-eJAO#BrxK-0_naeZ`*%sOD@Lb~#ZJb=}yCL-}z^%${Xm+<>HJ3=lV z7k2}8?%XGhfr|GJ${Q5sKcz`bG-#Y?}Xx~7y$8mU}mhK7Mwdfe;TIVyb>k%twUPc zs(^E&;FR%s>CER04+@xw6S^HzZ9QG3RDwUU%Cn4H6O(gRBZR1WsWT z(pkTpFeCuE#FM@5TAH424p^PB*9En*CXnV|1Bj+4zMERj5i$VE1Y;Q>Br%|a#2-y} gnzdo?2K(3i4UB<+FiBYjEC2ui07*qoM6N<$f(X(_s{jB1 literal 0 HcmV?d00001 diff --git a/public/serverConfig.json b/public/serverConfig.json new file mode 100644 index 0000000..4248229 --- /dev/null +++ b/public/serverConfig.json @@ -0,0 +1,18 @@ +{ + "Version": "3.6.2", + "Title": "PureAdmin", + "FixedHeader": true, + "HiddenSideBar": false, + "MultiTagsCache": false, + "KeepAlive": true, + "Layout": "vertical", + "Theme": "default", + "DarkMode": false, + "Grey": false, + "Weak": false, + "HideTabs": false, + "SidebarStatus": true, + "EpThemeColor": "#409EFF", + "ShowLogo": true, + "ShowModel": "smart" +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..2620967 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/api/routes.ts b/src/api/routes.ts new file mode 100644 index 0000000..37f5e8f --- /dev/null +++ b/src/api/routes.ts @@ -0,0 +1,10 @@ +import { http } from "../utils/http"; + +type Result = { + success: boolean; + data: Array; +}; + +export const getAsyncRoutes = () => { + return http.request("get", "/getAsyncRoutes"); +}; diff --git a/src/api/user.ts b/src/api/user.ts new file mode 100644 index 0000000..8893dba --- /dev/null +++ b/src/api/user.ts @@ -0,0 +1,39 @@ +import { http } from "../utils/http"; + +export type UserResult = { + success: boolean; + data: { + /** 用户名 */ + username: string; + /** 当前登陆用户的角色 */ + roles: Array; + /** `token` */ + accessToken: string; + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refreshToken: string; + /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ + expires: Date; + }; +}; + +export type RefreshTokenResult = { + success: boolean; + data: { + /** `token` */ + accessToken: string; + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refreshToken: string; + /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ + expires: Date; + }; +}; + +/** 登录 */ +export const getLogin = (data?: object) => { + return http.request("post", "/login", { data }); +}; + +/** 刷新token */ +export const refreshTokenApi = (data?: object) => { + return http.request("post", "/refreshToken", { data }); +}; diff --git a/src/assets/iconfont/iconfont.css b/src/assets/iconfont/iconfont.css new file mode 100644 index 0000000..efdec40 --- /dev/null +++ b/src/assets/iconfont/iconfont.css @@ -0,0 +1,38 @@ +@font-face { + font-family: "iconfont"; /* Project id 2208059 */ + src: url("iconfont.woff2?t=1638023560828") format("woff2"), + url("iconfont.woff?t=1638023560828") format("woff"), + url("iconfont.ttf?t=1638023560828") format("truetype"); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.team-icontabs::before { + content: "\e63e"; +} + +.team-iconlogo::before { + content: "\e620"; +} + +.team-iconxinpin::before { + content: "\e614"; +} + +.team-iconxinpinrenqiwang::before { + content: "\e615"; +} + +.team-iconexit-fullscreen::before { + content: "\e62a"; +} + +.team-iconfullscreen::before { + content: "\e62b"; +} diff --git a/src/assets/iconfont/iconfont.js b/src/assets/iconfont/iconfont.js new file mode 100644 index 0000000..994bf8f --- /dev/null +++ b/src/assets/iconfont/iconfont.js @@ -0,0 +1,64 @@ +!(function (c) { + var l, + t, + e, + h, + i, + a = + '', + n = (n = document.getElementsByTagName("script"))[ + n.length - 1 + ].getAttribute("data-injectcss"), + o = function (c, l) { + l.parentNode.insertBefore(c, l); + }; + if (n && !c.__iconfont__svg__cssinject__) { + c.__iconfont__svg__cssinject__ = !0; + try { + document.write( + "" + ); + } catch (c) { + console && console.log(c); + } + } + function v() { + i || ((i = !0), e()); + } + function d() { + try { + h.documentElement.doScroll("left"); + } catch (c) { + return void setTimeout(d, 50); + } + v(); + } + (l = function () { + var c, l; + ((l = document.createElement("div")).innerHTML = a), + (a = null), + (c = l.getElementsByTagName("svg")[0]) && + (c.setAttribute("aria-hidden", "true"), + (c.style.position = "absolute"), + (c.style.width = 0), + (c.style.height = 0), + (c.style.overflow = "hidden"), + (l = c), + (c = document.body).firstChild ? o(l, c.firstChild) : c.appendChild(l)); + }), + document.addEventListener + ? ~["complete", "loaded", "interactive"].indexOf(document.readyState) + ? setTimeout(l, 0) + : ((t = function () { + document.removeEventListener("DOMContentLoaded", t, !1), l(); + }), + document.addEventListener("DOMContentLoaded", t, !1)) + : document.attachEvent && + ((e = l), + (h = c.document), + (i = !1), + d(), + (h.onreadystatechange = function () { + "complete" == h.readyState && ((h.onreadystatechange = null), v()); + })); +})(window); diff --git a/src/assets/iconfont/iconfont.json b/src/assets/iconfont/iconfont.json new file mode 100644 index 0000000..8c8b9b4 --- /dev/null +++ b/src/assets/iconfont/iconfont.json @@ -0,0 +1,51 @@ +{ + "id": "2208059", + "name": "pure-admin", + "font_family": "iconfont", + "css_prefix_text": "team-icon", + "description": "pure-admin", + "glyphs": [ + { + "icon_id": "20594647", + "name": "标签页", + "font_class": "tabs", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "22129506", + "name": "水能", + "font_class": "logo", + "unicode": "e620", + "unicode_decimal": 58912 + }, + { + "icon_id": "7795613", + "name": "新品", + "font_class": "xinpin", + "unicode": "e614", + "unicode_decimal": 58900 + }, + { + "icon_id": "7795615", + "name": "新品人气王", + "font_class": "xinpinrenqiwang", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "5698509", + "name": "全屏缩小", + "font_class": "exit-fullscreen", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "5698510", + "name": "全屏显示", + "font_class": "fullscreen", + "unicode": "e62b", + "unicode_decimal": 58923 + } + ] +} diff --git a/src/assets/iconfont/iconfont.ttf b/src/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..24eb3de3e4dd77256bcfb3810e082d3f196a7394 GIT binary patch literal 5580 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 \ No newline at end of file diff --git a/src/assets/login/bg.png b/src/assets/login/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8cdd3001fc95b63c1d334ab7d717812f4240839e GIT binary patch literal 17468 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 \ No newline at end of file diff --git a/src/assets/status/403.svg b/src/assets/status/403.svg new file mode 100644 index 0000000..97a10b0 --- /dev/null +++ b/src/assets/status/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/status/404.svg b/src/assets/status/404.svg new file mode 100644 index 0000000..137faca --- /dev/null +++ b/src/assets/status/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/status/500.svg b/src/assets/status/500.svg new file mode 100644 index 0000000..138aeac --- /dev/null +++ b/src/assets/status/500.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/back_top.svg b/src/assets/svg/back_top.svg new file mode 100644 index 0000000..3c75ca8 --- /dev/null +++ b/src/assets/svg/back_top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/dark.svg b/src/assets/svg/dark.svg new file mode 100644 index 0000000..421d28c --- /dev/null +++ b/src/assets/svg/dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/day.svg b/src/assets/svg/day.svg new file mode 100644 index 0000000..debccce --- /dev/null +++ b/src/assets/svg/day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/enter_outlined.svg b/src/assets/svg/enter_outlined.svg new file mode 100644 index 0000000..ad3f939 --- /dev/null +++ b/src/assets/svg/enter_outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/exit_screen.svg b/src/assets/svg/exit_screen.svg new file mode 100644 index 0000000..d14a678 --- /dev/null +++ b/src/assets/svg/exit_screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/full_screen.svg b/src/assets/svg/full_screen.svg new file mode 100644 index 0000000..ebb1111 --- /dev/null +++ b/src/assets/svg/full_screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/keyboard_esc.svg b/src/assets/svg/keyboard_esc.svg new file mode 100644 index 0000000..8008fdf --- /dev/null +++ b/src/assets/svg/keyboard_esc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/ReAuth/index.ts b/src/components/ReAuth/index.ts new file mode 100644 index 0000000..975ed2c --- /dev/null +++ b/src/components/ReAuth/index.ts @@ -0,0 +1,5 @@ +import auth from "./src/auth"; + +const Auth = auth; + +export { Auth }; diff --git a/src/components/ReAuth/src/auth.tsx b/src/components/ReAuth/src/auth.tsx new file mode 100644 index 0000000..d2cf9b3 --- /dev/null +++ b/src/components/ReAuth/src/auth.tsx @@ -0,0 +1,20 @@ +import { defineComponent, Fragment } from "vue"; +import { hasAuth } from "@/router/utils"; + +export default defineComponent({ + name: "Auth", + props: { + value: { + type: undefined, + default: [] + } + }, + setup(props, { slots }) { + return () => { + if (!slots) return null; + return hasAuth(props.value) ? ( + {slots.default?.()} + ) : null; + }; + } +}); diff --git a/src/components/ReIcon/index.ts b/src/components/ReIcon/index.ts new file mode 100644 index 0000000..5179723 --- /dev/null +++ b/src/components/ReIcon/index.ts @@ -0,0 +1,12 @@ +import iconifyIconOffline from "./src/iconifyIconOffline"; +import iconifyIconOnline from "./src/iconifyIconOnline"; +import fontIcon from "./src/iconfont"; + +/** 离线图标组件 */ +const IconifyIconOffline = iconifyIconOffline; +/** 在线图标组件 */ +const IconifyIconOnline = iconifyIconOnline; +/** iconfont组件 */ +const FontIcon = fontIcon; + +export { IconifyIconOffline, IconifyIconOnline, FontIcon }; diff --git a/src/components/ReIcon/src/hooks.ts b/src/components/ReIcon/src/hooks.ts new file mode 100644 index 0000000..65c4134 --- /dev/null +++ b/src/components/ReIcon/src/hooks.ts @@ -0,0 +1,49 @@ +import { iconType } from "./types"; +import { h, defineComponent, Component } from "vue"; +import { IconifyIconOnline, IconifyIconOffline, FontIcon } from "../index"; + +/** + * 支持fontawesome4、5+、iconfont、remixicon、element-plus的icons、自定义svg + * @param icon 必传 图标 + * @param attrs 可选 iconType 属性 + * @returns Component + */ +export function useRenderIcon(icon: any, attrs?: iconType): Component { + // iconfont + const ifReg = /^IF-/; + // typeof icon === "function" 属于SVG + if (ifReg.test(icon)) { + // iconfont + const name = icon.split(ifReg)[1]; + const iconName = name.slice( + 0, + name.indexOf(" ") == -1 ? name.length : name.indexOf(" ") + ); + const iconType = name.slice(name.indexOf(" ") + 1, name.length); + return defineComponent({ + name: "FontIcon", + render() { + return h(FontIcon, { + icon: iconName, + iconType, + ...attrs + }); + } + }); + } else if (typeof icon === "function" || typeof icon?.render === "function") { + // svg + return icon; + } else { + return defineComponent({ + name: "Icon", + render() { + const IconifyIcon = + attrs && attrs["online"] ? IconifyIconOnline : IconifyIconOffline; + return h(IconifyIcon, { + icon: icon, + ...attrs + }); + } + }); + } +} diff --git a/src/components/ReIcon/src/iconfont.ts b/src/components/ReIcon/src/iconfont.ts new file mode 100644 index 0000000..c110451 --- /dev/null +++ b/src/components/ReIcon/src/iconfont.ts @@ -0,0 +1,48 @@ +import { h, defineComponent } from "vue"; + +// 封装iconfont组件,默认`font-class`引用模式,支持`unicode`引用、`font-class`引用、`symbol`引用 (https://www.iconfont.cn/help/detail?spm=a313x.7781069.1998910419.20&helptype=code) +export default defineComponent({ + name: "FontIcon", + props: { + icon: { + type: String, + default: "" + } + }, + render() { + const attrs = this.$attrs; + if (Object.keys(attrs).includes("uni") || attrs?.iconType === "uni") { + return h( + "i", + { + class: "iconfont", + ...attrs + }, + this.icon + ); + } else if ( + Object.keys(attrs).includes("svg") || + attrs?.iconType === "svg" + ) { + return h( + "svg", + { + class: "icon-svg", + "aria-hidden": true + }, + { + default: () => [ + h("use", { + "xlink:href": `#${this.icon}` + }) + ] + } + ); + } else { + return h("i", { + class: `iconfont ${this.icon}`, + ...attrs + }); + } + } +}); diff --git a/src/components/ReIcon/src/iconifyIconOffline.ts b/src/components/ReIcon/src/iconifyIconOffline.ts new file mode 100644 index 0000000..b55f25b --- /dev/null +++ b/src/components/ReIcon/src/iconifyIconOffline.ts @@ -0,0 +1,88 @@ +import { h, defineComponent } from "vue"; +import { Icon as IconifyIcon, addIcon } from "@iconify/vue/dist/offline"; + +// element-plus icon +import Check from "@iconify-icons/ep/check"; +import HomeFilled from "@iconify-icons/ep/home-filled"; +import Lollipop from "@iconify-icons/ep/lollipop"; +import RefreshRight from "@iconify-icons/ep/refresh-right"; +import Close from "@iconify-icons/ep/close"; +import CloseBold from "@iconify-icons/ep/close-bold"; +import Bell from "@iconify-icons/ep/bell"; +import Search from "@iconify-icons/ep/search"; +addIcon("check", Check); +addIcon("home-filled", HomeFilled); +addIcon("lollipop", Lollipop); +addIcon("refresh-right", RefreshRight); +addIcon("close", Close); +addIcon("close-bold", CloseBold); +addIcon("bell", Bell); +addIcon("search", Search); + +// remixicon +import ArrowRightSLine from "@iconify-icons/ri/arrow-right-s-line"; +import ArrowLeftSLine from "@iconify-icons/ri/arrow-left-s-line"; +import LogoutCircleRLine from "@iconify-icons/ri/logout-circle-r-line"; +import InformationLine from "@iconify-icons/ri/information-line"; +import ArrowUpLine from "@iconify-icons/ri/arrow-up-line"; +import ArrowDownLine from "@iconify-icons/ri/arrow-down-line"; +import Bookmark2Line from "@iconify-icons/ri/bookmark-2-line"; +import User from "@iconify-icons/ri/user-3-fill"; +import Lock from "@iconify-icons/ri/lock-fill"; +import MenuUnfold from "@iconify-icons/ri/menu-unfold-fill"; +import MenuFold from "@iconify-icons/ri/menu-fold-fill"; +import Setting from "@iconify-icons/ri/settings-3-line"; +import ArrowDown from "@iconify-icons/ri/arrow-down-s-line"; +import CloseLeftTags from "@iconify-icons/ri/text-direction-r"; +import CloseRightTags from "@iconify-icons/ri/text-direction-l"; +import CloseOtherTags from "@iconify-icons/ri/text-spacing"; +import CloseAllTags from "@iconify-icons/ri/subtract-line"; +import Fullscreen from "@iconify-icons/ri/fullscreen-fill"; +import ExitFullscreen from "@iconify-icons/ri/fullscreen-exit-fill"; +addIcon("arrow-right-s-line", ArrowRightSLine); +addIcon("arrow-left-s-line", ArrowLeftSLine); +addIcon("logout-circle-r-line", LogoutCircleRLine); +addIcon("information-line", InformationLine); +addIcon("arrow-up-line", ArrowUpLine); +addIcon("arrow-down-line", ArrowDownLine); +addIcon("bookmark-2-line", Bookmark2Line); +addIcon("user", User); +addIcon("lock", Lock); +addIcon("menu-unfold", MenuUnfold); +addIcon("menu-fold", MenuFold); +addIcon("setting", Setting); +addIcon("arrow-down", ArrowDown); +addIcon("close-left-tags", CloseLeftTags); +addIcon("close-right-tags", CloseRightTags); +addIcon("close-other-tags", CloseOtherTags); +addIcon("close-all-tags", CloseAllTags); +addIcon("fullscreen", Fullscreen); +addIcon("exit-fullscreen", ExitFullscreen); + +// Iconify Icon在Vue里离线使用(用于内网环境)https://docs.iconify.design/icon-components/vue/offline.html +export default defineComponent({ + name: "IconifyIconOffline", + components: { IconifyIcon }, + props: { + icon: { + type: String, + default: "" + } + }, + render() { + const attrs = this.$attrs; + return h( + IconifyIcon, + { + icon: `${this.icon}`, + style: attrs?.style + ? Object.assign(attrs.style, { outline: "none" }) + : { outline: "none" }, + ...attrs + }, + { + default: () => [] + } + ); + } +}); diff --git a/src/components/ReIcon/src/iconifyIconOnline.ts b/src/components/ReIcon/src/iconifyIconOnline.ts new file mode 100644 index 0000000..a5f5822 --- /dev/null +++ b/src/components/ReIcon/src/iconifyIconOnline.ts @@ -0,0 +1,30 @@ +import { h, defineComponent } from "vue"; +import { Icon as IconifyIcon } from "@iconify/vue"; + +// Iconify Icon在Vue里在线使用(用于外网环境) +export default defineComponent({ + name: "IconifyIconOnline", + components: { IconifyIcon }, + props: { + icon: { + type: String, + default: "" + } + }, + render() { + const attrs = this.$attrs; + return h( + IconifyIcon, + { + icon: `${this.icon}`, + style: attrs?.style + ? Object.assign(attrs.style, { outline: "none" }) + : { outline: "none" }, + ...attrs + }, + { + default: () => [] + } + ); + } +}); diff --git a/src/components/ReIcon/src/types.ts b/src/components/ReIcon/src/types.ts new file mode 100644 index 0000000..7e3ffab --- /dev/null +++ b/src/components/ReIcon/src/types.ts @@ -0,0 +1,20 @@ +export interface iconType { + // iconify (https://docs.iconify.design/icon-components/vue/#properties) + inline?: boolean; + width?: string | number; + height?: string | number; + horizontalFlip?: boolean; + verticalFlip?: boolean; + flip?: string; + rotate?: number | string; + color?: string; + horizontalAlign?: boolean; + verticalAlign?: boolean; + align?: string; + online?: boolean; + onLoad?: Function; + includes?: Function; + + // all icon + style?: object; +} diff --git a/src/config/index.ts b/src/config/index.ts new file mode 100644 index 0000000..8365018 --- /dev/null +++ b/src/config/index.ts @@ -0,0 +1,56 @@ +import { App } from "vue"; +import axios from "axios"; +import { loadEnv } from "@build/index"; + +let config: object = {}; +const { VITE_PUBLIC_PATH } = loadEnv(); + +const setConfig = (cfg?: unknown) => { + config = Object.assign(config, cfg); +}; + +const getConfig = (key?: string): ServerConfigs => { + if (typeof key === "string") { + const arr = key.split("."); + if (arr && arr.length) { + let data = config; + arr.forEach(v => { + if (data && typeof data[v] !== "undefined") { + data = data[v]; + } else { + data = null; + } + }); + return data; + } + } + return config; +}; + +/** 获取项目动态全局配置 */ +export const getServerConfig = async (app: App): Promise => { + app.config.globalProperties.$config = getConfig(); + return axios({ + baseURL: "", + method: "get", + url: `${VITE_PUBLIC_PATH}serverConfig.json` + }) + .then(({ data: config }) => { + let $config = app.config.globalProperties.$config; + // 自动注入项目配置 + if (app && $config && typeof config === "object") { + $config = Object.assign($config, config); + app.config.globalProperties.$config = $config; + // 设置全局配置 + setConfig($config); + } + // 设置全局baseURL + app.config.globalProperties.$baseUrl = $config.baseURL; + return $config; + }) + .catch(() => { + throw "请在public文件夹下添加serverConfig.json配置文件"; + }); +}; + +export { getConfig, setConfig }; diff --git a/src/directives/auth/index.ts b/src/directives/auth/index.ts new file mode 100644 index 0000000..69118d6 --- /dev/null +++ b/src/directives/auth/index.ts @@ -0,0 +1,13 @@ +import { hasAuth } from "@/router/utils"; +import { Directive, type DirectiveBinding } from "vue"; + +export const auth: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + const { value } = binding; + if (value) { + !hasAuth(value) && el.parentNode.removeChild(el); + } else { + throw new Error("need auths! Like v-auth=\"['btn.add','btn.edit']\""); + } + } +}; diff --git a/src/directives/elResizeDetector/index.ts b/src/directives/elResizeDetector/index.ts new file mode 100644 index 0000000..af089be --- /dev/null +++ b/src/directives/elResizeDetector/index.ts @@ -0,0 +1,27 @@ +import { Directive, type DirectiveBinding, type VNode } from "vue"; +import elementResizeDetectorMaker from "element-resize-detector"; +import type { Erd } from "element-resize-detector"; +import { emitter } from "@/utils/mitt"; + +const erd: Erd = elementResizeDetectorMaker({ + strategy: "scroll" +}); + +export const resize: Directive = { + mounted(el: HTMLElement, binding?: DirectiveBinding, vnode?: VNode) { + erd.listenTo(el, elem => { + const width = elem.offsetWidth; + const height = elem.offsetHeight; + if (binding?.instance) { + emitter.emit("resize", { detail: { width, height } }); + } else { + vnode.el.dispatchEvent( + new CustomEvent("resize", { detail: { width, height } }) + ); + } + }); + }, + unmounted(el: HTMLElement) { + erd.uninstall(el); + } +}; diff --git a/src/directives/index.ts b/src/directives/index.ts new file mode 100644 index 0000000..d6d6592 --- /dev/null +++ b/src/directives/index.ts @@ -0,0 +1,2 @@ +export * from "./auth"; +export * from "./elResizeDetector"; diff --git a/src/layout/components/appMain.vue b/src/layout/components/appMain.vue new file mode 100644 index 0000000..e9b5450 --- /dev/null +++ b/src/layout/components/appMain.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/layout/components/navbar.vue b/src/layout/components/navbar.vue new file mode 100644 index 0000000..300f6ed --- /dev/null +++ b/src/layout/components/navbar.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/layout/components/notice/data.ts b/src/layout/components/notice/data.ts new file mode 100644 index 0000000..14c7560 --- /dev/null +++ b/src/layout/components/notice/data.ts @@ -0,0 +1,146 @@ +export interface ListItem { + avatar: string; + title: string; + datetime: string; + type: string; + description: string; + status?: "" | "success" | "warning" | "info" | "danger"; + extra?: string; +} + +export interface TabItem { + key: string; + name: string; + list: ListItem[]; +} + +export const noticesData: TabItem[] = [ + { + key: "1", + name: "通知", + list: [ + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + title: "你收到了 12 份新周报", + datetime: "一年前", + description: "", + type: "1" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + title: "你推荐的 前端高手 已通过第三轮面试", + datetime: "一年前", + description: "", + type: "1" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", + title: "这种模板可以区分多种通知类型", + datetime: "一年前", + description: "", + type: "1" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + title: + "展示标题内容超过一行后的处理方式,如果内容超过1行将自动截断并支持tooltip显示完整标题。", + datetime: "一年前", + description: "", + type: "1" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + title: "左侧图标用于区分不同的类型", + datetime: "一年前", + description: "", + type: "1" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + title: "左侧图标用于区分不同的类型", + datetime: "一年前", + description: "", + type: "1" + } + ] + }, + { + key: "2", + name: "消息", + list: [ + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg", + title: "李白 评论了你", + description: "长风破浪会有时,直挂云帆济沧海", + datetime: "一年前", + type: "2" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg", + title: "李白 回复了你", + description: "行路难,行路难,多歧路,今安在。", + datetime: "一年前", + type: "2" + }, + { + avatar: + "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg", + title: "标题", + description: + "请将鼠标移动到此处,以便测试超长的消息在此处将如何处理。本例中设置的描述最大行数为2,超过2行的描述内容将被省略并且可以通过tooltip查看完整内容", + datetime: "一年前", + type: "2" + } + ] + }, + { + key: "3", + name: "代办", + list: [ + { + avatar: "", + title: "任务名称", + description: "任务需要在 2022-11-16 20:00 前启动", + datetime: "", + extra: "未开始", + status: "info", + type: "3" + }, + { + avatar: "", + title: "第三方紧急代码变更", + description: + "一拳提交于 2022-11-16,需在 2022-11-18 前完成代码变更任务", + datetime: "", + extra: "马上到期", + status: "danger", + type: "3" + }, + { + avatar: "", + title: "信息安全考试", + description: "指派小仙于 2022-12-12 前完成更新并发布", + datetime: "", + extra: "已耗时 8 天", + status: "warning", + type: "3" + }, + { + avatar: "", + title: "vue-pure-admin 版本发布", + description: "vue-pure-admin 版本发布", + datetime: "", + extra: "进行中", + type: "3" + } + ] + } +]; diff --git a/src/layout/components/notice/index.vue b/src/layout/components/notice/index.vue new file mode 100644 index 0000000..fbce59d --- /dev/null +++ b/src/layout/components/notice/index.vue @@ -0,0 +1,101 @@ + + + + + + + diff --git a/src/layout/components/notice/noticeItem.vue b/src/layout/components/notice/noticeItem.vue new file mode 100644 index 0000000..fe6de2f --- /dev/null +++ b/src/layout/components/notice/noticeItem.vue @@ -0,0 +1,169 @@ + + + + + + diff --git a/src/layout/components/notice/noticeList.vue b/src/layout/components/notice/noticeList.vue new file mode 100644 index 0000000..109cd1a --- /dev/null +++ b/src/layout/components/notice/noticeList.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/layout/components/panel/index.vue b/src/layout/components/panel/index.vue new file mode 100644 index 0000000..2a53f61 --- /dev/null +++ b/src/layout/components/panel/index.vue @@ -0,0 +1,143 @@ + + + + + + + diff --git a/src/layout/components/screenfull/index.vue b/src/layout/components/screenfull/index.vue new file mode 100644 index 0000000..978ba50 --- /dev/null +++ b/src/layout/components/screenfull/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/layout/components/search/components/SearchFooter.vue b/src/layout/components/search/components/SearchFooter.vue new file mode 100644 index 0000000..051ca5f --- /dev/null +++ b/src/layout/components/search/components/SearchFooter.vue @@ -0,0 +1,41 @@ + + + + diff --git a/src/layout/components/search/components/SearchModal.vue b/src/layout/components/search/components/SearchModal.vue new file mode 100644 index 0000000..4ff03c3 --- /dev/null +++ b/src/layout/components/search/components/SearchModal.vue @@ -0,0 +1,172 @@ + + + + diff --git a/src/layout/components/search/components/SearchResult.vue b/src/layout/components/search/components/SearchResult.vue new file mode 100644 index 0000000..493a4a3 --- /dev/null +++ b/src/layout/components/search/components/SearchResult.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/layout/components/search/components/index.ts b/src/layout/components/search/components/index.ts new file mode 100644 index 0000000..6e895d9 --- /dev/null +++ b/src/layout/components/search/components/index.ts @@ -0,0 +1,3 @@ +import SearchModal from "./SearchModal.vue"; + +export { SearchModal }; diff --git a/src/layout/components/search/index.vue b/src/layout/components/search/index.vue new file mode 100644 index 0000000..01f3923 --- /dev/null +++ b/src/layout/components/search/index.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/layout/components/setting/index.vue b/src/layout/components/setting/index.vue new file mode 100644 index 0000000..f30d7c9 --- /dev/null +++ b/src/layout/components/setting/index.vue @@ -0,0 +1,523 @@ + + + + + + + diff --git a/src/layout/components/sidebar/breadCrumb.vue b/src/layout/components/sidebar/breadCrumb.vue new file mode 100644 index 0000000..52c0228 --- /dev/null +++ b/src/layout/components/sidebar/breadCrumb.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/layout/components/sidebar/horizontal.vue b/src/layout/components/sidebar/horizontal.vue new file mode 100644 index 0000000..ba966e8 --- /dev/null +++ b/src/layout/components/sidebar/horizontal.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/layout/components/sidebar/leftCollapse.vue b/src/layout/components/sidebar/leftCollapse.vue new file mode 100644 index 0000000..aaa73c6 --- /dev/null +++ b/src/layout/components/sidebar/leftCollapse.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/layout/components/sidebar/logo.vue b/src/layout/components/sidebar/logo.vue new file mode 100644 index 0000000..6f8b475 --- /dev/null +++ b/src/layout/components/sidebar/logo.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/layout/components/sidebar/mixNav.vue b/src/layout/components/sidebar/mixNav.vue new file mode 100644 index 0000000..6bd9585 --- /dev/null +++ b/src/layout/components/sidebar/mixNav.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/layout/components/sidebar/sidebarItem.vue b/src/layout/components/sidebar/sidebarItem.vue new file mode 100644 index 0000000..afaf86b --- /dev/null +++ b/src/layout/components/sidebar/sidebarItem.vue @@ -0,0 +1,261 @@ + + + diff --git a/src/layout/components/sidebar/topCollapse.vue b/src/layout/components/sidebar/topCollapse.vue new file mode 100644 index 0000000..4a33c08 --- /dev/null +++ b/src/layout/components/sidebar/topCollapse.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/layout/components/sidebar/vertical.vue b/src/layout/components/sidebar/vertical.vue new file mode 100644 index 0000000..ee3351c --- /dev/null +++ b/src/layout/components/sidebar/vertical.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/layout/components/tag/index.scss b/src/layout/components/tag/index.scss new file mode 100644 index 0000000..76c0043 --- /dev/null +++ b/src/layout/components/tag/index.scss @@ -0,0 +1,296 @@ +@keyframes scheduleInWidth { + from { + width: 0; + } + + to { + width: 100%; + } +} + +@keyframes scheduleOutWidth { + from { + width: 100%; + } + + to { + width: 0; + } +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + +@keyframes close { + from { + transform: translate(-50%, -50%); + } + + to { + transform: translate(0, -50%); + } +} + +.tags-view { + width: 100%; + font-size: 14px; + display: flex; + align-items: center; + color: var(--el-text-color-primary); + background: #fff; + position: relative; + box-shadow: 0 0 1px #888; + + .scroll-item { + border-radius: 3px 3px 0 0; + padding: 0 6px; + box-shadow: 0 0 1px #888; + position: relative; + margin-right: 4px; + height: 28px; + display: inline-block; + line-height: 28px; + transition: all 0.4s; + cursor: pointer; + + .el-icon-close { + font-size: 10px; + color: var(--el-color-primary); + cursor: pointer; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + transition: font-size 0.2s; + + &:hover { + border-radius: 50%; + color: #fff; + background: #b4bccc; + font-size: 13px; + } + } + + &.is-closable:not(:first-child) { + &:hover { + padding-right: 18px; + + &:not(.is-active) { + .el-icon-close { + animation: close 200ms ease-in forwards; + } + } + } + } + } + + a { + text-decoration: none; + color: var(--el-text-color-primary); + padding: 0 4px; + } + + .scroll-container { + flex: 1; + overflow: hidden; + padding: 5px 0; + white-space: nowrap; + position: relative; + + .tab { + position: relative; + float: left; + list-style: none; + overflow: visible; + white-space: nowrap; + transition: transform 0.5s ease-in-out; + + .scroll-item { + transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + + &:nth-child(1) { + margin-left: 5px; + } + } + } + } + + /* 右键菜单 */ + .contextmenu { + margin: 0; + background: #fff; + position: absolute; + list-style-type: none; + padding: 5px 0; + border-radius: 4px; + color: var(--el-text-color-primary); + font-weight: normal; + font-size: 13px; + white-space: nowrap; + outline: 0; + box-shadow: 0 2px 8px rgb(0 0 0 / 15%); + + li { + width: 100%; + margin: 0; + padding: 7px 12px; + cursor: pointer; + display: flex; + align-items: center; + + &:hover { + // background: var(--el-color-primary-light-9); + color: var(--el-color-primary); + } + + svg { + display: block; + margin-right: 0.5em; + } + } + } +} + +.el-dropdown-menu { + li { + width: 100%; + margin: 0; + cursor: pointer; + display: flex; + align-items: center; + + svg { + display: block; + margin-right: 0.5em; + } + } +} + +.el-dropdown-menu__item:not(.is-disabled):hover { + color: #606266; + background: #f0f0f0; +} + +:deep(.el-dropdown-menu__item) i { + margin-right: 10px; +} + +:deep(.el-dropdown-menu__item--divided) { + margin: 1px 0; +} +.el-dropdown-menu__item--divided::before { + margin: 0; +} + +.el-dropdown-menu__item.is-disabled { + cursor: not-allowed; +} + +.scroll-item.is-active { + // background-color: var(--el-color-primary-light-9); + position: relative; + color: #fff; + + &:not(:first-child) { + padding-right: 18px; + } + + .el-icon-close { + transform: translate(0, -50%); + } + + a { + color: var(--el-color-primary) !important; + } +} + +.arrow-left, +.arrow-right, +.arrow-down { + width: 40px; + height: 38px; + color: var(--el-text-color-primary); + position: relative; + + svg { + width: 20px; + height: 20px; + position: absolute; + left: 50%; + transform: translate(-50%, 50%); + } +} + +.arrow-left { + box-shadow: 5px 0 5px -6px #ccc; + + &:hover { + cursor: w-resize; + } +} + +.arrow-right { + box-shadow: -5px 0 5px -6px #ccc; + border-right: 0.5px solid #ccc; + + &:hover { + cursor: e-resize; + } +} + +/* 卡片模式下鼠标移入显示蓝色边框 */ +.card-in { + color: var(--el-color-primary); + + a { + color: var(--el-color-primary); + } +} + +/* 卡片模式下鼠标移出隐藏蓝色边框 */ +.card-out { + border: none; + color: #666; + + a { + color: #666; + } +} + +/* 灵动模式 */ +.schedule-active { + width: 100%; + height: 2px; + position: absolute; + left: 0; + bottom: 0; + background: var(--el-color-primary); +} + +/* 灵动模式下鼠标移入显示蓝色进度条 */ +.schedule-in { + width: 100%; + height: 2px; + position: absolute; + left: 0; + bottom: 0; + background: var(--el-color-primary); + animation: scheduleInWidth 400ms ease-in; +} + +/* 灵动模式下鼠标移出隐藏蓝色进度条 */ +.schedule-out { + width: 0; + height: 2px; + position: absolute; + left: 0; + bottom: 0; + background: var(--el-color-primary); + animation: scheduleOutWidth 400ms ease-in; +} diff --git a/src/layout/components/tag/index.vue b/src/layout/components/tag/index.vue new file mode 100644 index 0000000..2380ea7 --- /dev/null +++ b/src/layout/components/tag/index.vue @@ -0,0 +1,596 @@ + + + + + diff --git a/src/layout/frameView.vue b/src/layout/frameView.vue new file mode 100644 index 0000000..5e4f4f4 --- /dev/null +++ b/src/layout/frameView.vue @@ -0,0 +1,68 @@ + + +