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..562258a
--- /dev/null
+++ b/.env
@@ -0,0 +1,14 @@
+# port
+VITE_PORT = 8848
+# title
+VITE_TITLE = vue-pure-admin
+# version
+VITE_VERSION = 2.1.0
+# open
+VITE_OPEN = false
+
+# public path
+VITE_PUBLIC_PATH = /
+
+# Cross-domain proxy, you can configure multiple
+VITE_PROXY = [ ["/api", "http://127.0.0.1:3000" ] ]
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..562258a
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,14 @@
+# port
+VITE_PORT = 8848
+# title
+VITE_TITLE = vue-pure-admin
+# version
+VITE_VERSION = 2.1.0
+# open
+VITE_OPEN = false
+
+# public path
+VITE_PUBLIC_PATH = /
+
+# Cross-domain proxy, you can configure multiple
+VITE_PROXY = [ ["/api", "http://127.0.0.1:3000" ] ]
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..d6e1ff4
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,2 @@
+# public path
+VITE_PUBLIC_PATH = /manages/
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..7475629
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,4 @@
+public
+dist
+*.d.ts
+package.json
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..f414aa0
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,75 @@
+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/prettier/@typescript-eslint"
+ ],
+ parser: "vue-eslint-parser",
+ parserOptions: {
+ parser: "@typescript-eslint/parser",
+ ecmaVersion: 2020,
+ sourceType: "module",
+ jsxPragma: "React",
+ ecmaFeatures: {
+ jsx: true
+ }
+ },
+ rules: {
+ "@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",
+ "@typescript-eslint/no-unused-vars": [
+ "error",
+ {
+ argsIgnorePattern: "^_",
+ varsIgnorePattern: "^_"
+ }
+ ],
+ "no-unused-vars": [
+ "error",
+ {
+ argsIgnorePattern: "^_",
+ varsIgnorePattern: "^_"
+ }
+ ]
+ }
+};
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..139565d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local
+.eslintcache
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+tests/**/coverage/
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
\ 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..9d5129b
--- /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 Yarn
+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..3fafdff
--- /dev/null
+++ b/.husky/lintstagedrc.js
@@ -0,0 +1,10 @@
+module.exports = {
+ "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
+ "{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
+ "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/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..07a5dad
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ bracketSpacing: true,
+ jsxBracketSameLine: 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/README.en-US.md b/README.en-US.md
new file mode 100644
index 0000000..1940428
--- /dev/null
+++ b/README.en-US.md
@@ -0,0 +1 @@
+
vue-pure-admin精简版
diff --git a/README.md b/README.md
index 91bf340..1940428 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1 @@
-# pure-admin-thin
-vue-pure-admin精简版
+vue-pure-admin精简版
diff --git a/api/routes.ts b/api/routes.ts
new file mode 100644
index 0000000..f215ccc
--- /dev/null
+++ b/api/routes.ts
@@ -0,0 +1,5 @@
+import { http } from "/@/utils/http";
+
+export const getAsyncRoutes = (data?: object) => {
+ return http.request("get", "/getAsyncRoutes", data);
+};
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..7e3c18b
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,6 @@
+const productPlugins = [];
+process.env.NODE_ENV === "production" &&
+ productPlugins.push("transform-remove-console");
+module.exports = {
+ plugins: [...productPlugins]
+};
diff --git a/build/proxy.ts b/build/proxy.ts
new file mode 100644
index 0000000..7cae8eb
--- /dev/null
+++ b/build/proxy.ts
@@ -0,0 +1,19 @@
+type ProxyItem = [string, string];
+
+type ProxyList = ProxyItem[];
+
+const regExps = (value: string, reg: string): string => {
+ return value.replace(new RegExp(reg, "g"), "");
+};
+
+export function createProxy(list: ProxyList = []) {
+ const ret: any = {};
+ for (const [prefix, target] of list) {
+ ret[prefix] = {
+ target: target,
+ changeOrigin: true,
+ rewrite: (path: string) => regExps(path, prefix)
+ };
+ }
+ return ret;
+}
diff --git a/build/utils.ts b/build/utils.ts
new file mode 100644
index 0000000..92f4b8d
--- /dev/null
+++ b/build/utils.ts
@@ -0,0 +1,32 @@
+const warpperEnv = (envConf: Recordable): ViteEnv => {
+ const ret: any = {};
+
+ 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);
+ }
+ if (envName === "VITE_PROXY" && realName) {
+ try {
+ realName = JSON.parse(realName.replace(/'/g, '"'));
+ } catch (error) {
+ 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 loadEnv = (): ViteEnv => {
+ return import.meta.env;
+};
+
+export { loadEnv, warpperEnv };
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..31e4d64
--- /dev/null
+++ b/index.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+ Pure-Admin-Thin
+
+
+
+
+
+
+
+
diff --git a/mock/asyncRoutes.ts b/mock/asyncRoutes.ts
new file mode 100644
index 0000000..c7c7ab4
--- /dev/null
+++ b/mock/asyncRoutes.ts
@@ -0,0 +1,90 @@
+// 根据角色动态生成路由
+import { MockMethod } from "vite-plugin-mock";
+
+// http://mockjs.com/examples.html#Object
+const systemRouter = {
+ path: "/system",
+ name: "system",
+ redirect: "/system/user",
+ meta: {
+ icon: "el-icon-setting",
+ title: "message.hssysManagement",
+ showLink: true,
+ rank: 6
+ },
+ children: [
+ {
+ path: "/system/user",
+ name: "user",
+ meta: {
+ title: "message.hsBaseinfo",
+ showLink: true
+ }
+ },
+ {
+ path: "/system/dict",
+ name: "dict",
+ meta: {
+ title: "message.hsDict",
+ showLink: true
+ }
+ }
+ ]
+};
+
+const permissionRouter = {
+ path: "/permission",
+ name: "permission",
+ redirect: "/permission/page",
+ meta: {
+ title: "message.permission",
+ icon: "el-icon-lollipop",
+ showLink: true,
+ rank: 3
+ },
+ children: [
+ {
+ path: "/permission/page",
+ name: "permissionPage",
+ meta: {
+ title: "message.permissionPage",
+ showLink: true
+ }
+ },
+ {
+ path: "/permission/button",
+ name: "permissionButton",
+ meta: {
+ title: "message.permissionButton",
+ showLink: true,
+ authority: []
+ }
+ }
+ ]
+};
+
+// 添加不同按钮权限到/permission/button页面中
+function setDifAuthority(authority, routes) {
+ routes.children[1].meta.authority = [authority];
+ return routes;
+}
+
+export default [
+ {
+ url: "/getAsyncRoutes",
+ method: "get",
+ response: ({ query }) => {
+ if (query.name === "admin") {
+ return {
+ code: 0,
+ info: [systemRouter, setDifAuthority("v-admin", permissionRouter)]
+ };
+ } else {
+ return {
+ code: 0,
+ info: [setDifAuthority("v-test", permissionRouter)]
+ };
+ }
+ }
+ }
+] as MockMethod[];
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..6d2a721
--- /dev/null
+++ b/package.json
@@ -0,0 +1,89 @@
+{
+ "name": "vue-pure-admin",
+ "version": "2.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "cross-env --max_old_space_size=4096 vite",
+ "serve": "yarn dev",
+ "build": "rimraf dist && cross-env vite build",
+ "preview": "vite preview",
+ "preview:build": "yarn build && vite preview",
+ "clean:cache": "rm -rf node_modules && rm -rf .eslintcache && yarn cache clean && yarn",
+ "lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
+ "lint:prettier": "prettier --write \"src/**/*.{js,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": "yarn lint:eslint && yarn lint:prettier && yarn lint:stylelint && yarn lint:pretty",
+ "prepare": "husky install"
+ },
+ "dependencies": {
+ "@vueuse/core": "^6.5.3",
+ "animate.css": "^4.1.1",
+ "await-to-js": "^3.0.0",
+ "axios": "^0.21.1",
+ "dayjs": "^1.10.7",
+ "element-plus": "1.1.0-beta.20",
+ "element-resize-detector": "^1.2.3",
+ "font-awesome": "^4.7.0",
+ "lodash-es": "^4.17.21",
+ "lowdb": "^3.0.0",
+ "mitt": "^3.0.0",
+ "mockjs": "^1.1.0",
+ "nprogress": "^0.2.0",
+ "path": "^0.12.7",
+ "path-to-regexp": "^6.2.0",
+ "pinia": "2.0.0-rc.10",
+ "resize-observer-polyfill": "^1.5.1",
+ "responsive-storage": "^1.0.11",
+ "typescript-cookie": "^1.0.0",
+ "vue": "^3.2.20",
+ "vue-i18n": "^9.2.0-beta.3",
+ "vue-router": "^4.0.11",
+ "vue-types": "^4.1.0"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^13.1.0",
+ "@commitlint/config-conventional": "^13.1.0",
+ "@types/element-resize-detector": "^1.1.3",
+ "@types/mockjs": "^1.0.3",
+ "@types/node": "^14.14.14",
+ "@types/nprogress": "^0.2.0",
+ "@typescript-eslint/eslint-plugin": "^4.31.0",
+ "@typescript-eslint/parser": "^4.31.0",
+ "@vitejs/plugin-vue": "^1.6.0",
+ "@vitejs/plugin-vue-jsx": "^1.1.7",
+ "@vue/compiler-sfc": "^3.2.20",
+ "@vue/eslint-config-prettier": "^6.0.0",
+ "@vue/eslint-config-typescript": "^7.0.0",
+ "autoprefixer": "^10.2.4",
+ "babel-plugin-transform-remove-console": "^6.9.4",
+ "chalk": "^2.4.2",
+ "cross-env": "^7.0.3",
+ "eslint": "^7.30.0",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-vue": "^7.17.0",
+ "husky": "^7.0.2",
+ "lint-staged": "^11.1.2",
+ "postcss": "^8.2.6",
+ "postcss-import": "^14.0.0",
+ "prettier": "^2.3.2",
+ "pretty-quick": "^3.1.1",
+ "rimraf": "^3.0.2",
+ "sass": "^1.38.0",
+ "sass-loader": "^12.1.0",
+ "stylelint": "^13.13.1",
+ "stylelint-config-prettier": "^8.0.2",
+ "stylelint-config-standard": "^22.0.0",
+ "stylelint-order": "^4.1.0",
+ "typescript": "^4.4.2",
+ "unplugin-element-plus": "^0.1.0",
+ "vite": "^2.6.7",
+ "vite-plugin-mock": "^2.9.6",
+ "vite-svg-loader": "^2.2.0",
+ "vue-eslint-parser": "^7.10.0"
+ },
+ "repository": "git@github.com:xiaoxian521/vue-pure-admin.git",
+ "author": "xiaoxian521",
+ "license": "MIT"
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..06c3249
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ plugins: [require("autoprefixer"), require("postcss-import")]
+};
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..3205933
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/iconfont.css b/public/iconfont.css
new file mode 100644
index 0000000..6ce17fa
--- /dev/null
+++ b/public/iconfont.css
@@ -0,0 +1,18 @@
+@font-face {
+ font-family: "iconfont"; /* project id 1098500 */
+ src: url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.eot");
+ src: url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.eot?#iefix")
+ format("embedded-opentype"),
+ url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.woff2") format("woff2"),
+ url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.woff") format("woff"),
+ url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.ttf") format("truetype"),
+ url("//at.alicdn.com/t/font_1098500_3d6un9zwltz.svg#iconfont") format("svg");
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
diff --git a/public/serverConfig.json b/public/serverConfig.json
new file mode 100644
index 0000000..839e7ad
--- /dev/null
+++ b/public/serverConfig.json
@@ -0,0 +1,9 @@
+{
+ "Version": "2.1.0",
+ "Title": "PureAdmin",
+ "FixedHeader": false,
+ "HiddenSideBar": false,
+ "KeepAlive": true,
+ "Locale": "zh",
+ "Layout": "vertical-dark"
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..93cc226
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/src/assets/401.gif b/src/assets/401.gif
new file mode 100644
index 0000000..cd6e0d9
Binary files /dev/null and b/src/assets/401.gif differ
diff --git a/src/assets/404.png b/src/assets/404.png
new file mode 100644
index 0000000..3d8e230
Binary files /dev/null and b/src/assets/404.png differ
diff --git a/src/assets/404_cloud.png b/src/assets/404_cloud.png
new file mode 100644
index 0000000..c6281d0
Binary files /dev/null and b/src/assets/404_cloud.png differ
diff --git a/src/assets/bg.png b/src/assets/bg.png
new file mode 100644
index 0000000..c5a8e0d
Binary files /dev/null and b/src/assets/bg.png differ
diff --git a/src/assets/iconfont/iconfont.css b/src/assets/iconfont/iconfont.css
new file mode 100644
index 0000000..54fe0e9
--- /dev/null
+++ b/src/assets/iconfont/iconfont.css
@@ -0,0 +1,50 @@
+@font-face {
+ font-family: "iconfont"; /* Project id 2208059 */
+ src: url("iconfont.woff2?t=1634092870259") format("woff2"),
+ url("iconfont.woff?t=1634092870259") format("woff"),
+ url("iconfont.ttf?t=1634092870259") format("truetype");
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.team-iconzuixinlianzai::before {
+ content: "\e6da";
+}
+
+.team-iconxinpin::before {
+ content: "\e614";
+}
+
+.team-iconxinpinrenqiwang::before {
+ content: "\e615";
+}
+
+.team-iconinternationality::before {
+ content: "\e67a";
+}
+
+.team-iconshanchu::before {
+ content: "\e617";
+}
+
+.team-iconshow-main-container::before {
+ content: "\e878";
+}
+
+.team-iconhidden-main-container::before {
+ content: "\e881";
+}
+
+.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..8889adf
--- /dev/null
+++ b/src/assets/iconfont/iconfont.js
@@ -0,0 +1,64 @@
+!(function (c) {
+ var l,
+ t,
+ h,
+ e,
+ i,
+ v =
+ '',
+ a = (a = document.getElementsByTagName("script"))[
+ a.length - 1
+ ].getAttribute("data-injectcss"),
+ n = function (c, l) {
+ l.parentNode.insertBefore(c, l);
+ };
+ if (a && !c.__iconfont__svg__cssinject__) {
+ c.__iconfont__svg__cssinject__ = !0;
+ try {
+ document.write(
+ ""
+ );
+ } catch (c) {
+ console && console.log(c);
+ }
+ }
+ function o() {
+ i || ((i = !0), h());
+ }
+ function m() {
+ try {
+ e.documentElement.doScroll("left");
+ } catch (c) {
+ return void setTimeout(m, 50);
+ }
+ o();
+ }
+ (l = function () {
+ var c, l;
+ ((l = document.createElement("div")).innerHTML = v),
+ (v = 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 ? n(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 &&
+ ((h = l),
+ (e = c.document),
+ (i = !1),
+ m(),
+ (e.onreadystatechange = function () {
+ "complete" == e.readyState && ((e.onreadystatechange = null), o());
+ }));
+})(window);
diff --git a/src/assets/iconfont/iconfont.json b/src/assets/iconfont/iconfont.json
new file mode 100644
index 0000000..41cc71c
--- /dev/null
+++ b/src/assets/iconfont/iconfont.json
@@ -0,0 +1,72 @@
+{
+ "id": "2208059",
+ "name": "pure-admin",
+ "font_family": "iconfont",
+ "css_prefix_text": "team-icon",
+ "description": "pure-admin",
+ "glyphs": [
+ {
+ "icon_id": "2508809",
+ "name": "最新连载",
+ "font_class": "zuixinlianzai",
+ "unicode": "e6da",
+ "unicode_decimal": 59098
+ },
+ {
+ "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": "18367956",
+ "name": "中英文2 中文",
+ "font_class": "internationality",
+ "unicode": "e67a",
+ "unicode_decimal": 59002
+ },
+ {
+ "icon_id": "6184565",
+ "name": "删除",
+ "font_class": "shanchu",
+ "unicode": "e617",
+ "unicode_decimal": 58903
+ },
+ {
+ "icon_id": "9626913",
+ "name": "全屏",
+ "font_class": "show-main-container",
+ "unicode": "e878",
+ "unicode_decimal": 59512
+ },
+ {
+ "icon_id": "9626952",
+ "name": "退出全屏",
+ "font_class": "hidden-main-container",
+ "unicode": "e881",
+ "unicode_decimal": 59521
+ },
+ {
+ "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 0000000..6b50083
Binary files /dev/null and b/src/assets/iconfont/iconfont.ttf differ
diff --git a/src/assets/iconfont/iconfont.woff b/src/assets/iconfont/iconfont.woff
new file mode 100644
index 0000000..00ee66d
Binary files /dev/null and b/src/assets/iconfont/iconfont.woff differ
diff --git a/src/assets/iconfont/iconfont.woff2 b/src/assets/iconfont/iconfont.woff2
new file mode 100644
index 0000000..d9fa6c0
Binary files /dev/null and b/src/assets/iconfont/iconfont.woff2 differ
diff --git a/src/assets/login.png b/src/assets/login.png
new file mode 100644
index 0000000..faa0569
Binary files /dev/null and b/src/assets/login.png differ
diff --git a/src/assets/svg/close.svg b/src/assets/svg/close.svg
new file mode 100644
index 0000000..5b5057f
--- /dev/null
+++ b/src/assets/svg/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/close_all.svg b/src/assets/svg/close_all.svg
new file mode 100644
index 0000000..aa13cd7
--- /dev/null
+++ b/src/assets/svg/close_all.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/close_left.svg b/src/assets/svg/close_left.svg
new file mode 100644
index 0000000..e5708ea
--- /dev/null
+++ b/src/assets/svg/close_left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/close_other.svg b/src/assets/svg/close_other.svg
new file mode 100644
index 0000000..212e6c2
--- /dev/null
+++ b/src/assets/svg/close_other.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/svg/close_right.svg b/src/assets/svg/close_right.svg
new file mode 100644
index 0000000..14d3cf3
--- /dev/null
+++ b/src/assets/svg/close_right.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..cb8bbcc
--- /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..b9fc5c0
--- /dev/null
+++ b/src/assets/svg/full_screen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/globalization.svg b/src/assets/svg/globalization.svg
new file mode 100644
index 0000000..10cddc6
--- /dev/null
+++ b/src/assets/svg/globalization.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/refresh.svg b/src/assets/svg/refresh.svg
new file mode 100644
index 0000000..1f549f1
--- /dev/null
+++ b/src/assets/svg/refresh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/ReIcon/index.ts b/src/components/ReIcon/index.ts
new file mode 100644
index 0000000..441416b
--- /dev/null
+++ b/src/components/ReIcon/index.ts
@@ -0,0 +1,12 @@
+import { App } from "vue";
+import icon from "./src/Icon.vue";
+
+export const Icon = Object.assign(icon, {
+ install(app: App) {
+ app.component(icon.name, icon);
+ }
+});
+
+export default {
+ Icon
+};
diff --git a/src/components/ReIcon/src/Icon.vue b/src/components/ReIcon/src/Icon.vue
new file mode 100644
index 0000000..f0836a1
--- /dev/null
+++ b/src/components/ReIcon/src/Icon.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ReInfo/index.vue b/src/components/ReInfo/index.vue
new file mode 100644
index 0000000..3ba657d
--- /dev/null
+++ b/src/components/ReInfo/index.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ tipsFalse
+ }}
+ 重置
+ {{ tips }}
+
+ 免密登录
+
+
+
+
+
diff --git a/src/config/index.ts b/src/config/index.ts
new file mode 100644
index 0000000..c747e16
--- /dev/null
+++ b/src/config/index.ts
@@ -0,0 +1,56 @@
+import { App } from "vue";
+import axios from "axios";
+let config: object = {};
+
+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:
+ process.env.NODE_ENV === "production"
+ ? "/manages/serverConfig.json"
+ : "/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/elResizeDetector/index.ts b/src/directives/elResizeDetector/index.ts
new file mode 100644
index 0000000..be4c108
--- /dev/null
+++ b/src/directives/elResizeDetector/index.ts
@@ -0,0 +1,28 @@
+import { Directive } from "vue";
+import type { DirectiveBinding, 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..ca528d7
--- /dev/null
+++ b/src/directives/index.ts
@@ -0,0 +1,2 @@
+export * from "./permission";
+export * from "./elResizeDetector";
diff --git a/src/directives/permission/index.ts b/src/directives/permission/index.ts
new file mode 100644
index 0000000..649e8d0
--- /dev/null
+++ b/src/directives/permission/index.ts
@@ -0,0 +1,18 @@
+import { usePermissionStoreHook } from "/@/store/modules/permission";
+import { Directive } from "vue";
+import type { DirectiveBinding } from "vue";
+
+export const auth: Directive = {
+ mounted(el: HTMLElement, binding: DirectiveBinding) {
+ const { value } = binding;
+ if (value) {
+ const authRoles = value;
+ const hasAuth = usePermissionStoreHook().buttonAuth.includes(authRoles);
+ if (!hasAuth) {
+ el.style.display = "none";
+ }
+ } else {
+ throw new Error("need roles! Like v-auth=\"['admin','test']\"");
+ }
+ }
+};
diff --git a/src/layout/components/appMain.vue b/src/layout/components/appMain.vue
new file mode 100644
index 0000000..49c9d15
--- /dev/null
+++ b/src/layout/components/appMain.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/navbar.vue b/src/layout/components/navbar.vue
new file mode 100644
index 0000000..2e62bfe
--- /dev/null
+++ b/src/layout/components/navbar.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/panel/index.vue b/src/layout/components/panel/index.vue
new file mode 100644
index 0000000..c128cf9
--- /dev/null
+++ b/src/layout/components/panel/index.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/screenfull/index.vue b/src/layout/components/screenfull/index.vue
new file mode 100644
index 0000000..b3f1535
--- /dev/null
+++ b/src/layout/components/screenfull/index.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/setting/index.vue b/src/layout/components/setting/index.vue
new file mode 100644
index 0000000..834b5b8
--- /dev/null
+++ b/src/layout/components/setting/index.vue
@@ -0,0 +1,403 @@
+
+
+
+
+ 主题风格
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ 界面显示
+
+ -
+ 灰色模式
+
+
+ -
+ 色弱模式
+
+
+ -
+ 隐藏标签页
+
+
+ -
+ 侧边栏Logo
+
+
+
+ -
+ 标签风格
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/sidebar/breadCrumb.vue b/src/layout/components/sidebar/breadCrumb.vue
new file mode 100644
index 0000000..dbcd686
--- /dev/null
+++ b/src/layout/components/sidebar/breadCrumb.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+ {{ $t(item.meta.title) }}
+
+ {{ $t(item.meta.title) }}
+
+
+
+
+
+
+
diff --git a/src/layout/components/sidebar/hamBurger.vue b/src/layout/components/sidebar/hamBurger.vue
new file mode 100644
index 0000000..8e97718
--- /dev/null
+++ b/src/layout/components/sidebar/hamBurger.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/sidebar/horizontal.vue b/src/layout/components/sidebar/horizontal.vue
new file mode 100644
index 0000000..4d03b12
--- /dev/null
+++ b/src/layout/components/sidebar/horizontal.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
diff --git a/src/layout/components/sidebar/logo.vue b/src/layout/components/sidebar/logo.vue
new file mode 100644
index 0000000..f6a3a95
--- /dev/null
+++ b/src/layout/components/sidebar/logo.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/src/layout/components/sidebar/sidebarItem.vue b/src/layout/components/sidebar/sidebarItem.vue
new file mode 100644
index 0000000..ee2eb56
--- /dev/null
+++ b/src/layout/components/sidebar/sidebarItem.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+ {{ $t(onlyOneChild.meta.title) }}
+
+
+
+
+
+
+
+
+ {{ $t(props.item.meta.title) }}
+
+
+
+
+
diff --git a/src/layout/components/sidebar/vertical.vue b/src/layout/components/sidebar/vertical.vue
new file mode 100644
index 0000000..fda664d
--- /dev/null
+++ b/src/layout/components/sidebar/vertical.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/tag/index.vue b/src/layout/components/tag/index.vue
new file mode 100644
index 0000000..66a549b
--- /dev/null
+++ b/src/layout/components/tag/index.vue
@@ -0,0 +1,807 @@
+
+
+
+
+
+
+
diff --git a/src/layout/index.vue b/src/layout/index.vue
new file mode 100644
index 0000000..266fa08
--- /dev/null
+++ b/src/layout/index.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/types.ts b/src/layout/types.ts
new file mode 100644
index 0000000..3036a46
--- /dev/null
+++ b/src/layout/types.ts
@@ -0,0 +1,64 @@
+export type RouteConfigs = {
+ path?: string;
+ parentPath?: string;
+ meta?: {
+ title?: string;
+ icon?: string;
+ showLink?: boolean;
+ savedPosition?: boolean;
+ };
+};
+
+export type relativeStorageType = {
+ routesInStorage: Array;
+};
+
+export type tagsViewsType = {
+ icon: string;
+ text: string;
+ divided: boolean;
+ disabled: boolean;
+ show: boolean;
+};
+
+export interface setType {
+ sidebar: {
+ opened: boolean;
+ withoutAnimation: boolean;
+ };
+ device: string;
+ fixedHeader: boolean;
+ classes: {
+ hideSidebar: boolean;
+ openSidebar: boolean;
+ withoutAnimation: boolean;
+ mobile: boolean;
+ };
+}
+
+export const routerArrays: Array = [
+ {
+ path: "/welcome",
+ parentPath: "/",
+ meta: {
+ title: "message.hshome",
+ icon: "el-icon-s-home",
+ showLink: true
+ }
+ }
+];
+
+export type childrenType = {
+ path?: string;
+ noShowingChildren?: boolean;
+ children?: childrenType[];
+ value: unknown;
+ meta?: {
+ icon?: string;
+ title?: string;
+ extraIcon?: {
+ svg?: boolean;
+ name?: string;
+ };
+ };
+};
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..bf25cb3
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,31 @@
+import App from "./App.vue";
+import router from "./router";
+import { setupStore } from "/@/store";
+import { getServerConfig } from "./config";
+import { createApp, Directive } from "vue";
+import { usI18n } from "../src/plugins/i18n";
+import { useElementPlus } from "../src/plugins/element-plus";
+import { injectResponsiveStorage } from "/@/utils/storage/responsive";
+
+import "animate.css";
+// 导入公共样式
+import "./style/index.scss";
+// 导入字体图标
+import "./assets/iconfont/iconfont.js";
+import "./assets/iconfont/iconfont.css";
+
+const app = createApp(App);
+
+// 自定义指令
+import * as directives from "/@/directives";
+Object.keys(directives).forEach(key => {
+ app.directive(key, (directives as { [key: string]: Directive })[key]);
+});
+
+getServerConfig(app).then(async config => {
+ injectResponsiveStorage(app, config);
+ setupStore(app);
+ app.use(router).use(useElementPlus).use(usI18n);
+ await router.isReady();
+ app.mount("#app");
+});
diff --git a/src/mockProdServer.ts b/src/mockProdServer.ts
new file mode 100644
index 0000000..27235b0
--- /dev/null
+++ b/src/mockProdServer.ts
@@ -0,0 +1,8 @@
+import { createProdMockServer } from "vite-plugin-mock/es/createProdMockServer";
+import asyncRoutesMock from "../mock/asyncRoutes";
+
+export const mockModules = [...asyncRoutesMock];
+
+export function setupProdMockServer() {
+ createProdMockServer(mockModules);
+}
diff --git a/src/plugins/element-plus/index.ts b/src/plugins/element-plus/index.ts
new file mode 100644
index 0000000..9664a38
--- /dev/null
+++ b/src/plugins/element-plus/index.ts
@@ -0,0 +1,84 @@
+import { App, Component } from "vue";
+import {
+ ElTag,
+ ElAffix,
+ ElSkeleton,
+ ElBreadcrumb,
+ ElBreadcrumbItem,
+ ElScrollbar,
+ ElSubMenu,
+ ElButton,
+ ElCol,
+ ElRow,
+ ElSpace,
+ ElDivider,
+ ElCard,
+ ElDropdown,
+ ElDialog,
+ ElMenu,
+ ElMenuItem,
+ ElDropdownItem,
+ ElDropdownMenu,
+ ElIcon,
+ ElInput,
+ ElForm,
+ ElFormItem,
+ ElLoading,
+ ElPopover,
+ ElPopper,
+ ElTooltip,
+ ElDrawer,
+ ElPagination,
+ ElAlert,
+ ElRadioButton,
+ ElRadioGroup,
+ ElDescriptions,
+ ElDescriptionsItem
+} from "element-plus";
+
+const components = [
+ ElTag,
+ ElAffix,
+ ElSkeleton,
+ ElBreadcrumb,
+ ElBreadcrumbItem,
+ ElScrollbar,
+ ElSubMenu,
+ ElButton,
+ ElCol,
+ ElRow,
+ ElSpace,
+ ElDivider,
+ ElCard,
+ ElDropdown,
+ ElDialog,
+ ElMenu,
+ ElMenuItem,
+ ElDropdownItem,
+ ElDropdownMenu,
+ ElIcon,
+ ElInput,
+ ElForm,
+ ElFormItem,
+ ElPopover,
+ ElPopper,
+ ElTooltip,
+ ElDrawer,
+ ElPagination,
+ ElAlert,
+ ElRadioButton,
+ ElRadioGroup,
+ ElDescriptions,
+ ElDescriptionsItem
+];
+
+const plugins = [ElLoading];
+
+export function useElementPlus(app: App) {
+ components.forEach((component: Component) => {
+ app.component(component.name, component);
+ });
+ plugins.forEach(plugin => {
+ app.use(plugin);
+ });
+}
diff --git a/src/plugins/i18n/config.ts b/src/plugins/i18n/config.ts
new file mode 100644
index 0000000..293a917
--- /dev/null
+++ b/src/plugins/i18n/config.ts
@@ -0,0 +1,78 @@
+// element-plus国际化
+import enLocale from "element-plus/lib/locale/lang/en";
+import zhLocale from "element-plus/lib/locale/lang/zh-cn";
+
+// 导航菜单配置
+export const menusConfig = {
+ zh: {
+ message: {
+ hshome: "首页",
+ hserror: "错误页面",
+ hsfourZeroFour: "404",
+ hsfourZeroOne: "401"
+ }
+ },
+ en: {
+ message: {
+ hshome: "Home",
+ hserror: "Error Page",
+ hsfourZeroFour: "404",
+ hsfourZeroOne: "401"
+ }
+ }
+};
+
+// 按钮配置
+export const buttonConfig = {
+ zh: {
+ message: {
+ hsLoginOut: "退出系统",
+ hsfullscreen: "全屏",
+ hsexitfullscreen: "退出全屏",
+ hsrefreshRoute: "刷新路由",
+ hslogin: "登陆",
+ hsregister: "注册",
+ hsexpendAll: "全部展开",
+ hscollapseAll: "全部折叠",
+ hssystemSet: "系统设置",
+ hsreload: "重新加载",
+ hscloseCurrentTab: "关闭当前标签页",
+ hscloseLeftTabs: "关闭左侧标签页",
+ hscloseRightTabs: "关闭右侧标签页",
+ hscloseOtherTabs: "关闭其他标签页",
+ hscloseAllTabs: "关闭全部标签页"
+ }
+ },
+ en: {
+ message: {
+ hsLoginOut: "loginOut",
+ hsfullscreen: "fullScreen",
+ hsexitfullscreen: "exitFullscreen",
+ hsrefreshRoute: "refreshRoute",
+ hslogin: "login",
+ hsregister: "register",
+ hsexpendAll: "Expand All",
+ hscollapseAll: "Collapse All",
+ hssystemSet: "System Set",
+ hsreload: "Reload",
+ hscloseCurrentTab: "Close CurrentTab",
+ hscloseLeftTabs: "Close LeftTabs",
+ hscloseRightTabs: "Close RightTabs",
+ hscloseOtherTabs: "Close OtherTabs",
+ hscloseAllTabs: "Close AllTabs"
+ }
+ }
+};
+
+const localesList = [menusConfig, buttonConfig];
+
+export const localesConfigs = {
+ zh: {
+ message: Object.assign({}, ...localesList.map(v => v.zh.message)),
+ ...zhLocale
+ },
+ en: {
+ message: Object.assign({}, ...localesList.map(v => v.en.message)),
+ ...enLocale
+ }
+};
diff --git a/src/plugins/i18n/index.ts b/src/plugins/i18n/index.ts
new file mode 100644
index 0000000..7821b30
--- /dev/null
+++ b/src/plugins/i18n/index.ts
@@ -0,0 +1,14 @@
+import { App } from "vue";
+import { createI18n } from "vue-i18n";
+import { localesConfigs } from "./config";
+import { storageLocal } from "/@/utils/storage";
+
+export const i18n = createI18n({
+ locale: storageLocal.getItem("responsive-locale")?.locale ?? "zh",
+ fallbackLocale: "en",
+ messages: localesConfigs
+});
+
+export function usI18n(app: App) {
+ app.use(i18n);
+}
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..e3023fb
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,237 @@
+import {
+ Router,
+ createRouter,
+ RouteComponent,
+ createWebHashHistory,
+ RouteRecordNormalized
+} from "vue-router";
+import { split } from "lodash-es";
+import { i18n } from "/@/plugins/i18n";
+import { openLink } from "/@/utils/link";
+import NProgress from "/@/utils/progress";
+import { useTimeoutFn } from "@vueuse/core";
+import { storageSession, storageLocal } from "/@/utils/storage";
+import { usePermissionStoreHook } from "/@/store/modules/permission";
+
+// 静态路由
+import homeRouter from "./modules/home";
+import Layout from "/@/layout/index.vue";
+import errorRouter from "./modules/error";
+// 动态路由
+import { getAsyncRoutes } from "/@/api/routes";
+
+// https://cn.vitejs.dev/guide/features.html#glob-import
+const modulesRoutes = import.meta.glob("/src/views/*/*/*.vue");
+
+const constantRoutes: Array = [homeRouter, errorRouter];
+
+// 按照路由中meta下的rank等级升序来排序路由
+export const ascending = arr => {
+ return arr.sort((a: any, b: any) => {
+ return a?.meta?.rank - b?.meta?.rank;
+ });
+};
+
+// 将所有静态路由导出
+export const constantRoutesArr: Array =
+ ascending(constantRoutes);
+
+// 过滤meta中showLink为false的路由
+export const filterTree = data => {
+ const newTree = data.filter(v => v.meta.showLink);
+ newTree.forEach(v => v.children && (v.children = filterTree(v.children)));
+ return newTree;
+};
+
+// 从路由中提取keepAlive为true的name组成数组(此处本项目中并没有用到,只是暴露个方法)
+export const getAliveRoute = () => {
+ const alivePageList = [];
+ const recursiveSearch = treeLists => {
+ if (!treeLists || !treeLists.length) {
+ return;
+ }
+ for (let i = 0; i < treeLists.length; i++) {
+ if (treeLists[i]?.meta?.keepAlive) alivePageList.push(treeLists[i].name);
+ recursiveSearch(treeLists[i].children);
+ }
+ };
+ recursiveSearch(router.options.routes);
+ return alivePageList;
+};
+
+// 处理缓存路由(添加、删除、刷新)
+export const handleAliveRoute = (
+ matched: RouteRecordNormalized[],
+ mode?: string
+) => {
+ switch (mode) {
+ case "add":
+ matched.forEach(v => {
+ usePermissionStoreHook().cacheOperate({ mode: "add", name: v.name });
+ });
+ break;
+ case "delete":
+ usePermissionStoreHook().cacheOperate({
+ mode: "delete",
+ name: matched[matched.length - 1].name
+ });
+ break;
+ default:
+ usePermissionStoreHook().cacheOperate({
+ mode: "delete",
+ name: matched[matched.length - 1].name
+ });
+ useTimeoutFn(() => {
+ matched.forEach(v => {
+ usePermissionStoreHook().cacheOperate({ mode: "add", name: v.name });
+ });
+ }, 100);
+ }
+};
+
+// 过滤后端传来的动态路由 重新生成规范路由
+export const addAsyncRoutes = (arrRoutes: Array) => {
+ if (!arrRoutes || !arrRoutes.length) return;
+ arrRoutes.forEach((v: any) => {
+ if (v.redirect) {
+ v.component = Layout;
+ } else {
+ v.component = modulesRoutes[`/src/views${v.path}/index.vue`];
+ }
+ if (v.children) {
+ addAsyncRoutes(v.children);
+ }
+ });
+ return arrRoutes;
+};
+
+// 创建路由实例
+export const router: Router = createRouter({
+ history: createWebHashHistory(),
+ routes: filterTree(ascending(constantRoutes)).concat(...remainingRouter),
+ scrollBehavior(to, from, savedPosition) {
+ return new Promise(resolve => {
+ if (savedPosition) {
+ return savedPosition;
+ } else {
+ if (from.meta.saveSrollTop) {
+ const top: number =
+ document.documentElement.scrollTop || document.body.scrollTop;
+ resolve({ left: 0, top });
+ }
+ }
+ });
+ }
+});
+
+// 初始化路由
+export const initRouter = name => {
+ return new Promise(resolve => {
+ getAsyncRoutes({ name }).then(({ info }) => {
+ if (info.length === 0) {
+ usePermissionStoreHook().changeSetting(info);
+ } else {
+ addAsyncRoutes(info).map((v: any) => {
+ // 防止重复添加路由
+ if (
+ router.options.routes.findIndex(value => value.path === v.path) !==
+ -1
+ ) {
+ return;
+ } else {
+ // 切记将路由push到routes后还需要使用addRoute,这样路由才能正常跳转
+ router.options.routes.push(v);
+ // 最终路由进行升序
+ ascending(router.options.routes);
+ router.addRoute(v.name, v);
+ usePermissionStoreHook().changeSetting(info);
+ }
+ resolve(router);
+ });
+ }
+ router.addRoute({
+ path: "/:pathMatch(.*)",
+ redirect: "/error/404"
+ });
+ });
+ });
+};
+
+// 重置路由
+export function resetRouter() {
+ router.getRoutes().forEach(route => {
+ const { name } = route;
+ if (name) {
+ router.hasRoute(name) && router.removeRoute(name);
+ }
+ });
+}
+
+// 路由白名单
+const whiteList = ["/login", "/register"];
+
+router.beforeEach((to, _from, next) => {
+ if (to.meta?.keepAlive) {
+ const newMatched = to.matched;
+ handleAliveRoute(newMatched, "add");
+ // 页面整体刷新和点击标签页刷新
+ if (_from.name === undefined || _from.name === "redirect") {
+ handleAliveRoute(newMatched);
+ }
+ }
+ const name = storageSession.getItem("info");
+ NProgress.start();
+ const externalLink = to?.redirectedFrom?.fullPath;
+ // @ts-ignore
+ const { t } = i18n.global;
+ // @ts-ignore
+ if (!externalLink) to.meta.title ? (document.title = t(to.meta.title)) : "";
+ if (name) {
+ if (_from?.name) {
+ // 如果路由包含http 则是超链接 反之是普通路由
+ if (externalLink && externalLink.includes("http")) {
+ openLink(`http${split(externalLink, "http")[1]}`);
+ NProgress.done();
+ } else {
+ next();
+ }
+ } else {
+ // 刷新
+ if (usePermissionStoreHook().wholeRoutes.length === 0)
+ initRouter(name.username).then((router: Router) => {
+ router.push(to.path);
+ // 刷新页面更新标签栏与页面路由匹配
+ const localRoutes = storageLocal.getItem(
+ "responsive-routesInStorage"
+ );
+ const optionsRoutes = router.options?.routes;
+ const newLocalRoutes = [];
+ optionsRoutes.forEach(ors => {
+ localRoutes.forEach(lrs => {
+ if (ors.path === lrs.parentPath) {
+ newLocalRoutes.push(lrs);
+ }
+ });
+ });
+ storageLocal.setItem("responsive-routesInStorage", newLocalRoutes);
+ });
+ next();
+ }
+ } else {
+ if (to.path !== "/login") {
+ if (whiteList.indexOf(to.path) !== -1) {
+ next();
+ } else {
+ next({ path: "/login" });
+ }
+ } else {
+ next();
+ }
+ }
+});
+
+router.afterEach(() => {
+ NProgress.done();
+});
+
+export default router;
diff --git a/src/router/modules/error.ts b/src/router/modules/error.ts
new file mode 100644
index 0000000..5ab2e43
--- /dev/null
+++ b/src/router/modules/error.ts
@@ -0,0 +1,36 @@
+import Layout from "/@/layout/index.vue";
+
+const errorRouter = {
+ path: "/error",
+ name: "error",
+ component: Layout,
+ redirect: "/error/401",
+ meta: {
+ icon: "el-icon-position",
+ title: "message.hserror",
+ showLink: true,
+ rank: 7
+ },
+ children: [
+ {
+ path: "/error/401",
+ name: "401",
+ component: () => import("/@/views/error/401.vue"),
+ meta: {
+ title: "message.hsfourZeroOne",
+ showLink: true
+ }
+ },
+ {
+ path: "/error/404",
+ name: "404",
+ component: () => import("/@/views/error/404.vue"),
+ meta: {
+ title: "message.hsfourZeroFour",
+ showLink: true
+ }
+ }
+ ]
+};
+
+export default errorRouter;
diff --git a/src/router/modules/home.ts b/src/router/modules/home.ts
new file mode 100644
index 0000000..6308ed4
--- /dev/null
+++ b/src/router/modules/home.ts
@@ -0,0 +1,26 @@
+import Layout from "/@/layout/index.vue";
+
+const homeRouter = {
+ path: "/",
+ name: "home",
+ component: Layout,
+ redirect: "/welcome",
+ meta: {
+ icon: "el-icon-s-home",
+ showLink: true,
+ rank: 0
+ },
+ children: [
+ {
+ path: "/welcome",
+ name: "welcome",
+ component: () => import("/@/views/welcome.vue"),
+ meta: {
+ title: "message.hshome",
+ showLink: true
+ }
+ }
+ ]
+};
+
+export default homeRouter;
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
new file mode 100644
index 0000000..5af3e1c
--- /dev/null
+++ b/src/router/modules/remaining.ts
@@ -0,0 +1,44 @@
+import Layout from "/@/layout/index.vue";
+
+const remainingRouter = [
+ {
+ path: "/login",
+ name: "login",
+ component: () => import("/@/views/login.vue"),
+ meta: {
+ title: "message.hslogin",
+ showLink: false,
+ rank: 101
+ }
+ },
+ {
+ path: "/register",
+ name: "register",
+ component: () => import("/@/views/register.vue"),
+ meta: {
+ title: "message.hsregister",
+ showLink: false,
+ rank: 102
+ }
+ },
+ {
+ path: "/redirect",
+ name: "redirect",
+ component: Layout,
+ meta: {
+ icon: "el-icon-s-home",
+ title: "message.hshome",
+ showLink: false,
+ rank: 104
+ },
+ children: [
+ {
+ path: "/redirect/:path(.*)",
+ name: "redirect",
+ component: () => import("/@/views/redirect.vue")
+ }
+ ]
+ }
+];
+
+export default remainingRouter;
diff --git a/src/store/index.ts b/src/store/index.ts
new file mode 100644
index 0000000..a8dc752
--- /dev/null
+++ b/src/store/index.ts
@@ -0,0 +1,9 @@
+import type { App } from "vue";
+import { createPinia } from "pinia";
+const store = createPinia();
+
+export function setupStore(app: App) {
+ app.use(store);
+}
+
+export { store };
diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts
new file mode 100644
index 0000000..625f37f
--- /dev/null
+++ b/src/store/modules/app.ts
@@ -0,0 +1,72 @@
+import { storageLocal } from "/@/utils/storage";
+import { deviceDetection } from "/@/utils/deviceDetection";
+import { defineStore } from "pinia";
+import { store } from "/@/store";
+
+interface AppState {
+ sidebar: {
+ opened: boolean;
+ withoutAnimation: boolean;
+ };
+ layout: string;
+ device: string;
+}
+
+export const useAppStore = defineStore({
+ id: "pure-app",
+ state: (): AppState => ({
+ sidebar: {
+ opened: storageLocal.getItem("sidebarStatus")
+ ? !!+storageLocal.getItem("sidebarStatus")
+ : true,
+ withoutAnimation: false
+ },
+ layout:
+ storageLocal.getItem("responsive-layout")?.layout.match(/(.*)-/)[1] ??
+ "vertical",
+ device: deviceDetection() ? "mobile" : "desktop"
+ }),
+ getters: {
+ getSidebarStatus() {
+ return this.sidebar.opened;
+ },
+ getDevice() {
+ return this.device;
+ }
+ },
+ actions: {
+ TOGGLE_SIDEBAR() {
+ this.sidebar.opened = !this.sidebar.opened;
+ this.sidebar.withoutAnimation = false;
+ if (this.sidebar.opened) {
+ storageLocal.setItem("sidebarStatus", 1);
+ } else {
+ storageLocal.setItem("sidebarStatus", 0);
+ }
+ },
+ CLOSE_SIDEBAR(withoutAnimation: boolean) {
+ storageLocal.setItem("sidebarStatus", 0);
+ this.sidebar.opened = false;
+ this.sidebar.withoutAnimation = withoutAnimation;
+ },
+ TOGGLE_DEVICE(device: string) {
+ this.device = device;
+ },
+ async toggleSideBar() {
+ await this.TOGGLE_SIDEBAR();
+ },
+ closeSideBar(withoutAnimation) {
+ this.CLOSE_SIDEBAR(withoutAnimation);
+ },
+ toggleDevice(device) {
+ this.TOGGLE_DEVICE(device);
+ },
+ setLayout(layout) {
+ this.layout = layout;
+ }
+ }
+});
+
+export function useAppStoreHook() {
+ return useAppStore(store);
+}
diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
new file mode 100644
index 0000000..a75424c
--- /dev/null
+++ b/src/store/modules/permission.ts
@@ -0,0 +1,62 @@
+import { defineStore } from "pinia";
+import { store } from "/@/store";
+import { cacheType } from "./types";
+import { constantRoutesArr, ascending, filterTree } from "/@/router/index";
+
+export const usePermissionStore = defineStore({
+ id: "pure-permission",
+ state: () => ({
+ // 静态路由
+ constantRoutes: constantRoutesArr,
+ wholeRoutes: [],
+ buttonAuth: [],
+ // 缓存页面keepAlive
+ cachePageList: []
+ }),
+ actions: {
+ asyncActionRoutes(routes) {
+ if (this.wholeRoutes.length > 0) return;
+ this.wholeRoutes = filterTree(
+ ascending(this.constantRoutes.concat(routes))
+ );
+
+ const getButtonAuth = (arrRoutes: Array) => {
+ if (!arrRoutes || !arrRoutes.length) return;
+ arrRoutes.forEach((v: any) => {
+ if (v.meta && v.meta.authority) {
+ this.buttonAuth.push(...v.meta.authority);
+ }
+ if (v.children) {
+ getButtonAuth(v.children);
+ }
+ });
+ };
+
+ getButtonAuth(this.wholeRoutes);
+ },
+ async changeSetting(routes) {
+ await this.asyncActionRoutes(routes);
+ },
+ cacheOperate({ mode, name }: cacheType) {
+ switch (mode) {
+ case "add":
+ this.cachePageList.push(name);
+ this.cachePageList = [...new Set(this.cachePageList)];
+ break;
+ case "delete":
+ // eslint-disable-next-line no-case-declarations
+ const delIndex = this.cachePageList.findIndex(v => v === name);
+ this.cachePageList.splice(delIndex, 1);
+ break;
+ }
+ },
+ // 清空缓存页面
+ clearAllCachePage() {
+ this.cachePageList = [];
+ }
+ }
+});
+
+export function usePermissionStoreHook() {
+ return usePermissionStore(store);
+}
diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts
new file mode 100644
index 0000000..2b1fad1
--- /dev/null
+++ b/src/store/modules/settings.ts
@@ -0,0 +1,39 @@
+import { defineStore } from "pinia";
+import { store } from "/@/store";
+import { getConfig } from "/@/config";
+
+interface SettingState {
+ title: string;
+ fixedHeader: boolean;
+}
+
+export const useSettingStore = defineStore({
+ id: "pure-setting",
+ state: (): SettingState => ({
+ title: getConfig().Title,
+ fixedHeader: getConfig().FixedHeader
+ }),
+ getters: {
+ getTitle() {
+ return this.title;
+ },
+ getFixedHeader() {
+ return this.fixedHeader;
+ }
+ },
+ actions: {
+ CHANGE_SETTING({ key, value }) {
+ // eslint-disable-next-line no-prototype-builtins
+ if (this.hasOwnProperty(key)) {
+ this[key] = value;
+ }
+ },
+ changeSetting(data) {
+ this.CHANGE_SETTING(data);
+ }
+ }
+});
+
+export function useSettingStoreHook() {
+ return useSettingStore(store);
+}
diff --git a/src/store/modules/types.ts b/src/store/modules/types.ts
new file mode 100644
index 0000000..2babafb
--- /dev/null
+++ b/src/store/modules/types.ts
@@ -0,0 +1,6 @@
+import { RouteRecordName } from "vue-router";
+
+export type cacheType = {
+ mode: string;
+ name?: RouteRecordName;
+};
diff --git a/src/style/element-ui.scss b/src/style/element-ui.scss
new file mode 100644
index 0000000..ecca914
--- /dev/null
+++ b/src/style/element-ui.scss
@@ -0,0 +1,54 @@
+// cover some element-plus styles
+
+.el-breadcrumb__inner,
+.el-breadcrumb__inner a {
+ font-weight: 400 !important;
+}
+
+.el-upload {
+ input[type="file"] {
+ display: none !important;
+ }
+}
+
+.el-upload__input {
+ display: none;
+}
+
+.el-dialog {
+ transform: none;
+ left: 0;
+ position: relative;
+ margin: 0 auto;
+}
+
+// refine element ui upload
+.upload-container {
+ .el-upload {
+ width: 100%;
+
+ .el-upload-dragger {
+ width: 100%;
+ height: 200px;
+ }
+ }
+}
+
+// dropdown
+.el-dropdown-menu {
+ padding: 2px 0 2px 0 !important;
+}
+
+// to fix el-date-picker css style
+.el-range-separator {
+ box-sizing: content-box;
+}
+
+.el-loading-mask {
+ z-index: -1;
+}
+
+// el-tooltip的权重
+.is-dark {
+ z-index: 99999 !important;
+}
diff --git a/src/style/index.scss b/src/style/index.scss
new file mode 100644
index 0000000..6cde2c1
--- /dev/null
+++ b/src/style/index.scss
@@ -0,0 +1,111 @@
+@import "./mixin.scss";
+@import "./transition.scss";
+@import "./element-ui.scss";
+@import "./sidebar.scss";
+
+body {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
+ Microsoft YaHei, Arial, sans-serif;
+}
+
+html {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+}
+
+label {
+ font-weight: 700;
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: inherit;
+}
+
+a:focus,
+a:active {
+ outline: none;
+}
+
+a,
+a:focus,
+a:hover {
+ cursor: pointer;
+ color: inherit;
+ text-decoration: none;
+}
+
+div:focus {
+ outline: none;
+}
+
+ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.clearfix {
+ &::after {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+}
+
+// main-container global css
+.app-container {
+ padding: 20px;
+}
+
+.login,
+.register {
+ width: 100vw;
+ height: 100vh;
+ overflow-x: hidden;
+ background: url("../assets/bg.png") no-repeat center;
+ background-size: cover;
+}
+
+/* 头部用户信息样式重置 */
+.hidden {
+ display: none !important;
+}
+
+// 灰色模式
+.html-grey {
+ filter: grayscale(100%);
+ -webkit-filter: grayscale(100%);
+ -moz-filter: grayscale(100%);
+ -ms-filter: grayscale(100%);
+ -o-filter: grayscale(100%);
+}
+
+// 色弱模式
+.html-weakness {
+ filter: invert(80%);
+ -webkit-filter: invert(80%);
+ -moz-filter: invert(80%);
+ -ms-filter: invert(80%);
+ -o-filter: invert(80%);
+}
+
+.pc-spacing {
+ margin: 10px;
+}
+
+.mobile-spacing {
+ margin: 0;
+}
diff --git a/src/style/mixin.scss b/src/style/mixin.scss
new file mode 100644
index 0000000..7ac90e9
--- /dev/null
+++ b/src/style/mixin.scss
@@ -0,0 +1,28 @@
+@mixin clearfix {
+ &::after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
+
+@mixin scrollBar {
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+}
+
+@mixin relative {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
diff --git a/src/style/sidebar.scss b/src/style/sidebar.scss
new file mode 100644
index 0000000..79fb078
--- /dev/null
+++ b/src/style/sidebar.scss
@@ -0,0 +1,563 @@
+@mixin merge-style(
+ // 菜单选中后字体样式
+ $subMenuActiveText,
+ //菜单背景
+ $menuBg,
+ // 鼠标覆盖菜单时的背景
+ $menuHover,
+ // 子菜单背景
+ $subMenuBg,
+ // 鼠标覆盖子菜单时的背景
+ $subMenuHover,
+ // vertical模式下主体内容距离网页文档左侧的距离
+ $sideBarWidth,
+ $navTextColor
+) {
+ $menuText: #7a80b4;
+ $menuActiveText: #7a80b4;
+
+ .main-container {
+ min-height: 100%;
+ transition: margin-left 0.28s;
+ margin-left: $sideBarWidth;
+ position: relative;
+ }
+
+ .el-popper.is-light {
+ border: none !important;
+ }
+
+ .sidebar-container {
+ transition: width 0.28s;
+ width: $sideBarWidth;
+ background-color: $menuBg;
+ height: 100%;
+ position: fixed;
+ font-size: 0;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1001;
+ overflow: hidden;
+ box-shadow: 0 0 1px #888;
+
+ .scrollbar-wrapper {
+ overflow-x: hidden !important;
+ }
+
+ .horizontal-collapse-transition {
+ transition: 0s width ease-in-out, 0s padding-left ease-in-out,
+ 0s padding-right ease-in-out;
+ }
+
+ .el-scrollbar__bar.is-vertical {
+ right: 0;
+ }
+
+ .el-scrollbar {
+ height: 100%;
+ }
+
+ &.has-logo {
+ .el-scrollbar {
+ height: calc(100% - 50px);
+ }
+ }
+
+ .is-horizontal {
+ display: none;
+ }
+
+ a {
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ }
+
+ .el-menu {
+ border: none;
+ height: 100%;
+ background-color: transparent !important;
+ }
+
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: $menuText;
+ }
+
+ // menu hover
+ .submenu-title-noDropdown,
+ .el-sub-menu__title {
+ // background: $menuBg;
+
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+
+ .is-active > .el-sub-menu__title,
+ .is-active.submenu-title-noDropdown {
+ color: $subMenuActiveText !important;
+
+ i {
+ color: $subMenuActiveText !important;
+ }
+ }
+
+ .is-active {
+ transition: color 0.3s;
+ color: $subMenuActiveText !important;
+ }
+
+ .el-menu .el-menu--inline .el-sub-menu__title,
+ & .el-sub-menu .el-menu-item {
+ font-size: 12px;
+ min-width: $sideBarWidth !important;
+ background-color: $subMenuBg !important;
+
+ &:hover {
+ background-color: $subMenuHover !important;
+ }
+ }
+ }
+
+ .horizontal-header {
+ display: flex;
+ justify-content: space-around;
+ background-color: $menuBg;
+ width: 100%;
+ height: 62px;
+ align-items: center;
+
+ .horizontal-header-left {
+ display: flex;
+ height: 100%;
+ width: auto;
+ min-width: 200px;
+ align-items: center;
+ padding-left: 10px;
+ cursor: pointer;
+ transition: all 0.2s ease;
+
+ &:hover {
+ background: $menuHover;
+ }
+
+ i {
+ font-size: 30px;
+ color: #1890ff;
+ margin-right: 4px;
+ }
+
+ h4 {
+ font-size: 16px;
+ font-weight: 700;
+ color: $navTextColor;
+ transition: all 0.5s;
+ }
+ }
+
+ .horizontal-header-menu {
+ height: 100%;
+ min-width: 0;
+ flex: 1;
+ align-items: center;
+ }
+
+ .horizontal-header-right {
+ display: flex;
+ min-width: 280px;
+ align-items: center;
+ color: $navTextColor;
+ justify-content: flex-end;
+
+ .screen-full {
+ cursor: pointer;
+
+ &:hover {
+ background: $menuHover;
+ }
+ }
+
+ .globalization {
+ height: 62px;
+ width: 40px;
+ padding: 11px;
+ cursor: pointer;
+ color: $navTextColor;
+
+ &:hover {
+ background: $menuHover;
+ }
+ }
+
+ .el-dropdown-link {
+ width: 100px;
+ height: 62px;
+ padding: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ cursor: pointer;
+ color: $navTextColor;
+
+ &:hover {
+ background: $menuHover;
+ }
+
+ p {
+ font-size: 14px;
+ }
+
+ img {
+ width: 22px;
+ height: 22px;
+ border-radius: 50%;
+ }
+ }
+
+ .el-icon-setting {
+ height: 62px;
+ width: 40px;
+ padding: 11px;
+ display: flex;
+ cursor: pointer;
+ align-items: center;
+
+ &:hover {
+ background: $menuHover;
+ }
+ }
+ }
+
+ .el-menu {
+ border: none;
+ height: 100%;
+ background-color: transparent;
+ width: 100% !important;
+ }
+
+ .el-menu-item,
+ .el-sub-menu__title {
+ color: $menuText;
+ }
+
+ .submenu-title-noDropdown,
+ .el-sub-menu__title {
+ height: 60px;
+ background: $menuBg;
+
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+
+ .is-active > .el-sub-menu__title,
+ .is-active.submenu-title-noDropdown {
+ color: $subMenuActiveText !important;
+ border-bottom-color: #409eff;
+
+ i {
+ color: $subMenuActiveText !important;
+ }
+ }
+
+ .is-active {
+ transition: color 0.3s;
+ color: $subMenuActiveText !important;
+ border-bottom-color: #409eff;
+ }
+ }
+
+ // vertical菜单折叠
+ .el-menu--vertical {
+ .el-menu--popup {
+ background-color: $subMenuBg !important;
+
+ .el-menu-item {
+ color: $menuText;
+ background-color: $subMenuBg;
+
+ &:hover {
+ background-color: $subMenuHover;
+ }
+ }
+
+ .el-sub-menu__title {
+ color: $menuText;
+ }
+ }
+
+ & > .el-menu {
+ i {
+ margin-right: 16px;
+ }
+ }
+
+ .is-active > .el-sub-menu__title,
+ .is-active.submenu-title-noDropdown {
+ color: $subMenuActiveText !important;
+
+ i {
+ color: $subMenuActiveText !important;
+ }
+ }
+
+ // 子菜单中还有子菜单
+ .el-menu .el-sub-menu__title {
+ font-size: 12px;
+ min-width: $sideBarWidth !important;
+ background-color: $subMenuBg !important;
+
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+
+ .is-active {
+ transition: color 0.3s;
+ color: $subMenuActiveText !important;
+ }
+
+ .nest-menu .el-sub-menu > .el-sub-menu__title,
+ .el-menu-item {
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+ }
+
+ // horizontal菜单折叠
+ .el-menu--horizontal {
+ .el-menu--popup {
+ background-color: $subMenuBg !important;
+
+ .el-menu-item {
+ color: $menuText;
+ background-color: $subMenuBg;
+
+ &:hover {
+ background-color: $subMenuHover;
+ }
+ }
+
+ .el-sub-menu__title {
+ color: $menuText;
+ }
+ }
+
+ // 无子菜单时激活border-bottom
+ .router-link-exact-active > .submenu-title-noDropdown {
+ height: 60px;
+ border-bottom: 2px solid var(--el-menu-active-color);
+ }
+
+ // 子菜单中还有子菜单
+ .el-menu .el-sub-menu__title {
+ font-size: 12px;
+ min-width: $sideBarWidth !important;
+ background-color: $subMenuBg !important;
+
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+
+ & > .el-menu {
+ i {
+ margin-right: 16px;
+ }
+ }
+
+ .is-active > .el-sub-menu__title,
+ .is-active.submenu-title-noDropdown {
+ color: $subMenuActiveText !important;
+
+ i {
+ color: $subMenuActiveText !important;
+ }
+ }
+
+ .is-active {
+ transition: color 0.3s;
+ color: $subMenuActiveText !important;
+ }
+
+ .nest-menu .el-sub-menu > .el-sub-menu__title,
+ .el-menu-item {
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+ }
+
+ .el-scrollbar__wrap {
+ overflow: auto;
+ height: 100%;
+ }
+
+ .el-menu--collapse .el-menu .el-sub-menu {
+ min-width: $sideBarWidth !important;
+ }
+
+ // 手机端
+ .mobile {
+ .main-container {
+ margin-left: 0 !important;
+ }
+
+ .sidebar-container {
+ transition: transform 0.28s;
+ width: $sideBarWidth !important;
+ }
+
+ &.hideSidebar {
+ .sidebar-container {
+ pointer-events: none;
+ transition-duration: 0.3s;
+ transform: translate3d(-$sideBarWidth, 0, 0);
+ }
+ }
+ }
+
+ .withoutAnimation {
+ .main-container,
+ .sidebar-container {
+ transition: none;
+ }
+ }
+}
+
+body[data-layout="vertical"] {
+ .hideSidebar {
+ .fixed-header {
+ width: calc(100% - 54px);
+ }
+
+ .sidebar-container {
+ width: 54px !important;
+ }
+
+ .main-container {
+ margin-left: 54px !important;
+ }
+
+ .submenu-title-noDropdown {
+ padding: 0 !important;
+ position: relative;
+
+ .el-tooltip {
+ padding: 0 !important;
+ }
+ }
+
+ .el-sub-menu {
+ overflow: hidden;
+
+ & > .el-sub-menu__title {
+ .el-sub-menu__icon-arrow {
+ display: none;
+ }
+ }
+ }
+
+ .el-menu--collapse {
+ margin-left: -5px; //需优化的地方
+ .el-sub-menu {
+ & > .el-sub-menu__title {
+ & > span {
+ height: 0;
+ width: 0;
+ overflow: hidden;
+ visibility: hidden;
+ display: inline-block;
+ }
+ }
+ }
+ }
+ }
+}
+
+// vertical模式下暗色主题
+body[data-layout="vertical"][data-theme="dark"] {
+ $subMenuActiveText: #f4f4f5;
+ $menuBg: #1b2a47;
+ $menuHover: #2a395b;
+ $subMenuBg: #1f2d3d;
+ $subMenuHover: #001528;
+ $sideBarWidth: 210px;
+ $navTextColor: #fff;
+
+ @include merge-style(
+ $subMenuActiveText,
+ $menuBg,
+ $menuHover,
+ $subMenuBg,
+ $subMenuHover,
+ $sideBarWidth,
+ $navTextColor
+ );
+}
+
+// vertical模式下亮色主题
+body[data-layout="vertical"][data-theme="light"] {
+ $subMenuActiveText: #409eff;
+ $menuBg: #fff;
+ $menuHover: #e0ebf6;
+ $subMenuBg: #fff;
+ $subMenuHover: #e0ebf6;
+ $sideBarWidth: 210px;
+ $navTextColor: #7a80b4;
+
+ @include merge-style(
+ $subMenuActiveText,
+ $menuBg,
+ $menuHover,
+ $subMenuBg,
+ $subMenuHover,
+ $sideBarWidth,
+ $navTextColor
+ );
+}
+
+// horizontal模式下暗色主题
+body[data-layout="horizontal"][data-theme="dark"] {
+ $subMenuActiveText: #f4f4f5;
+ $menuBg: #1b2a47;
+ $menuHover: #2a395b;
+ $subMenuBg: #1f2d3d;
+ $subMenuHover: #001528;
+ $sideBarWidth: 0;
+ $navTextColor: #fff;
+
+ @include merge-style(
+ $subMenuActiveText,
+ $menuBg,
+ $menuHover,
+ $subMenuBg,
+ $subMenuHover,
+ $sideBarWidth,
+ $navTextColor
+ );
+}
+
+// horizontal模式下亮色主题
+body[data-layout="horizontal"][data-theme="light"] {
+ $subMenuActiveText: #409eff;
+ $menuBg: #fff;
+ $menuHover: #e0ebf6;
+ $subMenuBg: #fff;
+ $subMenuHover: #e0ebf6;
+ $sideBarWidth: 0;
+ $navTextColor: #7a80b4;
+
+ @include merge-style(
+ $subMenuActiveText,
+ $menuBg,
+ $menuHover,
+ $subMenuBg,
+ $subMenuHover,
+ $sideBarWidth,
+ $navTextColor
+ );
+}
diff --git a/src/style/transition.scss b/src/style/transition.scss
new file mode 100644
index 0000000..b529f82
--- /dev/null
+++ b/src/style/transition.scss
@@ -0,0 +1,44 @@
+// global transition css
+
+/* fade */
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 0.28s;
+}
+
+.fade-enter,
+.fade-leave-active {
+ opacity: 0;
+}
+
+/* fade-transform */
+.fade-transform-leave-active,
+.fade-transform-enter-active {
+ transition: all 0.5s;
+}
+
+.fade-transform-enter-from {
+ opacity: 0;
+ transform: translateX(-30px);
+}
+
+.fade-transform-leave-to {
+ opacity: 0;
+ transform: translateX(30px);
+}
+
+/* breadcrumb transition */
+.breadcrumb-enter-active,
+.breadcrumb-leave-active {
+ transition: all 0.5s;
+}
+
+.breadcrumb-enter-from,
+.breadcrumb-leave-active {
+ opacity: 0;
+ transform: translateX(20px);
+}
+
+.breadcrumb-leave-active {
+ position: absolute;
+}
diff --git a/src/utils/algorithm/index.ts b/src/utils/algorithm/index.ts
new file mode 100644
index 0000000..66db5e9
--- /dev/null
+++ b/src/utils/algorithm/index.ts
@@ -0,0 +1,21 @@
+interface ProxyAlgorithm {
+ increaseIndexes(val: Array): Array;
+}
+
+class algorithmProxy implements ProxyAlgorithm {
+ constructor() {}
+
+ // 数组每一项添加索引字段
+ public increaseIndexes(val: Array): Array {
+ return Object.keys(val)
+ .map(v => {
+ return {
+ ...val[v],
+ key: v
+ };
+ })
+ .filter(v => v.meta && v.meta.showLink);
+ }
+}
+
+export const algorithm = new algorithmProxy();
diff --git a/src/utils/debounce/index.ts b/src/utils/debounce/index.ts
new file mode 100644
index 0000000..acca614
--- /dev/null
+++ b/src/utils/debounce/index.ts
@@ -0,0 +1,12 @@
+// 延迟函数
+export const delay = (timeout: number) =>
+ new Promise(resolve => setTimeout(resolve, timeout));
+
+// 防抖函数
+export const debounce = (fn: () => Fn, timeout: number) => {
+ let timmer: TimeoutHandle;
+ return () => {
+ timmer ? clearTimeout(timmer) : null;
+ timmer = setTimeout(fn, timeout);
+ };
+};
diff --git a/src/utils/deviceDetection/index.ts b/src/utils/deviceDetection/index.ts
new file mode 100644
index 0000000..4db22d0
--- /dev/null
+++ b/src/utils/deviceDetection/index.ts
@@ -0,0 +1,37 @@
+interface deviceInter {
+ match: Fn;
+}
+
+interface BrowserInter {
+ browser: string;
+ version: string;
+}
+
+// 检测设备类型(手机返回true,反之)
+export const deviceDetection = () => {
+ const sUserAgent: deviceInter = navigator.userAgent.toLowerCase();
+ // const bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
+ const bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
+ const bIsMidp = sUserAgent.match(/midp/i) == "midp";
+ const bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
+ const bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
+ const bIsAndroid = sUserAgent.match(/android/i) == "android";
+ const bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
+ const bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
+ return (
+ bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM
+ );
+};
+
+// 获取浏览器型号以及版本
+export const getBrowserInfo = () => {
+ const ua = navigator.userAgent.toLowerCase();
+ const re = /(msie|firefox|chrome|opera|version).*?([\d.]+)/;
+ const m = ua.match(re);
+ const Sys: BrowserInter = {
+ browser: m[1].replace(/version/, "'safari"),
+ version: m[2]
+ };
+
+ return Sys;
+};
diff --git a/src/utils/http/config.ts b/src/utils/http/config.ts
new file mode 100644
index 0000000..a4c3845
--- /dev/null
+++ b/src/utils/http/config.ts
@@ -0,0 +1,32 @@
+import { AxiosRequestConfig } from "axios";
+import { excludeProps } from "./utils";
+/**
+ * 默认配置
+ */
+export const defaultConfig: AxiosRequestConfig = {
+ baseURL: "",
+ //10秒超时
+ timeout: 10000,
+ headers: {
+ Accept: "application/json, text/plain, */*",
+ "Content-Type": "application/json",
+ "X-Requested-With": "XMLHttpRequest"
+ }
+};
+
+export function genConfig(config?: AxiosRequestConfig): AxiosRequestConfig {
+ if (!config) {
+ return defaultConfig;
+ }
+
+ const { headers } = config;
+ if (headers && typeof headers === "object") {
+ defaultConfig.headers = {
+ ...defaultConfig.headers,
+ ...headers
+ };
+ }
+ return { ...excludeProps(config!, "headers"), ...defaultConfig };
+}
+
+export const METHODS = ["post", "get", "put", "delete", "option", "patch"];
diff --git a/src/utils/http/core.ts b/src/utils/http/core.ts
new file mode 100644
index 0000000..86d7571
--- /dev/null
+++ b/src/utils/http/core.ts
@@ -0,0 +1,248 @@
+import Axios, {
+ AxiosRequestConfig,
+ CancelTokenStatic,
+ AxiosInstance
+} from "axios";
+
+import NProgress from "../progress";
+
+import { genConfig } from "./config";
+
+import { transformConfigByMethod } from "./utils";
+
+import {
+ cancelTokenType,
+ RequestMethods,
+ EnclosureHttpRequestConfig,
+ EnclosureHttpResoponse,
+ EnclosureHttpError
+} from "./types.d";
+
+class EnclosureHttp {
+ constructor() {
+ this.httpInterceptorsRequest();
+ this.httpInterceptorsResponse();
+ }
+ // 初始化配置对象
+ private static initConfig: EnclosureHttpRequestConfig = {};
+
+ // 保存当前Axios实例对象
+ private static axiosInstance: AxiosInstance = Axios.create(genConfig());
+
+ // 保存 EnclosureHttp实例
+ private static EnclosureHttpInstance: EnclosureHttp;
+
+ // axios取消对象
+ private CancelToken: CancelTokenStatic = Axios.CancelToken;
+
+ // 取消的凭证数组
+ private sourceTokenList: Array = [];
+
+ // 记录当前这一次cancelToken的key
+ private currentCancelTokenKey = "";
+
+ private beforeRequestCallback: EnclosureHttpRequestConfig["beforeRequestCallback"] =
+ undefined;
+
+ private beforeResponseCallback: EnclosureHttpRequestConfig["beforeResponseCallback"] =
+ undefined;
+
+ public get cancelTokenList(): Array {
+ return this.sourceTokenList;
+ }
+
+ // eslint-disable-next-line class-methods-use-this
+ public set cancelTokenList(value) {
+ throw new Error("cancelTokenList不允许赋值");
+ }
+
+ /**
+ * @description 私有构造不允许实例化
+ * @returns void 0
+ */
+ // constructor() {}
+
+ /**
+ * @description 生成唯一取消key
+ * @param config axios配置
+ * @returns string
+ */
+ // eslint-disable-next-line class-methods-use-this
+ private static genUniqueKey(config: EnclosureHttpRequestConfig): string {
+ return `${config.url}--${JSON.stringify(config.data)}`;
+ }
+
+ /**
+ * @description 取消重复请求
+ * @returns void 0
+ */
+ private cancelRepeatRequest(): void {
+ const temp: { [key: string]: boolean } = {};
+
+ this.sourceTokenList = this.sourceTokenList.reduce>(
+ (res: Array, cancelToken: cancelTokenType) => {
+ const { cancelKey, cancelExecutor } = cancelToken;
+ if (!temp[cancelKey]) {
+ temp[cancelKey] = true;
+ res.push(cancelToken);
+ } else {
+ cancelExecutor();
+ }
+ return res;
+ },
+ []
+ );
+ }
+
+ /**
+ * @description 删除指定的CancelToken
+ * @returns void 0
+ */
+ private deleteCancelTokenByCancelKey(cancelKey: string): void {
+ this.sourceTokenList =
+ this.sourceTokenList.length < 1
+ ? this.sourceTokenList.filter(
+ cancelToken => cancelToken.cancelKey !== cancelKey
+ )
+ : [];
+ }
+
+ /**
+ * @description 拦截请求
+ * @returns void 0
+ */
+
+ private httpInterceptorsRequest(): void {
+ EnclosureHttp.axiosInstance.interceptors.request.use(
+ (config: EnclosureHttpRequestConfig) => {
+ const $config = config;
+ NProgress.start(); // 每次切换页面时,调用进度条
+ const cancelKey = EnclosureHttp.genUniqueKey($config);
+ $config.cancelToken = new this.CancelToken(
+ (cancelExecutor: (cancel: any) => void) => {
+ this.sourceTokenList.push({ cancelKey, cancelExecutor });
+ }
+ );
+ this.cancelRepeatRequest();
+ this.currentCancelTokenKey = cancelKey;
+ // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉
+ if (typeof this.beforeRequestCallback === "function") {
+ this.beforeRequestCallback($config);
+ this.beforeRequestCallback = undefined;
+ return $config;
+ }
+ if (EnclosureHttp.initConfig.beforeRequestCallback) {
+ EnclosureHttp.initConfig.beforeRequestCallback($config);
+ return $config;
+ }
+ return $config;
+ },
+ error => {
+ return Promise.reject(error);
+ }
+ );
+ }
+
+ /**
+ * @description 清空当前cancelTokenList
+ * @returns void 0
+ */
+ public clearCancelTokenList(): void {
+ this.sourceTokenList.length = 0;
+ }
+
+ /**
+ * @description 拦截响应
+ * @returns void 0
+ */
+ private httpInterceptorsResponse(): void {
+ const instance = EnclosureHttp.axiosInstance;
+ instance.interceptors.response.use(
+ (response: EnclosureHttpResoponse) => {
+ // 请求每次成功一次就删除当前canceltoken标记
+ const cancelKey = EnclosureHttp.genUniqueKey(response.config);
+ this.deleteCancelTokenByCancelKey(cancelKey);
+ // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉
+ if (typeof this.beforeResponseCallback === "function") {
+ this.beforeResponseCallback(response);
+ this.beforeResponseCallback = undefined;
+ return response.data;
+ }
+ if (EnclosureHttp.initConfig.beforeResponseCallback) {
+ EnclosureHttp.initConfig.beforeResponseCallback(response);
+ return response.data;
+ }
+ NProgress.done();
+ return response.data;
+ },
+ (error: EnclosureHttpError) => {
+ const $error = error;
+ // 判断当前的请求中是否在 取消token数组理存在,如果存在则移除(单次请求流程)
+ if (this.currentCancelTokenKey) {
+ const haskey = this.sourceTokenList.filter(
+ cancelToken => cancelToken.cancelKey === this.currentCancelTokenKey
+ ).length;
+ if (haskey) {
+ this.sourceTokenList = this.sourceTokenList.filter(
+ cancelToken =>
+ cancelToken.cancelKey !== this.currentCancelTokenKey
+ );
+ this.currentCancelTokenKey = "";
+ }
+ }
+ $error.isCancelRequest = Axios.isCancel($error);
+ NProgress.done();
+ // 所有的响应异常 区分来源为取消请求/非取消请求
+ return Promise.reject($error);
+ }
+ );
+ }
+
+ public request(
+ method: RequestMethods,
+ url: string,
+ param?: AxiosRequestConfig,
+ axiosConfig?: EnclosureHttpRequestConfig
+ ): Promise {
+ const config = transformConfigByMethod(param, {
+ method,
+ url,
+ ...axiosConfig
+ } as EnclosureHttpRequestConfig);
+ // 单独处理自定义请求/响应回掉
+ if (axiosConfig?.beforeRequestCallback) {
+ this.beforeRequestCallback = axiosConfig.beforeRequestCallback;
+ }
+ if (axiosConfig?.beforeResponseCallback) {
+ this.beforeResponseCallback = axiosConfig.beforeResponseCallback;
+ }
+ return new Promise((resolve, reject) => {
+ EnclosureHttp.axiosInstance
+ .request(config)
+ .then((response: undefined) => {
+ resolve(response);
+ })
+ .catch((error: any) => {
+ reject(error);
+ });
+ });
+ }
+
+ public post(
+ url: string,
+ params?: T,
+ config?: EnclosureHttpRequestConfig
+ ): Promise {
+ return this.request("post", url, params, config);
+ }
+
+ public get(
+ url: string,
+ params?: T,
+ config?: EnclosureHttpRequestConfig
+ ): Promise {
+ return this.request("get", url, params, config);
+ }
+}
+
+export default EnclosureHttp;
diff --git a/src/utils/http/index.ts b/src/utils/http/index.ts
new file mode 100644
index 0000000..7421343
--- /dev/null
+++ b/src/utils/http/index.ts
@@ -0,0 +1,2 @@
+import EnclosureHttp from "./core";
+export const http = new EnclosureHttp();
diff --git a/src/utils/http/types.d.ts b/src/utils/http/types.d.ts
new file mode 100644
index 0000000..444c042
--- /dev/null
+++ b/src/utils/http/types.d.ts
@@ -0,0 +1,50 @@
+import Axios, {
+ AxiosRequestConfig,
+ Canceler,
+ AxiosResponse,
+ Method,
+ AxiosError
+} from "axios";
+
+import { METHODS } from "./config";
+
+export type cancelTokenType = { cancelKey: string; cancelExecutor: Canceler };
+
+export type RequestMethods = Extract<
+ Method,
+ "get" | "post" | "put" | "delete" | "patch" | "option" | "head"
+>;
+
+export interface EnclosureHttpRequestConfig extends AxiosRequestConfig {
+ beforeRequestCallback?: (request: EnclosureHttpRequestConfig) => void; // 请求发送之前
+ beforeResponseCallback?: (response: EnclosureHttpResoponse) => void; // 相应返回之前
+}
+
+export interface EnclosureHttpResoponse extends AxiosResponse {
+ config: EnclosureHttpRequestConfig;
+}
+
+export interface EnclosureHttpError extends AxiosError {
+ isCancelRequest?: boolean;
+}
+
+export default class EnclosureHttp {
+ cancelTokenList: Array;
+ clearCancelTokenList(): void;
+ request(
+ method: RequestMethods,
+ url: string,
+ param?: AxiosRequestConfig,
+ axiosConfig?: EnclosureHttpRequestConfig
+ ): Promise;
+ post(
+ url: string,
+ params?: T,
+ config?: EnclosureHttpRequestConfig
+ ): Promise;
+ get(
+ url: string,
+ params?: T,
+ config?: EnclosureHttpRequestConfig
+ ): Promise;
+}
diff --git a/src/utils/http/utils.ts b/src/utils/http/utils.ts
new file mode 100644
index 0000000..a5a621b
--- /dev/null
+++ b/src/utils/http/utils.ts
@@ -0,0 +1,29 @@
+import { EnclosureHttpRequestConfig } from "./types.d";
+
+export function excludeProps(
+ origin: T,
+ prop: string
+): { [key: string]: T } {
+ return Object.keys(origin)
+ .filter(key => !prop.includes(key))
+ .reduce((res, key) => {
+ res[key] = origin[key];
+ return res;
+ }, {} as { [key: string]: T });
+}
+
+export function transformConfigByMethod(
+ params: any,
+ config: EnclosureHttpRequestConfig
+): EnclosureHttpRequestConfig {
+ const { method } = config;
+ const props = ["delete", "get", "head", "options"].includes(
+ method!.toLocaleLowerCase()
+ )
+ ? "params"
+ : "data";
+ return {
+ ...config,
+ [props]: params
+ };
+}
diff --git a/src/utils/is.ts b/src/utils/is.ts
new file mode 100644
index 0000000..7d4f345
--- /dev/null
+++ b/src/utils/is.ts
@@ -0,0 +1,101 @@
+/* eslint-disable */
+const toString = Object.prototype.toString;
+
+export function is(val: unknown, type: string) {
+ return toString.call(val) === `[object ${type}]`;
+}
+
+export function isDef(val?: T): val is T {
+ return typeof val !== "undefined";
+}
+
+export function isUnDef(val?: T): val is T {
+ return !isDef(val);
+}
+
+export function isObject(val: any): val is Record {
+ return val !== null && is(val, "Object");
+}
+
+export function isEmpty(val: T): val is T {
+ if (isArray(val) || isString(val)) {
+ return val.length === 0;
+ }
+
+ if (val instanceof Map || val instanceof Set) {
+ return val.size === 0;
+ }
+
+ if (isObject(val)) {
+ return Object.keys(val).length === 0;
+ }
+
+ return false;
+}
+
+export function isDate(val: unknown): val is Date {
+ return is(val, "Date");
+}
+
+export function isNull(val: unknown): val is null {
+ return val === null;
+}
+
+export function isNullAndUnDef(val: unknown): val is null | undefined {
+ return isUnDef(val) && isNull(val);
+}
+
+export function isNullOrUnDef(val: unknown): val is null | undefined {
+ return isUnDef(val) || isNull(val);
+}
+
+export function isNumber(val: unknown): val is number {
+ return is(val, "Number");
+}
+
+export function isPromise(val: unknown): val is Promise {
+ return (
+ is(val, "Promise") &&
+ isObject(val) &&
+ isFunction(val.then) &&
+ isFunction(val.catch)
+ );
+}
+
+export function isString(val: unknown): val is string {
+ return is(val, "String");
+}
+
+export function isFunction(val: unknown): val is Function {
+ return typeof val === "function";
+}
+
+export function isBoolean(val: unknown): val is boolean {
+ return is(val, "Boolean");
+}
+
+export function isRegExp(val: unknown): val is RegExp {
+ return is(val, "RegExp");
+}
+
+export function isArray(val: any): val is Array {
+ return val && Array.isArray(val);
+}
+
+export function isWindow(val: any): val is Window {
+ return typeof window !== "undefined" && is(val, "Window");
+}
+
+export function isElement(val: unknown): val is Element {
+ return isObject(val) && !!val.tagName;
+}
+
+export const isServer = typeof window === "undefined";
+
+export const isClient = !isServer;
+
+export function isUrl(path: string): boolean {
+ const reg =
+ /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
+ return reg.test(path);
+}
diff --git a/src/utils/link.ts b/src/utils/link.ts
new file mode 100644
index 0000000..db04e7c
--- /dev/null
+++ b/src/utils/link.ts
@@ -0,0 +1,12 @@
+export const openLink = (link: string) => {
+ const $a: HTMLElement = document.createElement("a");
+ $a.setAttribute("href", link);
+ $a.setAttribute("target", "_blank");
+ $a.setAttribute("rel", "noreferrer noopener");
+ $a.setAttribute("id", "external");
+ document.getElementById("external") &&
+ document.body.removeChild(document.getElementById("external"));
+ document.body.appendChild($a);
+ $a.click();
+ $a.remove();
+};
diff --git a/src/utils/loaders/index.ts b/src/utils/loaders/index.ts
new file mode 100644
index 0000000..066ed01
--- /dev/null
+++ b/src/utils/loaders/index.ts
@@ -0,0 +1,54 @@
+interface ProxyLoader {
+ loadCss(src: string): any;
+ loadScript(src: string): Promise;
+ loadScriptConcurrent(src: Array): Promise;
+}
+
+class loaderProxy implements ProxyLoader {
+ constructor() {}
+
+ protected scriptLoaderCache: Array = [];
+
+ public loadCss = (src: string): any => {
+ const element: HTMLLinkElement = document.createElement("link");
+ element.rel = "stylesheet";
+ element.href = src;
+ document.body.appendChild(element);
+ };
+
+ public loadScript = async (src: string): Promise => {
+ if (this.scriptLoaderCache.includes(src)) {
+ return src;
+ } else {
+ const element: HTMLScriptElement = document.createElement("script");
+ element.src = src;
+ document.body.appendChild(element);
+ element.onload = () => {
+ return this.scriptLoaderCache.push(src);
+ };
+ }
+ };
+
+ public loadScriptConcurrent = async (
+ srcList: Array
+ ): Promise => {
+ if (Array.isArray(srcList)) {
+ const len: number = srcList.length;
+ if (len > 0) {
+ let count = 0;
+ srcList.map(src => {
+ if (src) {
+ this.loadScript(src).then(() => {
+ count++;
+ if (count === len) {
+ return;
+ }
+ });
+ }
+ });
+ }
+ }
+ };
+}
+
+export const loader = new loaderProxy();
diff --git a/src/utils/message/index.ts b/src/utils/message/index.ts
new file mode 100644
index 0000000..4c9f715
--- /dev/null
+++ b/src/utils/message/index.ts
@@ -0,0 +1,38 @@
+import { ElMessage } from "element-plus";
+
+// 消息
+const Message = (message: string): any => {
+ return ElMessage({
+ showClose: true,
+ message
+ });
+};
+
+// 成功
+const successMessage = (message: string): any => {
+ return ElMessage({
+ showClose: true,
+ message,
+ type: "success"
+ });
+};
+
+// 警告
+const warnMessage = (message: string): any => {
+ return ElMessage({
+ showClose: true,
+ message,
+ type: "warning"
+ });
+};
+
+// 失败
+const errorMessage = (message: string): any => {
+ return ElMessage({
+ showClose: true,
+ message,
+ type: "error"
+ });
+};
+
+export { Message, successMessage, warnMessage, errorMessage };
diff --git a/src/utils/mitt.ts b/src/utils/mitt.ts
new file mode 100644
index 0000000..14abd09
--- /dev/null
+++ b/src/utils/mitt.ts
@@ -0,0 +1,21 @@
+import type { Emitter } from "mitt";
+import mitt from "mitt";
+
+type Events = {
+ resize: {
+ detail: {
+ width: number;
+ height: number;
+ };
+ };
+ openPanel: string;
+ tagViewsChange: string;
+ tagViewsShowModel: string;
+ logoChange: string;
+ changLayoutRoute: {
+ indexPath: string;
+ parentPath: string;
+ };
+};
+
+export const emitter: Emitter = mitt();
diff --git a/src/utils/operate/index.ts b/src/utils/operate/index.ts
new file mode 100644
index 0000000..13da7cf
--- /dev/null
+++ b/src/utils/operate/index.ts
@@ -0,0 +1,42 @@
+export const hasClass = (ele: RefType, cls: string): any => {
+ return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
+};
+
+export const addClass = (
+ ele: RefType,
+ cls: string,
+ extracls?: string
+): any => {
+ if (!hasClass(ele, cls)) ele.className += " " + cls;
+ if (extracls) {
+ if (!hasClass(ele, extracls)) ele.className += " " + extracls;
+ }
+};
+
+export const removeClass = (
+ ele: RefType,
+ cls: string,
+ extracls?: string
+): any => {
+ if (hasClass(ele, cls)) {
+ const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
+ ele.className = ele.className.replace(reg, " ").trim();
+ }
+ if (extracls) {
+ if (hasClass(ele, extracls)) {
+ const regs = new RegExp("(\\s|^)" + extracls + "(\\s|$)");
+ ele.className = ele.className.replace(regs, " ").trim();
+ }
+ }
+};
+
+export const toggleClass = (
+ flag: boolean,
+ clsName: string,
+ target?: RefType
+): any => {
+ const targetEl = target || document.body;
+ let { className } = targetEl;
+ className = className.replace(clsName, "");
+ targetEl.className = flag ? `${className} ${clsName} ` : className;
+};
diff --git a/src/utils/progress/index.ts b/src/utils/progress/index.ts
new file mode 100644
index 0000000..5d9fbfc
--- /dev/null
+++ b/src/utils/progress/index.ts
@@ -0,0 +1,17 @@
+import NProgress from "nprogress";
+import "nprogress/nprogress.css";
+
+NProgress.configure({
+ // 动画方式
+ easing: "ease",
+ // 递增进度条的速度
+ speed: 500,
+ // 是否显示加载ico
+ showSpinner: true,
+ // 自动递增间隔
+ trickleSpeed: 200,
+ // 初始化时的最小百分比
+ minimum: 0.3
+});
+
+export default NProgress;
diff --git a/src/utils/propTypes.ts b/src/utils/propTypes.ts
new file mode 100644
index 0000000..403b78b
--- /dev/null
+++ b/src/utils/propTypes.ts
@@ -0,0 +1,34 @@
+import { CSSProperties, VNodeChild } from "vue";
+import { createTypes, VueTypeValidableDef, VueTypesInterface } from "vue-types";
+
+export type VueNode = VNodeChild | JSX.Element;
+
+type PropTypes = VueTypesInterface & {
+ readonly style: VueTypeValidableDef;
+ readonly VNodeChild: VueTypeValidableDef;
+};
+
+const propTypes = createTypes({
+ func: undefined,
+ bool: undefined,
+ string: undefined,
+ number: undefined,
+ object: undefined,
+ integer: undefined
+}) as PropTypes;
+
+propTypes.extend([
+ {
+ name: "style",
+ getter: true,
+ type: [String, Object],
+ default: undefined
+ },
+ {
+ name: "VNodeChild",
+ getter: true,
+ type: undefined
+ }
+]);
+
+export { propTypes };
diff --git a/src/utils/resize/index.ts b/src/utils/resize/index.ts
new file mode 100644
index 0000000..cb94a2d
--- /dev/null
+++ b/src/utils/resize/index.ts
@@ -0,0 +1,35 @@
+import ResizeObserver from "resize-observer-polyfill";
+
+const isServer = typeof window === "undefined";
+
+const resizeHandler = (entries: any[]): void => {
+ for (const entry of entries) {
+ const listeners = entry.target.__resizeListeners__ || [];
+ if (listeners.length) {
+ listeners.forEach((fn: () => any) => {
+ fn();
+ });
+ }
+ }
+};
+
+export const addResizeListener = (element: any, fn: () => any): any => {
+ if (isServer) return;
+ if (!element.__resizeListeners__) {
+ element.__resizeListeners__ = [];
+ element.__ro__ = new ResizeObserver(resizeHandler);
+ element.__ro__.observe(element);
+ }
+ element.__resizeListeners__.push(fn);
+};
+
+export const removeResizeListener = (element: any, fn: () => any): any => {
+ if (!element || !element.__resizeListeners__) return;
+ element.__resizeListeners__.splice(
+ element.__resizeListeners__.indexOf(fn),
+ 1
+ );
+ if (!element.__resizeListeners__.length) {
+ element.__ro__.disconnect();
+ }
+};
diff --git a/src/utils/storage/cookie.ts b/src/utils/storage/cookie.ts
new file mode 100644
index 0000000..24849ac
--- /dev/null
+++ b/src/utils/storage/cookie.ts
@@ -0,0 +1,53 @@
+import { loadEnv } from "@build/utils";
+import { merge } from "lodash-es";
+import tsCookies from "typescript-cookie/dist/src/compat";
+
+class Cookies {
+ private static env = loadEnv();
+ constructor() {}
+ /**
+ * 存储 cookie 值
+ * @param name
+ * @param value
+ * @param cookieSetting
+ */
+ set(name = "default", value = "", cookieSetting = {}) {
+ const currentCookieSetting = {
+ expires: 1
+ };
+ merge(currentCookieSetting, cookieSetting);
+ tsCookies.set(
+ `${Cookies.env.VITE_TITLE}-${Cookies.env.VITE_VERSION}-${name}`,
+ value,
+ currentCookieSetting
+ );
+ }
+ /**
+ * 拿到 cookie 值
+ * @param name
+ * @returns
+ */
+ get(name = "default") {
+ return tsCookies.get(
+ `${Cookies.env.VITE_TITLE}-${Cookies.env.VITE_VERSION}-${name}`
+ );
+ }
+ /**
+ * 拿到 cookie 全部的值
+ * @returns
+ */
+ getAll() {
+ return tsCookies.get();
+ }
+ /**
+ * 删除 cookie
+ * @param name
+ */
+ remove(name = "default") {
+ tsCookies.remove(
+ `${Cookies.env.VITE_TITLE}-${Cookies.env.VITE_VERSION}-${name}`
+ );
+ }
+}
+
+export const cookies = new Cookies();
diff --git a/src/utils/storage/db.ts b/src/utils/storage/db.ts
new file mode 100644
index 0000000..bd3cfe3
--- /dev/null
+++ b/src/utils/storage/db.ts
@@ -0,0 +1,93 @@
+import { loadEnv } from "@build/utils";
+import { LocalStorage, LowSync } from "lowdb";
+import { chain, cloneDeep } from "lodash-es";
+import { storageLocal } from ".";
+import { cookies } from "./cookie";
+type Data = {
+ database: {};
+ sys: {};
+};
+/**
+ * db 数据存储,采用 LocalStorage存储
+ */
+class DB {
+ private db: LowSync;
+ private static env = loadEnv();
+ constructor() {
+ this.db = new LowSync(
+ new LocalStorage(`${DB.env.VITE_TITLE}-${DB.env.VITE_VERSION}`)
+ );
+ this.initialization();
+ // @ts-ignore
+ this.db.chain = chain(this.db.data);
+ }
+ private initialization() {
+ this.db.data = storageLocal.getItem(
+ `${DB.env.VITE_TITLE}-${DB.env.VITE_VERSION}`
+ ) || { database: {}, sys: {} };
+ this.db.write();
+ }
+ /**
+ * 检查路径是否存在 不存在的话初始化
+ * @param param0
+ * @returns path
+ */
+ pathInit({
+ dbName = "database",
+ path = "",
+ user = true,
+ validator = () => true,
+ defaultValue = ""
+ }): string {
+ const uuid = cookies.get("uuid") || "ghost-uuid";
+ const currentPath = `${dbName}.${user ? `user.${uuid}` : "public"}${
+ path ? `.${path}` : ""
+ }`;
+ // @ts-ignore
+ const value = this.db.chain.get(currentPath).value();
+ // @ts-ignore
+ if (!(value !== undefined && validator(value))) {
+ // @ts-ignore
+ this.db.chain.set(currentPath, defaultValue).value();
+ this.db.write();
+ }
+ return currentPath;
+ }
+ /**
+ *将数据存储到指定位置 | 路径不存在会自动初始化
+ *
+ * 效果类似于取值 dbName.path = value
+ * @param param0
+ */
+ dbSet({ dbName = "database", path = "", value = "", user = false }): void {
+ const currentPath = this.pathInit({
+ dbName,
+ path,
+ user
+ });
+ // @ts-ignore
+ this.db.chain.set(currentPath, value).value();
+ this.db.write();
+ }
+ /**
+ * 获取数据
+ *
+ * 效果类似于取值 dbName.path || defaultValue
+ * @param param0
+ * @returns
+ */
+ dbGet({
+ dbName = "database",
+ path = "",
+ defaultValue = "",
+ user = false
+ }): any {
+ // @ts-ignore
+ const values = this.db.chain
+ .get(this.pathInit({ dbName, path, user, defaultValue }))
+ .value();
+ return cloneDeep(values);
+ }
+}
+
+export const db = new DB();
diff --git a/src/utils/storage/index.ts b/src/utils/storage/index.ts
new file mode 100644
index 0000000..12a5df5
--- /dev/null
+++ b/src/utils/storage/index.ts
@@ -0,0 +1,46 @@
+interface ProxyStorage {
+ getItem(key: string): any;
+ setItem(Key: string, value: string): void;
+ removeItem(key: string): void;
+ clear(): void;
+}
+
+//sessionStorage operate
+class sessionStorageProxy implements ProxyStorage {
+ protected storage: ProxyStorage;
+
+ constructor(storageModel: ProxyStorage) {
+ this.storage = storageModel;
+ }
+
+ // 存
+ public setItem(key: string, value: any): void {
+ this.storage.setItem(key, JSON.stringify(value));
+ }
+
+ // 取
+ public getItem(key: string): any {
+ return JSON.parse(this.storage.getItem(key)) || null;
+ }
+
+ // 删
+ public removeItem(key: string): void {
+ this.storage.removeItem(key);
+ }
+
+ // 清空
+ public clear(): void {
+ this.storage.clear();
+ }
+}
+
+//localStorage operate
+class localStorageProxy extends sessionStorageProxy implements ProxyStorage {
+ constructor(localStorage: ProxyStorage) {
+ super(localStorage);
+ }
+}
+
+export const storageSession = new sessionStorageProxy(sessionStorage);
+
+export const storageLocal = new localStorageProxy(localStorage);
diff --git a/src/utils/storage/responsive.ts b/src/utils/storage/responsive.ts
new file mode 100644
index 0000000..05bb861
--- /dev/null
+++ b/src/utils/storage/responsive.ts
@@ -0,0 +1,37 @@
+// 响应式storage
+import { App } from "vue";
+import Storage from "responsive-storage";
+
+export const injectResponsiveStorage = (app: App, config: ServerConfigs) => {
+ app.use(Storage, {
+ // 默认显示首页tag
+ routesInStorage: {
+ type: Array,
+ default: Storage.getData(undefined, "routesInStorage") ?? [
+ {
+ path: "/welcome",
+ parentPath: "/",
+ meta: {
+ title: "message.hshome",
+ icon: "el-icon-s-home",
+ showLink: true
+ }
+ }
+ ]
+ },
+ // 国际化 默认中文zh
+ locale: {
+ type: Object,
+ default: Storage.getData(undefined, "locale") ?? {
+ locale: config.Locale
+ }
+ },
+ // layout模式以及主题
+ layout: {
+ type: Object,
+ default: Storage.getData(undefined, "layout") ?? {
+ layout: config.Layout
+ }
+ }
+ });
+};
diff --git a/src/utils/useAttrs.ts b/src/utils/useAttrs.ts
new file mode 100644
index 0000000..48985af
--- /dev/null
+++ b/src/utils/useAttrs.ts
@@ -0,0 +1,42 @@
+import { getCurrentInstance, reactive, shallowRef, watchEffect } from "vue";
+import type { Ref } from "vue";
+interface Params {
+ excludeListeners?: boolean;
+ excludeKeys?: string[];
+}
+
+const DEFAULT_EXCLUDE_KEYS = ["class", "style"];
+const LISTENER_PREFIX = /^on[A-Z]/;
+
+export function entries(obj: Recordable): [string, T][] {
+ return Object.keys(obj).map((key: string) => [key, obj[key]]);
+}
+
+export function useAttrs(params: Params = {}): Ref | {} {
+ const instance = getCurrentInstance();
+ if (!instance) return {};
+
+ const { excludeListeners = false, excludeKeys = [] } = params;
+ const attrs = shallowRef({});
+ const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS);
+
+ // Since attrs are not reactive, make it reactive instead of doing in `onUpdated` hook for better performance
+ instance.attrs = reactive(instance.attrs);
+
+ watchEffect(() => {
+ const res = entries(instance.attrs).reduce((acm, [key, val]) => {
+ if (
+ !allExcludeKeys.includes(key) &&
+ !(excludeListeners && LISTENER_PREFIX.test(key))
+ ) {
+ acm[key] = val;
+ }
+
+ return acm;
+ }, {} as Recordable);
+
+ attrs.value = res;
+ });
+
+ return attrs;
+}
diff --git a/src/utils/useCopyToClipboard.ts b/src/utils/useCopyToClipboard.ts
new file mode 100644
index 0000000..c58e3ab
--- /dev/null
+++ b/src/utils/useCopyToClipboard.ts
@@ -0,0 +1,72 @@
+import { ref, watch } from "vue";
+
+import { isDef } from "/@/utils/is";
+interface Options {
+ target?: HTMLElement;
+}
+export function useCopyToClipboard(initial?: string) {
+ const clipboardRef = ref(initial || "");
+ const isSuccessRef = ref(false);
+ const copiedRef = ref(false);
+
+ watch(
+ clipboardRef,
+ (str?: string) => {
+ if (isDef(str)) {
+ copiedRef.value = true;
+ isSuccessRef.value = copyTextToClipboard(str);
+ }
+ },
+ { immediate: !!initial, flush: "sync" }
+ );
+
+ return { clipboardRef, isSuccessRef, copiedRef };
+}
+
+export function copyTextToClipboard(
+ input: string,
+ { target = document.body }: Options = {}
+) {
+ const element = document.createElement("textarea");
+ const previouslyFocusedElement = document.activeElement;
+
+ element.value = input;
+
+ element.setAttribute("readonly", "");
+
+ (element.style as any).contain = "strict";
+ element.style.position = "absolute";
+ element.style.left = "-9999px";
+ element.style.fontSize = "12pt";
+
+ const selection = document.getSelection();
+ let originalRange;
+ if (selection && selection.rangeCount > 0) {
+ originalRange = selection.getRangeAt(0);
+ }
+
+ target.append(element);
+ element.select();
+
+ element.selectionStart = 0;
+ element.selectionEnd = input.length;
+
+ let isSuccess = false;
+ try {
+ isSuccess = document.execCommand("copy");
+ } catch (e) {
+ throw new Error(e);
+ }
+
+ element.remove();
+
+ if (originalRange && selection) {
+ selection.removeAllRanges();
+ selection.addRange(originalRange);
+ }
+
+ if (previouslyFocusedElement) {
+ (previouslyFocusedElement as HTMLElement).focus();
+ }
+ return isSuccess;
+}
diff --git a/src/utils/uuid.ts b/src/utils/uuid.ts
new file mode 100644
index 0000000..2e49b3f
--- /dev/null
+++ b/src/utils/uuid.ts
@@ -0,0 +1,28 @@
+const hexList: string[] = [];
+for (let i = 0; i <= 15; i++) {
+ hexList[i] = i.toString(16);
+}
+
+export function buildUUID(): string {
+ let uuid = "";
+ for (let i = 1; i <= 36; i++) {
+ if (i === 9 || i === 14 || i === 19 || i === 24) {
+ uuid += "-";
+ } else if (i === 15) {
+ uuid += 4;
+ } else if (i === 20) {
+ uuid += hexList[(Math.random() * 4) | 8];
+ } else {
+ uuid += hexList[(Math.random() * 16) | 0];
+ }
+ }
+ return uuid.replace(/-/g, "");
+}
+
+let unique = 0;
+export function buildShortUUID(prefix = ""): string {
+ const time = Date.now();
+ const random = Math.floor(Math.random() * 1000000000);
+ unique++;
+ return prefix + "_" + random + unique + String(time);
+}
diff --git a/src/views/error/401.vue b/src/views/error/401.vue
new file mode 100644
index 0000000..53432f1
--- /dev/null
+++ b/src/views/error/401.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ Pure Admin
+ 你没有权限去该页面
+
+
+
+
+
+
+
+
+
diff --git a/src/views/error/404.vue b/src/views/error/404.vue
new file mode 100644
index 0000000..a93f88a
--- /dev/null
+++ b/src/views/error/404.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
Pure Admin
+
{{ message }}
+
+ Please check that the URL you entered is correct, or click the button
+ below to return to the homepage.
+
+
Back to home
+
+
+
+
+
+
diff --git a/src/views/login.vue b/src/views/login.vue
new file mode 100644
index 0000000..ca2af2a
--- /dev/null
+++ b/src/views/login.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/src/views/redirect.vue b/src/views/redirect.vue
new file mode 100644
index 0000000..5720649
--- /dev/null
+++ b/src/views/redirect.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/src/views/register.vue b/src/views/register.vue
new file mode 100644
index 0000000..9c3d6e3
--- /dev/null
+++ b/src/views/register.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/src/views/type.ts b/src/views/type.ts
new file mode 100644
index 0000000..def5205
--- /dev/null
+++ b/src/views/type.ts
@@ -0,0 +1,6 @@
+export type infoType = {
+ svg?: string;
+ code?: number;
+ info?: string;
+ accessToken?: string;
+};
diff --git a/src/views/welcome.vue b/src/views/welcome.vue
new file mode 100644
index 0000000..a618645
--- /dev/null
+++ b/src/views/welcome.vue
@@ -0,0 +1,3 @@
+
+ Pure-Admin-Thin
+
diff --git a/stylelint.config.js b/stylelint.config.js
new file mode 100644
index 0000000..6e0b174
--- /dev/null
+++ b/stylelint.config.js
@@ -0,0 +1,69 @@
+module.exports = {
+ root: true,
+ plugins: ["stylelint-order"],
+ extends: ["stylelint-config-standard", "stylelint-config-prettier"],
+ rules: {
+ "selector-pseudo-class-no-unknown": [
+ true,
+ {
+ ignorePseudoClasses: ["deep"]
+ }
+ ],
+ "selector-pseudo-element-no-unknown": [
+ true,
+ {
+ ignorePseudoElements: ["v-deep", ":deep"]
+ }
+ ],
+ "at-rule-no-unknown": [
+ true,
+ {
+ ignoreAtRules: [
+ "tailwind",
+ "apply",
+ "variants",
+ "responsive",
+ "screen",
+ "function",
+ "if",
+ "each",
+ "include",
+ "mixin"
+ ]
+ }
+ ],
+ "no-empty-source": null,
+ "named-grid-areas-no-invalid": null,
+ "unicode-bom": "never",
+ "no-descending-specificity": null,
+ "font-family-no-missing-generic-family-keyword": null,
+ "declaration-colon-space-after": "always-single-line",
+ "declaration-colon-space-before": "never",
+ "rule-empty-line-before": [
+ "always",
+ {
+ ignore: ["after-comment", "first-nested"]
+ }
+ ],
+ "unit-no-unknown": [true, { ignoreUnits: ["rpx"] }],
+ "order/order": [
+ [
+ "dollar-variables",
+ "custom-properties",
+ "at-rules",
+ "declarations",
+ {
+ type: "at-rule",
+ name: "supports"
+ },
+ {
+ type: "at-rule",
+ name: "media"
+ },
+ "rules"
+ ],
+ { severity: "warning" }
+ ]
+ },
+ ignoreFiles: ["**/*.js", "**/*.jsx", "**/*.tsx", "**/*.ts", "**/*.json"]
+};
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..e980c72
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,39 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "module": "esnext",
+ "moduleResolution": "node",
+ "strict": false,
+ "jsx": "preserve",
+ "importHelpers": true,
+ "experimentalDecorators": true,
+ "strictFunctionTypes": false,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "isolatedModules": true,
+ "allowSyntheticDefaultImports": true,
+ "forceConsistentCasingInFileNames": true,
+ "sourceMap": true,
+ "baseUrl": ".",
+ "allowJs": false,
+ "resolveJsonModule": true,
+ "lib": ["dom", "esnext"],
+ "incremental": true,
+ "paths": {
+ "/@/*": ["src/*"],
+ "@build/*": ["build/*"],
+ "/#/*": ["types/*"]
+ },
+ "types": ["node", "vite/client", "element-plus/global"],
+ "typeRoots": ["./node_modules/@types/", "./types"]
+ },
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.tsx",
+ "src/**/*.vue",
+ "types/*.d.ts",
+ "mock/*.ts",
+ "vite.config.ts"
+ ],
+ "exclude": ["node_modules", "dist", "**/*.js"]
+}
diff --git a/types/global.d.ts b/types/global.d.ts
new file mode 100644
index 0000000..db725cc
--- /dev/null
+++ b/types/global.d.ts
@@ -0,0 +1,123 @@
+import type {
+ ComponentRenderProxy,
+ VNode,
+ ComponentPublicInstance,
+ FunctionalComponent,
+ PropType as VuePropType
+} from "vue";
+
+declare global {
+ const __APP_INFO__: {
+ pkg: {
+ name: string;
+ version: string;
+ dependencies: Recordable;
+ devDependencies: Recordable;
+ };
+ lastBuildTime: string;
+ };
+ interface Window {
+ // Global vue app instance
+ __APP__: App;
+ webkitCancelAnimationFrame: (handle: number) => void;
+ mozCancelAnimationFrame: (handle: number) => void;
+ oCancelAnimationFrame: (handle: number) => void;
+ msCancelAnimationFrame: (handle: number) => void;
+
+ webkitRequestAnimationFrame: (callback: FrameRequestCallback) => number;
+ mozRequestAnimationFrame: (callback: FrameRequestCallback) => number;
+ oRequestAnimationFrame: (callback: FrameRequestCallback) => number;
+ msRequestAnimationFrame: (callback: FrameRequestCallback) => number;
+ }
+
+ // vue
+ type PropType = VuePropType;
+
+ type Writable = {
+ -readonly [P in keyof T]: T[P];
+ };
+
+ type Nullable = T | null;
+ type NonNullable = T extends null | undefined ? never : T;
+ type Recordable = Record;
+ type ReadonlyRecordable = {
+ readonly [key: string]: T;
+ };
+ type Indexable = {
+ [key: string]: T;
+ };
+ type DeepPartial = {
+ [P in keyof T]?: DeepPartial;
+ };
+ type TimeoutHandle = ReturnType;
+ type IntervalHandle = ReturnType;
+
+ interface ChangeEvent extends Event {
+ target: HTMLInputElement;
+ }
+
+ interface WheelEvent {
+ path?: EventTarget[];
+ }
+ interface ImportMetaEnv extends ViteEnv {
+ __: unknown;
+ }
+
+ declare interface ViteEnv {
+ VITE_PORT: number;
+ VITE_TITLE: string;
+ VITE_VERSION: string;
+ VITE_USE_MOCK: boolean;
+ VITE_USE_PWA: boolean;
+ VITE_PUBLIC_PATH: string;
+ VITE_PROXY: [string, string][];
+ VITE_GLOB_APP_TITLE: string;
+ VITE_GLOB_APP_SHORT_NAME: string;
+ VITE_USE_CDN: boolean;
+ VITE_DROP_CONSOLE: boolean;
+ VITE_BUILD_COMPRESS: "gzip" | "brotli" | "none";
+ VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE: boolean;
+ VITE_LEGACY: boolean;
+ VITE_USE_IMAGEMIN: boolean;
+ VITE_GENERATE_UI: string;
+ }
+
+ declare interface ServerConfigs {
+ Version?: string;
+ Title?: string;
+ FixedHeader?: boolean;
+ HiddenSideBar?: boolean;
+ KeepAlive?: boolean;
+ Locale?: string;
+ Layout?: string;
+ MapConfigure?: {
+ amapKey?: string;
+ baiduKey?: string;
+ options: {
+ resizeEnable?: boolean;
+ center?: number[];
+ zoom?: number;
+ };
+ };
+ }
+
+ function parseInt(s: string | number, radix?: number): number;
+
+ function parseFloat(string: string | number): number;
+
+ namespace JSX {
+ // tslint:disable no-empty-interface
+ type Element = VNode;
+ // tslint:disable no-empty-interface
+ type ElementClass = ComponentRenderProxy;
+ interface ElementAttributesProperty {
+ $props: any;
+ }
+ interface IntrinsicElements {
+ [elem: string]: any;
+ }
+ interface IntrinsicAttributes {
+ [elem: string]: any;
+ }
+ }
+}
diff --git a/types/index.d.ts b/types/index.d.ts
new file mode 100644
index 0000000..215d923
--- /dev/null
+++ b/types/index.d.ts
@@ -0,0 +1,33 @@
+declare interface Fn {
+ (...arg: T[]): R;
+}
+
+declare interface PromiseFn {
+ (...arg: T[]): Promise;
+}
+
+declare type RefType = T | null;
+
+declare type LabelValueOptions = {
+ label: string;
+ value: any;
+}[];
+
+declare type EmitType = (event: string, ...args: any[]) => void;
+
+declare type TargetContext = "_self" | "_blank";
+
+declare interface ComponentElRef {
+ $el: T;
+}
+
+declare type ComponentRef =
+ ComponentElRef | null;
+
+declare type ElRef = Nullable;
+
+declare type ForDataType = {
+ [P in T]?: ForDataType;
+};
+
+declare type AnyFunction = (...args: any[]) => T;
diff --git a/types/shims-tsx.d.ts b/types/shims-tsx.d.ts
new file mode 100644
index 0000000..4d21788
--- /dev/null
+++ b/types/shims-tsx.d.ts
@@ -0,0 +1,16 @@
+import Vue, { VNode } from "vue";
+
+declare module "*.tsx" {
+ import Vue from "compatible-vue";
+ export default Vue;
+}
+
+declare global {
+ namespace JSX {
+ interface Element extends VNode {}
+ interface ElementClass extends Vue {}
+ interface IntrinsicElements {
+ [elem: string]: any;
+ }
+ }
+}
diff --git a/types/shims-vue.d.ts b/types/shims-vue.d.ts
new file mode 100644
index 0000000..dfc2afe
--- /dev/null
+++ b/types/shims-vue.d.ts
@@ -0,0 +1,12 @@
+declare module "*.vue" {
+ import { DefineComponent } from "vue";
+ const component: DefineComponent<{}, {}, any>;
+ export default component;
+}
+
+declare module "*.scss" {
+ const scss: Record;
+ export default scss;
+}
+
+declare module "vuedraggable/src/vuedraggable";
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..0fcf0a7
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,87 @@
+import { resolve } from "path";
+import { UserConfigExport, ConfigEnv, loadEnv } from "vite";
+import vue from "@vitejs/plugin-vue";
+import vueJsx from "@vitejs/plugin-vue-jsx";
+import { warpperEnv } from "./build/utils";
+import { createProxy } from "./build/proxy";
+import { viteMockServe } from "vite-plugin-mock";
+import svgLoader from "vite-svg-loader";
+import ElementPlus from "unplugin-element-plus/vite";
+
+const pathResolve = (dir: string): any => {
+ return resolve(__dirname, ".", dir);
+};
+
+const alias: Record = {
+ "/@": pathResolve("src"),
+ "@build": pathResolve("build"),
+ //解决开发环境下的警告 You are running the esm-bundler build of vue-i18n. It is recommended to configure your bundler to explicitly replace feature flag globals with boolean literals to get proper tree-shaking in the final bundle.
+ "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
+};
+
+const root: string = process.cwd();
+
+export default ({ command, mode }: ConfigEnv): UserConfigExport => {
+ const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY } = warpperEnv(
+ loadEnv(mode, root)
+ );
+ const prodMock = true;
+ return {
+ /**
+ * 基本公共路径
+ * /manages/ 可根据项目部署域名的后缀自行填写(全局搜/manages/替换)
+ * @default '/'
+ */
+ base:
+ process.env.NODE_ENV === "production" ? "/manages/" : VITE_PUBLIC_PATH,
+ root,
+ resolve: {
+ alias
+ },
+ // 服务端渲染
+ server: {
+ // 是否开启 https
+ https: false,
+ /**
+ * 端口号
+ * @default 3000
+ */
+ port: VITE_PORT,
+ host: "0.0.0.0",
+ // 本地跨域代理
+ proxy: createProxy(VITE_PROXY)
+ },
+ plugins: [
+ vue(),
+ vueJsx(),
+ svgLoader(),
+ ElementPlus({}),
+ viteMockServe({
+ mockPath: "mock",
+ localEnabled: command === "serve",
+ prodEnabled: command !== "serve" && prodMock,
+ injectCode: `
+ import { setupProdMockServer } from './mockProdServer';
+ setupProdMockServer();
+ `,
+ logger: true
+ })
+ ],
+ optimizeDeps: {
+ include: [
+ "element-plus/lib/locale/lang/zh-cn",
+ "element-plus/lib/locale/lang/en"
+ ]
+ },
+ build: {
+ // @ts-ignore
+ sourcemap: false,
+ brotliSize: false,
+ // 消除打包大小超过500kb警告
+ chunkSizeWarningLimit: 2000
+ },
+ define: {
+ __INTLIFY_PROD_DEVTOOLS__: false
+ }
+ };
+};
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..4d3039f
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,4421 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@7.12.11":
+ version "7.12.11"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
+ integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
+ dependencies:
+ "@babel/highlight" "^7.14.5"
+
+"@babel/compat-data@^7.15.0":
+ version "7.15.0"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
+ integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
+
+"@babel/core@>=7.9.0", "@babel/core@^7.14.8":
+ version "7.15.5"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
+ integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==
+ dependencies:
+ "@babel/code-frame" "^7.14.5"
+ "@babel/generator" "^7.15.4"
+ "@babel/helper-compilation-targets" "^7.15.4"
+ "@babel/helper-module-transforms" "^7.15.4"
+ "@babel/helpers" "^7.15.4"
+ "@babel/parser" "^7.15.5"
+ "@babel/template" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@babel/types" "^7.15.4"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
+ integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
+ dependencies:
+ "@babel/types" "^7.15.4"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
+ integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-compilation-targets@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9"
+ integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==
+ dependencies:
+ "@babel/compat-data" "^7.15.0"
+ "@babel/helper-validator-option" "^7.14.5"
+ browserslist "^4.16.6"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e"
+ integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.15.4"
+ "@babel/helper-function-name" "^7.15.4"
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
+ "@babel/helper-optimise-call-expression" "^7.15.4"
+ "@babel/helper-replace-supers" "^7.15.4"
+ "@babel/helper-split-export-declaration" "^7.15.4"
+
+"@babel/helper-function-name@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc"
+ integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.15.4"
+ "@babel/template" "^7.15.4"
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-get-function-arity@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b"
+ integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-hoist-variables@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df"
+ integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-member-expression-to-functions@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef"
+ integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f"
+ integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-module-transforms@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c"
+ integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.15.4"
+ "@babel/helper-replace-supers" "^7.15.4"
+ "@babel/helper-simple-access" "^7.15.4"
+ "@babel/helper-split-export-declaration" "^7.15.4"
+ "@babel/helper-validator-identifier" "^7.14.9"
+ "@babel/template" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-optimise-call-expression@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171"
+ integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
+ integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
+
+"@babel/helper-replace-supers@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a"
+ integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
+ "@babel/helper-optimise-call-expression" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-simple-access@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b"
+ integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-split-export-declaration@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257"
+ integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==
+ dependencies:
+ "@babel/types" "^7.15.4"
+
+"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9":
+ version "7.14.9"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48"
+ integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==
+
+"@babel/helper-validator-option@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
+ integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
+
+"@babel/helpers@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43"
+ integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==
+ dependencies:
+ "@babel/template" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@babel/types" "^7.15.4"
+
+"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
+ integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.14.5"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.15.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5":
+ version "7.15.6"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz#043b9aa3c303c0722e5377fef9197f4cf1796549"
+ integrity sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==
+
+"@babel/plugin-syntax-import-meta@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-jsx@^7.0.0":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201"
+ integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-typescript@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716"
+ integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-transform-typescript@^7.14.6":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.4.tgz#db7a062dcf8be5fc096bc0eeb40a13fbfa1fa251"
+ integrity sha512-sM1/FEjwYjXvMwu1PJStH11kJ154zd/lpY56NQJ5qH2D0mabMv1CAy/kdvS9RP4Xgfj9fBBA3JiSLdDHgXdzOA==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
+ "@babel/helper-plugin-utils" "^7.14.5"
+ "@babel/plugin-syntax-typescript" "^7.14.5"
+
+"@babel/template@^7.0.0", "@babel/template@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194"
+ integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==
+ dependencies:
+ "@babel/code-frame" "^7.14.5"
+ "@babel/parser" "^7.15.4"
+ "@babel/types" "^7.15.4"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.15.4":
+ version "7.15.4"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
+ integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
+ dependencies:
+ "@babel/code-frame" "^7.14.5"
+ "@babel/generator" "^7.15.4"
+ "@babel/helper-function-name" "^7.15.4"
+ "@babel/helper-hoist-variables" "^7.15.4"
+ "@babel/helper-split-export-declaration" "^7.15.4"
+ "@babel/parser" "^7.15.4"
+ "@babel/types" "^7.15.4"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.15.0", "@babel/types@^7.15.4":
+ version "7.15.6"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
+ integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.14.9"
+ to-fast-properties "^2.0.0"
+
+"@commitlint/cli@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-13.1.0.tgz#3608bb24dbef41aaa0729ffe65c7f9b57409626a"
+ integrity sha512-xN/uNYWtGTva5OMSd+xA6e6/c2jk8av7MUbdd6w2cw89u6z3fAWoyiH87X0ewdSMNYmW/6B3L/2dIVGHRDID5w==
+ dependencies:
+ "@commitlint/format" "^13.1.0"
+ "@commitlint/lint" "^13.1.0"
+ "@commitlint/load" "^13.1.0"
+ "@commitlint/read" "^13.1.0"
+ "@commitlint/types" "^13.1.0"
+ lodash "^4.17.19"
+ resolve-from "5.0.0"
+ resolve-global "1.0.0"
+ yargs "^17.0.0"
+
+"@commitlint/config-conventional@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-13.1.0.tgz#f02871d50c73db0a31b777231f49203b964d9d59"
+ integrity sha512-zukJXqdr6jtMiVRy3tTHmwgKcUMGfqKDEskRigc5W3k2aYF4gBAtCEjMAJGZgSQE4DMcHeok0pEV2ANmTpb0cw==
+ dependencies:
+ conventional-changelog-conventionalcommits "^4.3.1"
+
+"@commitlint/ensure@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-13.1.0.tgz#057a325b54f104cbeed2a26bacb5eec29298e7d5"
+ integrity sha512-NRGyjOdZQnlYwm9it//BZJ2Vm+4x7G9rEnHpLCvNKYY0c6RA8Qf7hamLAB8dWO12RLuFt06JaOpHZoTt/gHutA==
+ dependencies:
+ "@commitlint/types" "^13.1.0"
+ lodash "^4.17.19"
+
+"@commitlint/execute-rule@^13.0.0":
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-13.0.0.tgz#7823303b82b5d86dac46e67cfa005f4433476981"
+ integrity sha512-lBz2bJhNAgkkU/rFMAw3XBNujbxhxlaFHY3lfKB/MxpAa+pIfmWB3ig9i1VKe0wCvujk02O0WiMleNaRn2KJqw==
+
+"@commitlint/format@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/format/-/format-13.1.0.tgz#915570d958d83bae5fa645de6b1e6c9dd1362ec0"
+ integrity sha512-n46rYvzf+6Sm99TJjTLjJBkjm6JVcklt31lDO5Q+pCIV0NnJ4qIUcwa6wIL9a9Vqb1XzlMgtp27E0zyYArkvSg==
+ dependencies:
+ "@commitlint/types" "^13.1.0"
+ chalk "^4.0.0"
+
+"@commitlint/is-ignored@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-13.1.0.tgz#88a5dfbc8f9ea91e860323af6681aa131322b0c4"
+ integrity sha512-P6zenLE5Tn3FTNjRzmL9+/KooTXEI0khA2TmUbuei9KiycemeO4q7Xk7w7aXwFPNAbN0O9oI7z3z7cFpzKJWmQ==
+ dependencies:
+ "@commitlint/types" "^13.1.0"
+ semver "7.3.5"
+
+"@commitlint/lint@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-13.1.0.tgz#ea56ce0970f9b75ffe7bd2c9968f4f1d4461ba3a"
+ integrity sha512-qH9AYSQDDTaSWSdtOvB3G1RdPpcYSgddAdFYqpFewlKQ1GJj/L+sM7vwqCG7/ip6AiM04Sry1sgmFzaEoFREUA==
+ dependencies:
+ "@commitlint/is-ignored" "^13.1.0"
+ "@commitlint/parse" "^13.1.0"
+ "@commitlint/rules" "^13.1.0"
+ "@commitlint/types" "^13.1.0"
+
+"@commitlint/load@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/load/-/load-13.1.0.tgz#d6c9b547551f2216586d6c1964d93f92e7b04277"
+ integrity sha512-zlZbjJCWnWmBOSwTXis8H7I6pYk6JbDwOCuARA6B9Y/qt2PD+NCo0E/7EuaaFoxjHl+o56QR5QttuMBrf+BJzg==
+ dependencies:
+ "@commitlint/execute-rule" "^13.0.0"
+ "@commitlint/resolve-extends" "^13.0.0"
+ "@commitlint/types" "^13.1.0"
+ chalk "^4.0.0"
+ cosmiconfig "^7.0.0"
+ lodash "^4.17.19"
+ resolve-from "^5.0.0"
+
+"@commitlint/message@^13.0.0":
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/@commitlint/message/-/message-13.0.0.tgz#4f8d56b59e9cee8b37b8db6b48c26d7faf33762f"
+ integrity sha512-W/pxhesVEk8747BEWJ+VGQ9ILHmCV27/pEwJ0hGny1wqVquUR8SxvScRCbUjHCB1YtWX4dEnOPXOS9CLH/CX7A==
+
+"@commitlint/parse@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-13.1.0.tgz#b88764be36527a468531e1b8dd2d95693ff9ba34"
+ integrity sha512-xFybZcqBiKVjt6vTStvQkySWEUYPI0AcO4QQELyy29o8EzYZqWkhUfrb7K61fWiHsplWL1iL6F3qCLoxSgTcrg==
+ dependencies:
+ "@commitlint/types" "^13.1.0"
+ conventional-changelog-angular "^5.0.11"
+ conventional-commits-parser "^3.0.0"
+
+"@commitlint/read@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/read/-/read-13.1.0.tgz#ccb65426b1228b8a598ed36966722d19756eea41"
+ integrity sha512-NrVe23GMKyL6i1yDJD8IpqCBzhzoS3wtLfDj8QBzc01Ov1cYBmDojzvBklypGb+MLJM1NbzmRM4PR5pNX0U/NQ==
+ dependencies:
+ "@commitlint/top-level" "^13.0.0"
+ "@commitlint/types" "^13.1.0"
+ fs-extra "^10.0.0"
+ git-raw-commits "^2.0.0"
+
+"@commitlint/resolve-extends@^13.0.0":
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-13.0.0.tgz#a38fcd2474483bf9ec6e1e901b27b8a23abe7d73"
+ integrity sha512-1SyaE+UOsYTkQlTPUOoj4NwxQhGFtYildVS/d0TJuK8a9uAJLw7bhCLH2PEeH5cC2D1do4Eqhx/3bLDrSLH3hg==
+ dependencies:
+ import-fresh "^3.0.0"
+ lodash "^4.17.19"
+ resolve-from "^5.0.0"
+ resolve-global "^1.0.0"
+
+"@commitlint/rules@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-13.1.0.tgz#04f5aaf952884364ebf4e899ec440e3985f0e580"
+ integrity sha512-b6F+vBqEXsHVghrhomG0Y6YJimHZqkzZ0n5QEpk03dpBXH2OnsezpTw5e+GvbyYCc7PutGbYVQkytuv+7xCxYA==
+ dependencies:
+ "@commitlint/ensure" "^13.1.0"
+ "@commitlint/message" "^13.0.0"
+ "@commitlint/to-lines" "^13.0.0"
+ "@commitlint/types" "^13.1.0"
+ execa "^5.0.0"
+
+"@commitlint/to-lines@^13.0.0":
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-13.0.0.tgz#5937dd287e3a4f984580ea94bdb994132169a780"
+ integrity sha512-mzxWwCio1M4/kG9/69TTYqrraQ66LmtJCYTzAZdZ2eJX3I5w52pSjyP/DJzAUVmmJCYf2Kw3s+RtNVShtnZ+Rw==
+
+"@commitlint/top-level@^13.0.0":
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-13.0.0.tgz#f8e1d1425240cd72c600e4da5716418c4ea0bda2"
+ integrity sha512-baBy3MZBF28sR93yFezd4a5TdHsbXaakeladfHK9dOcGdXo9oQe3GS5hP3BmlN680D6AiQSN7QPgEJgrNUWUCg==
+ dependencies:
+ find-up "^5.0.0"
+
+"@commitlint/types@^13.1.0":
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/@commitlint/types/-/types-13.1.0.tgz#12cfb6e932372b1816af8900e2d10694add28191"
+ integrity sha512-zcVjuT+OfKt8h91vhBxt05RMcTGEx6DM7Q9QZeuMbXFk6xgbsSEDMMapbJPA1bCZ81fa/1OQBijSYPrKvtt06g==
+ dependencies:
+ chalk "^4.0.0"
+
+"@eslint/eslintrc@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
+ integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^13.9.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@humanwhocodes/config-array@^0.5.0":
+ version "0.5.0"
+ resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
+ integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.0"
+ debug "^4.1.1"
+ minimatch "^3.0.4"
+
+"@humanwhocodes/object-schema@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf"
+ integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==
+
+"@intlify/core-base@9.2.0-beta.4":
+ version "9.2.0-beta.4"
+ resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.0-beta.4.tgz#e3077440327ae7a6012d3f0efde9c747bacf8f25"
+ integrity sha512-1az96+hjwyPfrOiAYRZPwVYbnnbGTcQRDrcAtWmSdCM6FQ/Fv6+o11SA6dRjoGEyetDsSfqezh4iIpT2bx8U3g==
+ dependencies:
+ "@intlify/devtools-if" "9.2.0-beta.4"
+ "@intlify/message-compiler" "9.2.0-beta.4"
+ "@intlify/shared" "9.2.0-beta.4"
+ "@intlify/vue-devtools" "9.2.0-beta.4"
+
+"@intlify/devtools-if@9.2.0-beta.4":
+ version "9.2.0-beta.4"
+ resolved "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.0-beta.4.tgz#424af20cae38a4b351852b0be42ca98b831554fd"
+ integrity sha512-vRAeZAu7dy3hiU3Ni8EhpH2g+UVSP0NyyKOLs9vvYM+1cy0j6jf+rWGFj1N6l2UwM09YbuJ2K4dAcOVmplM2ig==
+ dependencies:
+ "@intlify/shared" "9.2.0-beta.4"
+
+"@intlify/message-compiler@9.2.0-beta.4":
+ version "9.2.0-beta.4"
+ resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.0-beta.4.tgz#5262f25a62e34a7f97308db5845544615ba503dc"
+ integrity sha512-6zb2elDXCAzMYS79kmGwlZnnlTXPqL1BxV19vXH4W2RRR3WSbJmy3sRrjm6u8ZhivN8DT4SwmaIQxOIfL1a0cQ==
+ dependencies:
+ "@intlify/shared" "9.2.0-beta.4"
+ source-map "0.6.1"
+
+"@intlify/shared@9.2.0-beta.4":
+ version "9.2.0-beta.4"
+ resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.0-beta.4.tgz#a2302ffcd1f204bb5b00f3d9ea3bf013ef080595"
+ integrity sha512-Qe1QB4y594PjAOS3hWjK0tMGmpLPHb7ZksgR+u1wgpdVMrdL5er0vuPa1HGHF44ino1LK+Cbc0gdcWbgNutteg==
+
+"@intlify/vue-devtools@9.2.0-beta.4":
+ version "9.2.0-beta.4"
+ resolved "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.0-beta.4.tgz#f339d72b2a7a46edfbe26231573985a30e056b20"
+ integrity sha512-fOWS2LoiOascsT3hB9vC0FUCvgKqtiCZuU6W9Mw/+CqhxiBJM5yL4YaivYBoPDCq+Ql6pepd+pbKDd1tLMV73Q==
+ dependencies:
+ "@intlify/core-base" "9.2.0-beta.4"
+ "@intlify/shared" "9.2.0-beta.4"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@popperjs/core@^2.10.1":
+ version "2.10.2"
+ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz#0798c03351f0dea1a5a4cabddf26a55a7cbee590"
+ integrity sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==
+
+"@rollup/plugin-node-resolve@^13.0.4":
+ version "13.0.4"
+ resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz#b10222f4145a019740acb7738402130d848660c0"
+ integrity sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==
+ dependencies:
+ "@rollup/pluginutils" "^3.1.0"
+ "@types/resolve" "1.17.1"
+ builtin-modules "^3.1.0"
+ deepmerge "^4.2.2"
+ is-module "^1.0.0"
+ resolve "^1.19.0"
+
+"@rollup/pluginutils@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
+ integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
+ dependencies:
+ "@types/estree" "0.0.39"
+ estree-walker "^1.0.1"
+ picomatch "^2.2.2"
+
+"@rollup/pluginutils@^4.1.0", "@rollup/pluginutils@^4.1.1":
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec"
+ integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@stylelint/postcss-css-in-js@^0.37.2":
+ version "0.37.2"
+ resolved "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2"
+ integrity sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==
+ dependencies:
+ "@babel/core" ">=7.9.0"
+
+"@stylelint/postcss-markdown@^0.36.2":
+ version "0.36.2"
+ resolved "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391"
+ integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==
+ dependencies:
+ remark "^13.0.0"
+ unist-util-find-all-after "^3.0.2"
+
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+
+"@types/element-resize-detector@^1.1.3":
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/@types/element-resize-detector/-/element-resize-detector-1.1.3.tgz#0154ef4117305d26ab7a5ac16b83ee51f6b9bb8c"
+ integrity sha512-rqmeHxzNMPar/3IbdQRm+mydv8KlEXUtcp5M47rbZUEjslTjg+bT5+OXCknTCIy1AfvNR0Kio44iMY2zUH65CQ==
+
+"@types/estree@0.0.39":
+ version "0.0.39"
+ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
+
+"@types/estree@^0.0.48":
+ version "0.0.48"
+ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74"
+ integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==
+
+"@types/json-schema@^7.0.7":
+ version "7.0.9"
+ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
+ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
+
+"@types/mdast@^3.0.0":
+ version "3.0.10"
+ resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
+ integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/minimatch@^3.0.3":
+ version "3.0.5"
+ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
+ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+
+"@types/minimist@^1.2.0":
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
+ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
+
+"@types/mockjs@^1.0.3", "@types/mockjs@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/@types/mockjs/-/mockjs-1.0.4.tgz#e706951d5e33b4f0a4bb73b1f8b124e26f081de0"
+ integrity sha512-gK20xPqJhzMIitechVbvfnAk+oBIxVRnWrihJpRYHMI6UHCB/cvWgJa+dy6trRwQLE3AbtAJnXpm7pn6blG8sA==
+
+"@types/node@*":
+ version "16.9.1"
+ resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708"
+ integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==
+
+"@types/node@^14.14.14":
+ version "14.17.16"
+ resolved "https://registry.npmjs.org/@types/node/-/node-14.17.16.tgz#2b9252bd4fdf0393696190cd9550901dd967c777"
+ integrity sha512-WiFf2izl01P1CpeY8WqFAeKWwByMueBEkND38EcN8N68qb0aDG3oIS1P5MhAX5kUdr469qRyqsY/MjanLjsFbQ==
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.1"
+ resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
+ integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
+
+"@types/nprogress@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.0.tgz#86c593682d4199212a0509cc3c4d562bbbd6e45f"
+ integrity sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/resolve@1.17.1":
+ version "1.17.1"
+ resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
+ integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
+ dependencies:
+ "@types/node" "*"
+
+"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+
+"@typescript-eslint/eslint-plugin@^4.31.0":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.1.tgz#e938603a136f01dcabeece069da5fb2e331d4498"
+ integrity sha512-UDqhWmd5i0TvPLmbK5xY3UZB0zEGseF+DHPghZ37Sb83Qd3p8ujhvAtkU4OF46Ka5Pm5kWvFIx0cCTBFKo0alA==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.31.1"
+ "@typescript-eslint/scope-manager" "4.31.1"
+ debug "^4.3.1"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^3.1.0"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/experimental-utils@4.31.1":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.1.tgz#0c900f832f270b88e13e51753647b02d08371ce5"
+ integrity sha512-NtoPsqmcSsWty0mcL5nTZXMf7Ei0Xr2MT8jWjXMVgRK0/1qeQ2jZzLFUh4QtyJ4+/lPUyMw5cSfeeME+Zrtp9Q==
+ dependencies:
+ "@types/json-schema" "^7.0.7"
+ "@typescript-eslint/scope-manager" "4.31.1"
+ "@typescript-eslint/types" "4.31.1"
+ "@typescript-eslint/typescript-estree" "4.31.1"
+ eslint-scope "^5.1.1"
+ eslint-utils "^3.0.0"
+
+"@typescript-eslint/parser@^4.31.0":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.1.tgz#8f9a2672033e6f6d33b1c0260eebdc0ddf539064"
+ integrity sha512-dnVZDB6FhpIby6yVbHkwTKkn2ypjVIfAR9nh+kYsA/ZL0JlTsd22BiDjouotisY3Irmd3OW1qlk9EI5R8GrvRQ==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.31.1"
+ "@typescript-eslint/types" "4.31.1"
+ "@typescript-eslint/typescript-estree" "4.31.1"
+ debug "^4.3.1"
+
+"@typescript-eslint/scope-manager@4.31.1":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.1.tgz#0c21e8501f608d6a25c842fcf59541ef4f1ab561"
+ integrity sha512-N1Uhn6SqNtU2XpFSkD4oA+F0PfKdWHyr4bTX0xTj8NRx1314gBDRL1LUuZd5+L3oP+wo6hCbZpaa1in6SwMcVQ==
+ dependencies:
+ "@typescript-eslint/types" "4.31.1"
+ "@typescript-eslint/visitor-keys" "4.31.1"
+
+"@typescript-eslint/types@4.31.1":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.1.tgz#5f255b695627a13401d2fdba5f7138bc79450d66"
+ integrity sha512-kixltt51ZJGKENNW88IY5MYqTBA8FR0Md8QdGbJD2pKZ+D5IvxjTYDNtJPDxFBiXmka2aJsITdB1BtO1fsgmsQ==
+
+"@typescript-eslint/typescript-estree@4.31.1":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.1.tgz#4a04d5232cf1031232b7124a9c0310b577a62d17"
+ integrity sha512-EGHkbsUvjFrvRnusk6yFGqrqMBTue5E5ROnS5puj3laGQPasVUgwhrxfcgkdHNFECHAewpvELE1Gjv0XO3mdWg==
+ dependencies:
+ "@typescript-eslint/types" "4.31.1"
+ "@typescript-eslint/visitor-keys" "4.31.1"
+ debug "^4.3.1"
+ globby "^11.0.3"
+ is-glob "^4.0.1"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/visitor-keys@4.31.1":
+ version "4.31.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.1.tgz#f2e7a14c7f20c4ae07d7fc3c5878c4441a1da9cc"
+ integrity sha512-PCncP8hEqKw6SOJY+3St4LVtoZpPPn+Zlpm7KW5xnviMhdqcsBty4Lsg4J/VECpJjw1CkROaZhH4B8M1OfnXTQ==
+ dependencies:
+ "@typescript-eslint/types" "4.31.1"
+ eslint-visitor-keys "^2.0.0"
+
+"@vitejs/plugin-vue-jsx@^1.1.7":
+ version "1.1.8"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.1.8.tgz#c7b9efd94efe8801635f755b6fd0d0a3a70cf596"
+ integrity sha512-2ah1PuLf2fFdfJO91VLOPNHlNkhpOEgOY0/yNjJwhGNdWec5f2D4hrGdf4vUFIFcNw6D6SXEUhE4Fva5+TmKLA==
+ dependencies:
+ "@babel/core" "^7.14.8"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
+ "@babel/plugin-transform-typescript" "^7.14.6"
+ "@rollup/pluginutils" "^4.1.1"
+ "@vue/babel-plugin-jsx" "^1.0.6"
+ hash-sum "^2.0.0"
+
+"@vitejs/plugin-vue@^1.6.0":
+ version "1.6.2"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.6.2.tgz#40dfe314cff610d4dd027a0b4ea2a93a257f3fc9"
+ integrity sha512-Pf+dqkT4pWPfziPm51VtDXsPwE74CEGRiK6Vgm5EDBewHw1EgcxG7V2ZI/Yqj5gcDy5nVtjgx0AbsTL+F3gddg==
+
+"@vue/babel-helper-vue-transform-on@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc"
+ integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==
+
+"@vue/babel-plugin-jsx@^1.0.6":
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.7.tgz#22d6c84ef8db5ac13db971476a55cc5215902168"
+ integrity sha512-B5ctmlVk+vfyIV6PuvQkRB512c6LX2BUvJdNP9gOcllnpg9yrls9bDi7b3+tkAdT8+w1OoWsuJHHEV0Ntd67KQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.0.0"
+ "@babel/template" "^7.0.0"
+ "@babel/traverse" "^7.0.0"
+ "@babel/types" "^7.0.0"
+ "@vue/babel-helper-vue-transform-on" "^1.0.2"
+ camelcase "^6.0.0"
+ html-tags "^3.1.0"
+ svg-tags "^1.0.0"
+
+"@vue/compiler-core@3.2.11":
+ version "3.2.11"
+ resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.11.tgz#10af3777dba303ee7aae668029f131cb90391bee"
+ integrity sha512-bcbsLx5XyQg8WDDEGwmpX0BfEfv82wIs9fWFelpyVhNRGMaABvUTalYINyfhVT+jOqNaD4JBhJiVKd/8TmsHWg==
+ dependencies:
+ "@babel/parser" "^7.15.0"
+ "@babel/types" "^7.15.0"
+ "@vue/shared" "3.2.11"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-core@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.20.tgz#af5a3c5237818835b0d0be837eb5885a8d21c160"
+ integrity sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==
+ dependencies:
+ "@babel/parser" "^7.15.0"
+ "@vue/shared" "3.2.20"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.2.11":
+ version "3.2.11"
+ resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.11.tgz#d066f8e1f1812b4e881593819ade0fe6d654c776"
+ integrity sha512-DNvhUHI/1Hn0/+ZYDYGAuDGasUm+XHKC3FE4GqkNCTO/fcLaJMRg/7eT1m1lkc7jPffUwwfh1rZru5mwzOjrNw==
+ dependencies:
+ "@vue/compiler-core" "3.2.11"
+ "@vue/shared" "3.2.11"
+
+"@vue/compiler-dom@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.20.tgz#8e0ef354449c0faf41519b00bfc2045eae01dcb5"
+ integrity sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==
+ dependencies:
+ "@vue/compiler-core" "3.2.20"
+ "@vue/shared" "3.2.20"
+
+"@vue/compiler-sfc@3.2.20", "@vue/compiler-sfc@^3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.20.tgz#2d7668e76f066c566dd7c09c15c9acce4e876e0a"
+ integrity sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==
+ dependencies:
+ "@babel/parser" "^7.15.0"
+ "@vue/compiler-core" "3.2.20"
+ "@vue/compiler-dom" "3.2.20"
+ "@vue/compiler-ssr" "3.2.20"
+ "@vue/ref-transform" "3.2.20"
+ "@vue/shared" "3.2.20"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-sfc@^3.0.11":
+ version "3.2.11"
+ resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.11.tgz#628fa12238760d9b9b339ac2e125a759224fadbf"
+ integrity sha512-cUIaS8mgJrQ6yucj2AupWAwBRITK3W/a8wCOn9g5fJGtOl8h4APY8vN3lzP8HIJDyEeRF3I8SfRhL+oX97kSnw==
+ dependencies:
+ "@babel/parser" "^7.15.0"
+ "@babel/types" "^7.15.0"
+ "@types/estree" "^0.0.48"
+ "@vue/compiler-core" "3.2.11"
+ "@vue/compiler-dom" "3.2.11"
+ "@vue/compiler-ssr" "3.2.11"
+ "@vue/ref-transform" "3.2.11"
+ "@vue/shared" "3.2.11"
+ consolidate "^0.16.0"
+ estree-walker "^2.0.2"
+ hash-sum "^2.0.0"
+ lru-cache "^5.1.1"
+ magic-string "^0.25.7"
+ merge-source-map "^1.1.0"
+ postcss "^8.1.10"
+ postcss-modules "^4.0.0"
+ postcss-selector-parser "^6.0.4"
+ source-map "^0.6.1"
+
+"@vue/compiler-ssr@3.2.11":
+ version "3.2.11"
+ resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.11.tgz#702cef3429651645bdbe09fe5962803b5a621abb"
+ integrity sha512-+ptAdUlFDij+Z0VGCbRRkxQlNev5LkbZAntvkxrFjc08CTMhZmiV4Js48n2hAmuSXaKNEpmGkDGU26c/vf1+xw==
+ dependencies:
+ "@vue/compiler-dom" "3.2.11"
+ "@vue/shared" "3.2.11"
+
+"@vue/compiler-ssr@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.20.tgz#9cceb6261d9932cb5568202610c1c28f86c5e521"
+ integrity sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==
+ dependencies:
+ "@vue/compiler-dom" "3.2.20"
+ "@vue/shared" "3.2.20"
+
+"@vue/devtools-api@^6.0.0-beta.13", "@vue/devtools-api@^6.0.0-beta.14":
+ version "6.0.0-beta.15"
+ resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d"
+ integrity sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA==
+
+"@vue/devtools-api@^6.0.0-beta.18":
+ version "6.0.0-beta.18"
+ resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.18.tgz#84c0aff9289a57294cb97490811f69e8a0a67f8a"
+ integrity sha512-56vRhO7nXWWFYTx520BQSDlQH5VYpwy62hFDEqi2yHHEBpEqseOP5WYQusq7BEW3DXSY9E9cfPVR5CFtJbKuMg==
+
+"@vue/eslint-config-prettier@^6.0.0":
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz#ad5912b308f4ae468458e02a2b05db0b9d246700"
+ integrity sha512-wFQmv45c3ige5EA+ngijq40YpVcIkAy0Lihupnsnd1Dao5CBbPyfCzqtejFLZX1EwH/kCJdpz3t6s+5wd3+KxQ==
+ dependencies:
+ eslint-config-prettier "^6.0.0"
+
+"@vue/eslint-config-typescript@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-7.0.0.tgz#220c70c2edf7a253e739298525f4d401b8ef0038"
+ integrity sha512-UxUlvpSrFOoF8aQ+zX1leYiEBEm7CZmXYn/ZEM1zwSadUzpamx56RB4+Htdjisv1mX2tOjBegNUqH3kz2OL+Aw==
+ dependencies:
+ vue-eslint-parser "^7.0.0"
+
+"@vue/reactivity@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.20.tgz#81fe1c368e7f20bc0ec1dec1045bbee253582de8"
+ integrity sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==
+ dependencies:
+ "@vue/shared" "3.2.20"
+
+"@vue/ref-transform@3.2.11":
+ version "3.2.11"
+ resolved "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.11.tgz#4d282b9570d1485a73e7bf5d57cce27b4a7aa690"
+ integrity sha512-7rX0YsfYb7+1PeKPME1tQyUQcQgt0sIXRRnPD1Vw8Zs2KIo90YLy9CrvwalcRCxGw0ScsjBEhVjJtWIT79TElg==
+ dependencies:
+ "@babel/parser" "^7.15.0"
+ "@vue/compiler-core" "3.2.11"
+ "@vue/shared" "3.2.11"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/ref-transform@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.20.tgz#2a59ec90caf8e5c7336776a0900bff0a8b81c090"
+ integrity sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==
+ dependencies:
+ "@babel/parser" "^7.15.0"
+ "@vue/compiler-core" "3.2.20"
+ "@vue/shared" "3.2.20"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/runtime-core@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.20.tgz#8f63e956a3f88fb772541443c45a7701211012cb"
+ integrity sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==
+ dependencies:
+ "@vue/reactivity" "3.2.20"
+ "@vue/shared" "3.2.20"
+
+"@vue/runtime-dom@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.20.tgz#8aa56ae6c30f9cd4a71ca0e9ec3c4bdc67148d15"
+ integrity sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==
+ dependencies:
+ "@vue/runtime-core" "3.2.20"
+ "@vue/shared" "3.2.20"
+ csstype "^2.6.8"
+
+"@vue/server-renderer@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.20.tgz#705e07ae9425132b2b6227d308a51a13f4d4ec81"
+ integrity sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.20"
+ "@vue/shared" "3.2.20"
+
+"@vue/shared@3.2.11":
+ version "3.2.11"
+ resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.11.tgz#01899f54949caf1ac241de397bd17069632574de"
+ integrity sha512-ovfXAsSsCvV9JVceWjkqC/7OF5HbgLOtCWjCIosmPGG8lxbPuavhIxRH1dTx4Dg9xLgRTNLvI3pVxG4ItQZekg==
+
+"@vue/shared@3.2.20":
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz#53746961f731a8ea666e3316271e944238dc31db"
+ integrity sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==
+
+"@vueuse/core@^6.5.3":
+ version "6.5.3"
+ resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-6.5.3.tgz#15848eaccad18652df4cb4b6ccae7bd7921a0c7e"
+ integrity sha512-o3CTu4nEqs371sDY5qLBX0r4QOm6GVpm3ApQc2Y+p8OMI2rRGartQo8xRykpUfsyq602A+SVtm/wxIWBkD/KCQ==
+ dependencies:
+ "@vueuse/shared" "6.5.3"
+ vue-demi "*"
+
+"@vueuse/core@~6.1.0":
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/@vueuse/core/-/core-6.1.0.tgz#8137c291cf49b11c2deda4d5079096e55b36fc28"
+ integrity sha512-6KienU5QOWKuDqvHytep14274IGKyLlACzXjifOrgDQMkqvWZIUnDhpckT/1+O8n8DN59d5wzzICZI/2sfGCyg==
+ dependencies:
+ "@vueuse/shared" "6.1.0"
+ vue-demi "*"
+
+"@vueuse/shared@6.1.0":
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-6.1.0.tgz#1375fd41acefe52f9a1842f3c6a8a348786535ba"
+ integrity sha512-teW0TUQryGnEprHeOI6oH8NPVJBirknxksEiNCtdEjIi8W7JSTg8JPO+e1XlGI6ly24NDlDXUDYaHJayiaXjuw==
+ dependencies:
+ vue-demi "*"
+
+"@vueuse/shared@6.5.3":
+ version "6.5.3"
+ resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-6.5.3.tgz#6503fa4bfbf45d0616bacedb8a4bd003f01da73b"
+ integrity sha512-ChOKu3mECyZeqGJ/gHVm0CaHoZK5/TwNZr1ZM/aqH+RaRNQvC1qkLf1/8PBugzN3yRgC3BtZ/M1kLpGe/BFylw==
+ dependencies:
+ vue-demi "*"
+
+JSONStream@^1.0.4:
+ version "1.3.5"
+ resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
+acorn-jsx@^5.2.0, acorn-jsx@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn@^7.1.1, acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv@^6.10.0, ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^8.0.1:
+ version "8.6.3"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764"
+ integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+animate.css@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz#614ec5a81131d7e4dc362a58143f7406abd68075"
+ integrity sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^4.3.0:
+ version "4.3.2"
+ resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-regex@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+array-differ@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
+ integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
+
+array-ify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
+ integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+arrify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+ integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+async-validator@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/async-validator/-/async-validator-4.0.3.tgz#c8ecd6b28fc8e18b14be4ec7c704641f999d377d"
+ integrity sha512-LVoIbJNHPKsO7FMLamo88uxdrvayGkF3vLTMTeiN3CqAbP3qSafLRc6yx3Sq9lHkiEOLNpoA2jwwnfGDdu1SMQ==
+
+autoprefixer@^10.2.4:
+ version "10.3.4"
+ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.4.tgz#29efe5d19f51c281953178ddb5b84c5f1ca24c86"
+ integrity sha512-EKjKDXOq7ug+jagLzmnoTRpTT0q1KVzEJqrJd0hCBa7FiG0WbFOBCcJCy2QkW1OckpO3qgttA1aWjVbeIPAecw==
+ dependencies:
+ browserslist "^4.16.8"
+ caniuse-lite "^1.0.30001252"
+ colorette "^1.3.0"
+ fraction.js "^4.1.1"
+ normalize-range "^0.1.2"
+ postcss-value-parser "^4.1.0"
+
+autoprefixer@^9.8.6:
+ version "9.8.6"
+ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
+ integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
+ dependencies:
+ browserslist "^4.12.0"
+ caniuse-lite "^1.0.30001109"
+ colorette "^1.2.1"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^7.0.32"
+ postcss-value-parser "^4.1.0"
+
+await-to-js@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz#70929994185616f4675a91af6167eb61cc92868f"
+ integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==
+
+axios@^0.21.1:
+ version "0.21.4"
+ resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+ integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+ dependencies:
+ follow-redirects "^1.14.0"
+
+babel-plugin-transform-remove-console@^6.9.4:
+ version "6.9.4"
+ resolved "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780"
+ integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=
+
+bail@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
+ integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+balanced-match@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9"
+ integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
+
+batch-processor@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8"
+ integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bluebird@^3.7.2:
+ version "3.7.2"
+ resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.16.8:
+ version "4.17.0"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz#1fcd81ec75b41d6d4994fb0831b92ac18c01649c"
+ integrity sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==
+ dependencies:
+ caniuse-lite "^1.0.30001254"
+ colorette "^1.3.0"
+ electron-to-chromium "^1.3.830"
+ escalade "^3.1.1"
+ node-releases "^1.1.75"
+
+builtin-modules@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
+ integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase-keys@^6.2.2:
+ version "6.2.2"
+ resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
+ integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+ dependencies:
+ camelcase "^5.3.1"
+ map-obj "^4.0.0"
+ quick-lru "^4.0.1"
+
+camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
+ integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+
+caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001252, caniuse-lite@^1.0.30001254:
+ version "1.0.30001257"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz#150aaf649a48bee531104cfeda57f92ce587f6e5"
+ integrity sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==
+
+chalk@^2.0.0, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+character-entities-legacy@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
+ integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
+
+character-entities@^1.0.0:
+ version "1.2.4"
+ resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
+ integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
+
+character-reference-invalid@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
+ integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
+
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
+ integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-truncate@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
+ dependencies:
+ slice-ansi "^3.0.0"
+ string-width "^4.2.0"
+
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
+clone-regexp@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f"
+ integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==
+ dependencies:
+ is-regexp "^2.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+colorette@^1.2.1, colorette@^1.2.2, colorette@^1.3.0, colorette@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
+
+commander@*:
+ version "8.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz#37fe2bde301d87d47a53adeff8b5915db1381ca8"
+ integrity sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==
+
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
+compare-func@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3"
+ integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==
+ dependencies:
+ array-ify "^1.0.0"
+ dot-prop "^5.1.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+connect@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
+ integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
+ dependencies:
+ debug "2.6.9"
+ finalhandler "1.1.2"
+ parseurl "~1.3.3"
+ utils-merge "1.0.1"
+
+consolidate@^0.16.0:
+ version "0.16.0"
+ resolved "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16"
+ integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==
+ dependencies:
+ bluebird "^3.7.2"
+
+conventional-changelog-angular@^5.0.11:
+ version "5.0.13"
+ resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c"
+ integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==
+ dependencies:
+ compare-func "^2.0.0"
+ q "^1.5.1"
+
+conventional-changelog-conventionalcommits@^4.3.1:
+ version "4.6.1"
+ resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz#f4c0921937050674e578dc7875f908351ccf4014"
+ integrity sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==
+ dependencies:
+ compare-func "^2.0.0"
+ lodash "^4.17.15"
+ q "^1.5.1"
+
+conventional-commits-parser@^3.0.0:
+ version "3.2.2"
+ resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.2.tgz#190fb9900c6e02be0c0bca9b03d57e24982639fd"
+ integrity sha512-Jr9KAKgqAkwXMRHjxDwO/zOCDKod1XdAESHAGuJX38iZ7ZzVti/tvVoysO0suMsdAObp9NQ2rHSsSbnAqZ5f5g==
+ dependencies:
+ JSONStream "^1.0.4"
+ is-text-path "^1.0.1"
+ lodash "^4.17.15"
+ meow "^8.0.0"
+ split2 "^3.0.0"
+ through2 "^4.0.0"
+
+convert-source-map@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+cosmiconfig@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
+ integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+cross-env@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
+ dependencies:
+ cross-spawn "^7.0.1"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+css-select@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067"
+ integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^5.0.0"
+ domhandler "^4.2.0"
+ domutils "^2.6.0"
+ nth-check "^2.0.0"
+
+css-tree@^1.1.2, css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-what@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad"
+ integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+csso@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+csstype@^2.6.8:
+ version "2.6.18"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz#980a8b53085f34af313410af064f2bd241784218"
+ integrity sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==
+
+dargs@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
+ integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
+
+dayjs@^1.10.7:
+ version "1.10.7"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468"
+ integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==
+
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
+ dependencies:
+ ms "2.1.2"
+
+decamelize-keys@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
+ integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
+ dependencies:
+ decamelize "^1.1.0"
+ map-obj "^1.0.0"
+
+decamelize@^1.1.0, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+dom-serializer@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
+ integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+domelementtype@1, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domhandler@^4.2.0:
+ version "4.2.2"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f"
+ integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^2.6.0:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+dot-prop@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-to-chromium@^1.3.830:
+ version "1.3.840"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.840.tgz#3f2a1df97015d9b1db5d86a4c6bd4cdb920adcbb"
+ integrity sha512-yRoUmTLDJnkIJx23xLY7GbSvnmDCq++NSuxHDQ0jiyDJ9YZBUGJcrdUqm+ZwZFzMbCciVzfem2N2AWiHJcWlbw==
+
+element-plus@1.1.0-beta.20:
+ version "1.1.0-beta.20"
+ resolved "https://registry.npmjs.org/element-plus/-/element-plus-1.1.0-beta.20.tgz#59523c99a88ca4881d899ba8bb81c4a9273ed822"
+ integrity sha512-5rBrLzfKGz4urSxqKi1tihylyotSswMCKdXpCAJAfRggMjtS1NfqVtrCYEPdjphmP2JHsj8TisDvbRTScRKF0Q==
+ dependencies:
+ "@popperjs/core" "^2.10.1"
+ "@vueuse/core" "~6.1.0"
+ async-validator "^4.0.3"
+ dayjs "^1.10.7"
+ lodash "^4.17.21"
+ memoize-one "^5.2.1"
+ normalize-wheel-es "^1.1.0"
+ resize-observer-polyfill "^1.5.1"
+
+element-resize-detector@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.3.tgz#5078d9b99398fe4c589f8c8df94ff99e5d413ff3"
+ integrity sha512-+dhNzUgLpq9ol5tyhoG7YLoXL3ssjfFW+0gpszXPwRU6NjGr1fVHMEAF8fVzIiRJq57Nre0RFeIjJwI8Nh2NmQ==
+ dependencies:
+ batch-processor "1.0.0"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enquirer@^2.3.5, enquirer@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
+entities@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-module-lexer@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d"
+ integrity sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==
+
+esbuild-android-arm64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.4.tgz#5178a20d2b7aba741a31c19609f9e67b346996b9"
+ integrity sha512-elDJt+jNyoHFId0/dKsuVYUPke3EcquIyUwzJCH17a3ERglN3A9aMBI5zbz+xNZ+FbaDNdpn0RaJHCFLbZX+fA==
+
+esbuild-darwin-64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.4.tgz#7a3e66c8e1271b650541b25eed65c84f3564a69d"
+ integrity sha512-zJQGyHRAdZUXlRzbN7W+7ykmEiGC+bq3Gc4GxKYjjWTgDRSEly98ym+vRNkDjXwXYD3gGzSwvH35+MiHAtWvLA==
+
+esbuild-darwin-arm64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.4.tgz#793feca6032b2a57ef291eb9b2d33768d60a49d6"
+ integrity sha512-r8oYvAtqSGq8HNTZCAx4TdLE7jZiGhX9ooGi5AQAey37MA6XNaP8ZNlw9OCpcgpx3ryU2WctXwIqPzkHO7a8dg==
+
+esbuild-freebsd-64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.4.tgz#294aec3c2cf4b41fb6900212fc9c33dd8fbbb4a2"
+ integrity sha512-u9DRGkn09EN8+lCh6z7FKle7awi17PJRBuAKdRNgSo5ZrH/3m+mYaJK2PR2URHMpAfXiwJX341z231tSdVe3Yw==
+
+esbuild-freebsd-arm64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.4.tgz#09fe66c751c12f9b976976b1d83f3de594cb2787"
+ integrity sha512-q3B2k68Uf6gfjATjcK16DqxvjqRQkHL8aPoOfj4op+lSqegdXvBacB1d8jw8PxbWJ8JHpdTLdAVUYU80kotQXA==
+
+esbuild-linux-32@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.4.tgz#a9f0793d7bcc9cef4f4ffa4398c525877fba5839"
+ integrity sha512-UUYJPHSiKAO8KoN3Ls/iZtgDLZvK5HarES96aolDPWZnq9FLx4dIHM/x2z4Rxv9IYqQ/DxlPoE2Co1UPBIYYeA==
+
+esbuild-linux-64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.4.tgz#c0d0b4c9d62e3bbf8bdf2cece37403aa6d60fc2e"
+ integrity sha512-+RnohAKiiUW4UHLGRkNR1AnENW1gCuDWuygEtd4jxTNPIoeC7lbXGor7rtgjj9AdUzFgOEvAXyNNX01kJ8NueQ==
+
+esbuild-linux-arm64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.4.tgz#1292d97bfa64a08d12728f8a7837bf92776c779b"
+ integrity sha512-+A188cAdd6QuSRxMIwRrWLjgphQA0LDAQ/ECVlrPVJwnx+1i64NjDZivoqPYLOTkSPIKntiWwMhhf0U5/RrPHQ==
+
+esbuild-linux-arm@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.4.tgz#186cd9b8885ac132b9953a4a0afe668168debd10"
+ integrity sha512-BH5gKve4jglS7UPSsfwHSX79I5agC/lm4eKoRUEyo8lwQs89frQSRp2Xup+6SFQnxt3md5EsKcd2Dbkqeb3gPA==
+
+esbuild-linux-mips64le@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.4.tgz#42049bf72bc586817b4a51cc9e32148d13e5e807"
+ integrity sha512-0xkwtPaUkG5xMTFGaQPe1AadSe5QAiQuD4Gix1O9k5Xo/U8xGIkw9UFUTvfEUeu71vFb6ZgsIacfP1NLoFjWNw==
+
+esbuild-linux-ppc64le@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.4.tgz#adf1ce2ef2302757c4383887da6ac4dd25be9d4f"
+ integrity sha512-E1+oJPP7A+j23GPo3CEpBhGwG1bni4B8IbTA3/3rvzjURwUMZdcN3Fhrz24rnjzdLSHmULtOE4VsbT42h1Om4Q==
+
+esbuild-openbsd-64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.4.tgz#1c8122101898c52a20c8786935cf3eb7a19b83b4"
+ integrity sha512-xEkI1o5HYxDzbv9jSox0EsDxpwraG09SRiKKv0W8pH6O3bt+zPSlnoK7+I7Q69tkvONkpIq5n2o+c55uq0X7cw==
+
+esbuild-sunos-64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.4.tgz#4ec95faa14a60f295fe485bebffefff408739337"
+ integrity sha512-bjXUMcODMnB6hQicLBBmmnBl7OMDyVpFahKvHGXJfDChIi5udiIRKCmFUFIRn+AUAKVlfrofRKdyPC7kBsbvGQ==
+
+esbuild-windows-32@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.4.tgz#3182c380487b797b04d0ec2c80c2945666869080"
+ integrity sha512-z4CH07pfyVY0XF98TCsGmLxKCl0kyvshKDbdpTekW9f2d+dJqn5mmoUyWhpSVJ0SfYWJg86FoD9nMbbaMVyGdg==
+
+esbuild-windows-64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.4.tgz#b9e995f92d81f433a04f33611e603e82f9232e69"
+ integrity sha512-uVL11vORRPjocGLYam67rwFLd0LvkrHEs+JG+1oJN4UD9MQmNGZPa4gBHo6hDpF+kqRJ9kXgQSeDqUyRy0tj/Q==
+
+esbuild-windows-arm64@0.13.4:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.4.tgz#fb239532f07b764d158f4cc787178ef4c6fadb5c"
+ integrity sha512-vA6GLvptgftRcDcWngD5cMlL4f4LbL8JjU2UMT9yJ0MT5ra6hdZNFWnOeOoEtY4GtJ6OjZ0i+81sTqhAB0fMkg==
+
+esbuild@0.11.3:
+ version "0.11.3"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.11.3.tgz#b57165b907be4ffba651f6450538ce8d8c1d5eb0"
+ integrity sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==
+
+esbuild@^0.13.2:
+ version "0.13.4"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz#ce2deb56c4fb360938311cbfc67f8e467bb6841b"
+ integrity sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==
+ optionalDependencies:
+ esbuild-android-arm64 "0.13.4"
+ esbuild-darwin-64 "0.13.4"
+ esbuild-darwin-arm64 "0.13.4"
+ esbuild-freebsd-64 "0.13.4"
+ esbuild-freebsd-arm64 "0.13.4"
+ esbuild-linux-32 "0.13.4"
+ esbuild-linux-64 "0.13.4"
+ esbuild-linux-arm "0.13.4"
+ esbuild-linux-arm64 "0.13.4"
+ esbuild-linux-mips64le "0.13.4"
+ esbuild-linux-ppc64le "0.13.4"
+ esbuild-openbsd-64 "0.13.4"
+ esbuild-sunos-64 "0.13.4"
+ esbuild-windows-32 "0.13.4"
+ esbuild-windows-64 "0.13.4"
+ esbuild-windows-arm64 "0.13.4"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-config-prettier@^6.0.0:
+ version "6.15.0"
+ resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
+ integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
+ dependencies:
+ get-stdin "^6.0.0"
+
+eslint-plugin-prettier@^3.4.0:
+ version "3.4.1"
+ resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5"
+ integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+eslint-plugin-vue@^7.17.0:
+ version "7.17.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.17.0.tgz#41e0bdb5effca5ee26f087f924be987eb41ef573"
+ integrity sha512-Rq5R2QetDCgC+kBFQw1+aJ5B93tQ4xqZvoCUxuIzwTonngNArsdP8ChM8PowIzsJvRtWl4ltGh/bZcN3xhFWSw==
+ dependencies:
+ eslint-utils "^2.1.0"
+ natural-compare "^1.4.0"
+ semver "^6.3.0"
+ vue-eslint-parser "^7.10.0"
+
+eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
+ integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
+ dependencies:
+ eslint-visitor-keys "^2.0.0"
+
+eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
+ integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+
+eslint@^7.30.0:
+ version "7.32.0"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
+ integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.4.3"
+ "@humanwhocodes/config-array" "^0.5.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.1.2"
+ globals "^13.6.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.9"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
+ integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.1.0"
+
+espree@^7.3.0, espree@^7.3.1:
+ version "7.3.1"
+ resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
+ integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^1.3.0"
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
+estree-walker@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
+ integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+
+estree-walker@^2.0.1, estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+execa@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+execa@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.0"
+ human-signals "^2.1.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.1"
+ onetime "^5.1.2"
+ signal-exit "^3.0.3"
+ strip-final-newline "^2.0.0"
+
+execall@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45"
+ integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==
+ dependencies:
+ clone-regexp "^2.1.0"
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
+fast-glob@^3.1.1, fast-glob@^3.2.5, fast-glob@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
+ integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastest-levenshtein@^1.0.12:
+ version "1.0.12"
+ resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
+ integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
+
+fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ 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"
+
+find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.2.2"
+ resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561"
+ integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
+
+follow-redirects@^1.14.0:
+ version "1.14.4"
+ resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
+ integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==
+
+font-awesome@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
+ integrity sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=
+
+fraction.js@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff"
+ integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==
+
+fs-extra@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
+ integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+generic-names@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872"
+ integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==
+ dependencies:
+ loader-utils "^1.1.0"
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
+get-stdin@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
+ integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+git-raw-commits@^2.0.0:
+ version "2.0.10"
+ resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1"
+ integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==
+ dependencies:
+ dargs "^7.0.0"
+ lodash "^4.17.15"
+ meow "^8.0.0"
+ split2 "^3.0.0"
+ through2 "^4.0.0"
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.1.3:
+ version "7.1.7"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
+ integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-dirs@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
+ dependencies:
+ ini "^1.3.4"
+
+global-modules@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^13.6.0, globals@^13.9.0:
+ version "13.11.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7"
+ integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==
+ dependencies:
+ type-fest "^0.20.2"
+
+globby@^11.0.3:
+ version "11.0.4"
+ resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
+ integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globjoin@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
+ integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=
+
+gonzales-pe@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3"
+ integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==
+ dependencies:
+ minimist "^1.2.5"
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.8"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+
+hard-rejection@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
+ integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-sum@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
+ integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+hosted-git-info@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961"
+ integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==
+ dependencies:
+ lru-cache "^6.0.0"
+
+html-tags@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
+ integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
+
+htmlparser2@^3.10.0:
+ version "3.10.1"
+ resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+human-signals@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
+husky@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff"
+ integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==
+
+icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+
+icss-utils@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
+ integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.4, ignore@^5.1.8:
+ version "5.1.8"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-lazy@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
+ integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@^1.3.4, ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+is-alphabetical@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
+ integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
+
+is-alphanumerical@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
+ integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
+ dependencies:
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-core-module@^2.2.0, is-core-module@^2.5.0:
+ version "2.6.0"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19"
+ integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==
+ dependencies:
+ has "^1.0.3"
+
+is-decimal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
+ integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hexadecimal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
+ integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
+
+is-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+ integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-obj@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
+ integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+
+is-plain-object@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-regexp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d"
+ integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==
+
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-text-path@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
+ integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=
+ dependencies:
+ text-extensions "^1.0.0"
+
+is-typedarray@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-unicode-supported@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+ integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
+kind-of@^6.0.2, kind-of@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+klona@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
+ integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
+
+known-css-properties@^0.21.0:
+ version "0.21.0"
+ resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz#15fbd0bbb83447f3ce09d8af247ed47c68ede80d"
+ integrity sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+lines-and-columns@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+lint-staged@^11.1.2:
+ version "11.1.2"
+ resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90"
+ integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w==
+ dependencies:
+ chalk "^4.1.1"
+ cli-truncate "^2.1.0"
+ commander "^7.2.0"
+ cosmiconfig "^7.0.0"
+ debug "^4.3.1"
+ enquirer "^2.3.6"
+ execa "^5.0.0"
+ listr2 "^3.8.2"
+ log-symbols "^4.1.0"
+ micromatch "^4.0.4"
+ normalize-path "^3.0.0"
+ please-upgrade-node "^3.2.0"
+ string-argv "0.3.1"
+ stringify-object "^3.3.0"
+
+listr2@^3.8.2:
+ version "3.12.1"
+ resolved "https://registry.npmjs.org/listr2/-/listr2-3.12.1.tgz#75e515b86c66b60baf253542cc0dced6b60fedaf"
+ integrity sha512-oB1DlXlCzGPbvWhqYBZUQEPJKqsmebQWofXG6Mpbe3uIvoNl8mctBEojyF13ZyqwQ91clCWXpwsWp+t98K4FOQ==
+ dependencies:
+ cli-truncate "^2.1.0"
+ colorette "^1.4.0"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.6.7"
+ through "^2.3.8"
+ wrap-ansi "^7.0.0"
+
+loader-utils@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash.truncate@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
+ integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+
+lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
+
+log-symbols@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
+ dependencies:
+ chalk "^4.1.0"
+ is-unicode-supported "^0.1.0"
+
+log-update@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+ dependencies:
+ ansi-escapes "^4.3.0"
+ cli-cursor "^3.1.0"
+ slice-ansi "^4.0.0"
+ wrap-ansi "^6.2.0"
+
+longest-streak@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
+ integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
+
+lowdb@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.nlark.com/lowdb/download/lowdb-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flowdb%2Fdownload%2Flowdb-3.0.0.tgz#c10ab4e7eb86f1cbe255e35e60ffb0c6f42049e0"
+ integrity sha1-wQq05+uG8cviVeNeYP+wxvQgSeA=
+ dependencies:
+ steno "^2.1.0"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.7:
+ version "0.25.7"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
+map-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-obj@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7"
+ integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==
+
+mathml-tag-names@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
+ integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
+
+mdast-util-from-markdown@^0.8.0:
+ version "0.8.5"
+ resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c"
+ integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-string "^2.0.0"
+ micromark "~2.11.0"
+ parse-entities "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+
+mdast-util-to-markdown@^0.6.0:
+ version "0.6.5"
+ resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe"
+ integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ longest-streak "^2.0.0"
+ mdast-util-to-string "^2.0.0"
+ parse-entities "^2.0.0"
+ repeat-string "^1.0.0"
+ zwitch "^1.0.0"
+
+mdast-util-to-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b"
+ integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+memoize-one@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
+ integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
+
+meow@^8.0.0:
+ version "8.1.2"
+ resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"
+ integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==
+ dependencies:
+ "@types/minimist" "^1.2.0"
+ 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.0"
+ read-pkg-up "^7.0.1"
+ redent "^3.0.0"
+ trim-newlines "^3.0.0"
+ type-fest "^0.18.0"
+ yargs-parser "^20.2.3"
+
+meow@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
+ integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
+ dependencies:
+ "@types/minimist" "^1.2.0"
+ 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.0"
+ read-pkg-up "^7.0.1"
+ redent "^3.0.0"
+ trim-newlines "^3.0.0"
+ type-fest "^0.18.0"
+ yargs-parser "^20.2.3"
+
+merge-source-map@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
+ integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+ dependencies:
+ source-map "^0.6.1"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromark@~2.11.0:
+ version "2.11.4"
+ resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a"
+ integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==
+ dependencies:
+ debug "^4.0.0"
+ parse-entities "^2.0.0"
+
+micromatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+min-indent@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
+ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist-options@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
+ integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+ kind-of "^6.0.3"
+
+minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+mitt@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd"
+ integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==
+
+mockjs@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/mockjs/-/mockjs-1.1.0.tgz#e6a0c378e91906dbaff20911cc0273b3c7d75b06"
+ integrity sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==
+ dependencies:
+ commander "*"
+
+mri@^1.1.5:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
+ integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+multimatch@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3"
+ integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==
+ dependencies:
+ "@types/minimatch" "^3.0.3"
+ array-differ "^3.0.0"
+ array-union "^2.1.0"
+ arrify "^2.0.1"
+ minimatch "^3.0.4"
+
+nanoid@^3.1.23:
+ version "3.1.25"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152"
+ integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==
+
+nanoid@^3.1.28:
+ version "3.1.29"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4"
+ integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+neo-async@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+node-releases@^1.1.75:
+ version "1.1.75"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe"
+ integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==
+
+normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-package-data@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
+ integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+ dependencies:
+ hosted-git-info "^4.0.1"
+ is-core-module "^2.5.0"
+ semver "^7.3.4"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
+
+normalize-selector@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03"
+ integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=
+
+normalize-wheel-es@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.1.0.tgz#db017af1dd5d4c6222c07ae38bc224049d25861e"
+ integrity sha512-gkcE5xzp8WkSGgu2HItXePGyh3qDOetgPYg0RnjclOIaWTCMB75NTrk0t6KVlbm6ShSikV3ykBFZMiR9GDkvkA==
+
+npm-run-path@^4.0.0, npm-run-path@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+nprogress@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
+ integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E=
+
+nth-check@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125"
+ integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==
+ dependencies:
+ boolbase "^1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+ integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.0, onetime@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-entities@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
+ integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
+ integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+path@^0.12.7:
+ version "0.12.7"
+ resolved "https://registry.npmjs.org/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f"
+ integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=
+ dependencies:
+ process "^0.11.1"
+ util "^0.10.3"
+
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
+ integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+
+pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinia@2.0.0-rc.10:
+ version "2.0.0-rc.10"
+ resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.0.0-rc.10.tgz#81e823931897a4cf5c53c113d0c0e63b7bba9973"
+ integrity sha512-WY0KQoHxSBylhGc6aBQKPFfAupYHWpI1QBQKJSyK9btwwMTVQpwCdePgPho+ZoEMl832jb7RwfI5TN1srV5VEA==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0-beta.18"
+ vue-demi "*"
+
+please-upgrade-node@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
+postcss-html@^0.36.0:
+ version "0.36.0"
+ resolved "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204"
+ integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==
+ dependencies:
+ htmlparser2 "^3.10.0"
+
+postcss-import@^14.0.0:
+ version "14.0.2"
+ resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz#60eff77e6be92e7b67fe469ec797d9424cae1aa1"
+ integrity sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-less@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad"
+ integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==
+ dependencies:
+ postcss "^7.0.14"
+
+postcss-media-query-parser@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
+ integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
+
+postcss-modules-extract-imports@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
+ integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
+
+postcss-modules-local-by-default@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
+ integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
+ dependencies:
+ icss-utils "^5.0.0"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
+ integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
+ dependencies:
+ postcss-selector-parser "^6.0.4"
+
+postcss-modules-values@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
+ integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
+ dependencies:
+ icss-utils "^5.0.0"
+
+postcss-modules@^4.0.0:
+ version "4.2.2"
+ resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5"
+ integrity sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg==
+ dependencies:
+ generic-names "^2.0.1"
+ icss-replace-symbols "^1.1.0"
+ lodash.camelcase "^4.3.0"
+ postcss-modules-extract-imports "^3.0.0"
+ postcss-modules-local-by-default "^4.0.0"
+ postcss-modules-scope "^3.0.0"
+ postcss-modules-values "^4.0.0"
+ string-hash "^1.1.1"
+
+postcss-resolve-nested-selector@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
+ integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=
+
+postcss-safe-parser@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96"
+ integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==
+ dependencies:
+ postcss "^7.0.26"
+
+postcss-sass@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3"
+ integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==
+ dependencies:
+ gonzales-pe "^4.3.0"
+ postcss "^7.0.21"
+
+postcss-scss@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383"
+ integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==
+ dependencies:
+ postcss "^7.0.6"
+
+postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5:
+ version "6.0.6"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
+ integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-sorting@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-5.0.1.tgz#10d5d0059eea8334dacc820c0121864035bc3f11"
+ integrity sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA==
+ dependencies:
+ lodash "^4.17.14"
+ postcss "^7.0.17"
+
+postcss-syntax@^0.36.2:
+ version "0.36.2"
+ resolved "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c"
+ integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
+ integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
+
+postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6:
+ version "7.0.36"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb"
+ integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==
+ dependencies:
+ chalk "^2.4.2"
+ source-map "^0.6.1"
+ supports-color "^6.1.0"
+
+postcss@^8.1.10, postcss@^8.2.6:
+ version "8.3.6"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea"
+ integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==
+ dependencies:
+ colorette "^1.2.2"
+ nanoid "^3.1.23"
+ source-map-js "^0.6.2"
+
+postcss@^8.3.8:
+ version "8.3.9"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31"
+ integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==
+ dependencies:
+ nanoid "^3.1.28"
+ picocolors "^0.2.1"
+ source-map-js "^0.6.2"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^2.3.2:
+ version "2.4.0"
+ resolved "https://registry.npmjs.org/prettier/-/prettier-2.4.0.tgz#85bdfe0f70c3e777cf13a4ffff39713ca6f64cba"
+ integrity sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==
+
+pretty-quick@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.1.tgz#93ca4e2dd38cc4e970e3f54a0ead317a25454688"
+ integrity sha512-ZYLGiMoV2jcaas3vTJrLvKAYsxDoXQBUn8OSTxkl67Fyov9lyXivJTl0+2WVh+y6EovGcw7Lm5ThYpH+Sh3XxQ==
+ dependencies:
+ chalk "^3.0.0"
+ execa "^4.0.0"
+ find-up "^4.1.0"
+ ignore "^5.1.4"
+ mri "^1.1.5"
+ multimatch "^4.0.0"
+
+process@^0.11.1:
+ version "0.11.10"
+ resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+q@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quick-lru@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
+ integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+
+read-cache@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=
+ dependencies:
+ pify "^2.3.0"
+
+read-pkg-up@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
+ integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
+ dependencies:
+ find-up "^4.1.0"
+ read-pkg "^5.2.0"
+ type-fest "^0.8.1"
+
+read-pkg@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
+ integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^5.0.0"
+ type-fest "^0.6.0"
+
+readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+redent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
+ integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
+ dependencies:
+ indent-string "^4.0.0"
+ strip-indent "^3.0.0"
+
+regexpp@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
+ integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
+
+remark-parse@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640"
+ integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==
+ dependencies:
+ mdast-util-from-markdown "^0.8.0"
+
+remark-stringify@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894"
+ integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==
+ dependencies:
+ mdast-util-to-markdown "^0.6.0"
+
+remark@^13.0.0:
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425"
+ integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==
+ dependencies:
+ remark-parse "^9.0.0"
+ remark-stringify "^9.0.0"
+ unified "^9.1.0"
+
+repeat-string@^1.0.0:
+ version "1.6.1"
+ resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+resize-observer-polyfill@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
+resolve-from@5.0.0, resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-global@1.0.0, resolve-global@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255"
+ integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==
+ dependencies:
+ global-dirs "^0.1.1"
+
+resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0:
+ version "1.20.0"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
+responsive-storage@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.npmjs.org/responsive-storage/-/responsive-storage-1.0.11.tgz#35d0c7825a0a3daed6c8ee0228a173f8aadbedd4"
+ integrity sha512-XY/21b7FKCXwBWGLuxp5KUQOAh8jOTsdfRMz0RVE9P+HhK4oYXKcNESDLxE1mD5MWPg/i+k4SGogro5daMrE9A==
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rollup@^2.57.0:
+ version "2.58.0"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb"
+ integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+rxjs@^6.6.7:
+ version "6.6.7"
+ resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+sass-loader@^12.1.0:
+ version "12.1.0"
+ resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201"
+ integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==
+ dependencies:
+ klona "^2.0.4"
+ neo-async "^2.6.2"
+
+sass@^1.38.0:
+ version "1.41.0"
+ resolved "https://registry.npmjs.org/sass/-/sass-1.41.0.tgz#f7b41dc00336a4c03429c37b9680b86758af61d4"
+ integrity sha512-wb8nT60cjo9ZZMcHzG7TzdbFtCAmHEKWrH+zAdScPb4ZxL64WQBnGdbp5nwlenW5wJPcHva1JWmVa0h6iqA5eg==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+"semver@2 || 3 || 4 || 5":
+ version "5.7.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@7.3.5, semver@^7.2.1, semver@^7.3.4, semver@^7.3.5:
+ version "7.3.5"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+signal-exit@^3.0.2, signal-exit@^3.0.3:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
+ integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+source-map-js@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
+ integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
+
+source-map@0.6.1, source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.5.0:
+ version "0.5.7"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+sourcemap-codec@^1.4.4:
+ version "1.4.8"
+ resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.10"
+ resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b"
+ integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==
+
+specificity@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019"
+ integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==
+
+split2@^3.0.0:
+ version "3.2.2"
+ resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f"
+ integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==
+ dependencies:
+ readable-stream "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+steno@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.nlark.com/steno/download/steno-2.1.0.tgz#05a9c378ce42ed04f642cda6fcb41787a10e4e33"
+ integrity sha1-BanDeM5C7QT2Qs2m/LQXh6EOTjM=
+
+string-argv@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+ integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
+
+string-hash@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
+ integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-indent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
+ integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+ dependencies:
+ min-indent "^1.0.0"
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+style-search@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
+ integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=
+
+stylelint-config-prettier@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-8.0.2.tgz#da9de33da4c56893cbe7e26df239a7374045e14e"
+ integrity sha512-TN1l93iVTXpF9NJstlvP7nOu9zY2k+mN0NSFQ/VEGz15ZIP9ohdDZTtCWHs5LjctAhSAzaILULGbgiM0ItId3A==
+
+stylelint-config-recommended@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz#fb5653f495a60b4938f2ad3e77712d9e1039ae78"
+ integrity sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==
+
+stylelint-config-standard@^22.0.0:
+ version "22.0.0"
+ resolved "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz#c860be9a13ebbc1b084456fa10527bf13a44addf"
+ integrity sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==
+ dependencies:
+ stylelint-config-recommended "^5.0.0"
+
+stylelint-order@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.1.0.tgz#692d05b7d0c235ac66fcf5ea1d9e5f08a76747f6"
+ integrity sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==
+ dependencies:
+ lodash "^4.17.15"
+ postcss "^7.0.31"
+ postcss-sorting "^5.0.1"
+
+stylelint@^13.13.1:
+ version "13.13.1"
+ resolved "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz#fca9c9f5de7990ab26a00f167b8978f083a18f3c"
+ integrity sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==
+ dependencies:
+ "@stylelint/postcss-css-in-js" "^0.37.2"
+ "@stylelint/postcss-markdown" "^0.36.2"
+ autoprefixer "^9.8.6"
+ balanced-match "^2.0.0"
+ chalk "^4.1.1"
+ cosmiconfig "^7.0.0"
+ debug "^4.3.1"
+ execall "^2.0.0"
+ fast-glob "^3.2.5"
+ fastest-levenshtein "^1.0.12"
+ file-entry-cache "^6.0.1"
+ get-stdin "^8.0.0"
+ global-modules "^2.0.0"
+ globby "^11.0.3"
+ globjoin "^0.1.4"
+ html-tags "^3.1.0"
+ ignore "^5.1.8"
+ import-lazy "^4.0.0"
+ imurmurhash "^0.1.4"
+ known-css-properties "^0.21.0"
+ lodash "^4.17.21"
+ log-symbols "^4.1.0"
+ mathml-tag-names "^2.1.3"
+ meow "^9.0.0"
+ micromatch "^4.0.4"
+ normalize-selector "^0.2.0"
+ postcss "^7.0.35"
+ postcss-html "^0.36.0"
+ postcss-less "^3.1.4"
+ postcss-media-query-parser "^0.2.3"
+ postcss-resolve-nested-selector "^0.1.1"
+ postcss-safe-parser "^4.0.2"
+ postcss-sass "^0.4.4"
+ postcss-scss "^2.1.1"
+ postcss-selector-parser "^6.0.5"
+ postcss-syntax "^0.36.2"
+ postcss-value-parser "^4.1.0"
+ resolve-from "^5.0.0"
+ slash "^3.0.0"
+ specificity "^0.4.1"
+ string-width "^4.2.2"
+ strip-ansi "^6.0.0"
+ style-search "^0.1.0"
+ sugarss "^2.0.0"
+ svg-tags "^1.0.0"
+ table "^6.6.0"
+ v8-compile-cache "^2.3.0"
+ write-file-atomic "^3.0.3"
+
+sugarss@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d"
+ integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==
+ dependencies:
+ postcss "^7.0.2"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
+ integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
+
+svgo@^2.3.0:
+ version "2.6.1"
+ resolved "https://registry.npmjs.org/svgo/-/svgo-2.6.1.tgz#60b613937e0081028cffc2369090e366b08f1f0e"
+ integrity sha512-SDo274ymyG1jJ3HtCr3hkfwS8NqWdF0fMr6xPlrJ5y2QMofsQxIEFWgR1epwb197teKGgnZbzozxvJyIeJpE2Q==
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ colorette "^1.4.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
+ csso "^4.2.0"
+ stable "^0.1.8"
+
+table@^6.0.9, table@^6.6.0:
+ version "6.7.1"
+ resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
+ integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
+ dependencies:
+ ajv "^8.0.1"
+ lodash.clonedeep "^4.5.0"
+ lodash.truncate "^4.4.2"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+
+text-extensions@^1.0.0:
+ version "1.9.0"
+ resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
+ integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+through2@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
+ integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==
+ dependencies:
+ readable-stream "3"
+
+"through@>=2.2.7 <3", through@^2.3.8:
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+trim-newlines@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
+ integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
+
+trough@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
+ integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tsutils@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+ dependencies:
+ tslib "^1.8.1"
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.18.0:
+ version "0.18.1"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
+ integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
+ integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+typescript-cookie@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/typescript-cookie/download/typescript-cookie-1.0.0.tgz#5354bf5d827b98dfe40807bf19b143cdd595a772"
+ integrity sha1-U1S/XYJ7mN/kCAe/GbFDzdWVp3I=
+
+typescript@^4.4.2:
+ version "4.4.3"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324"
+ integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==
+
+unified@^9.1.0:
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975"
+ integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^2.0.0"
+ trough "^1.0.0"
+ vfile "^4.0.0"
+
+unist-util-find-all-after@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6"
+ integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==
+ dependencies:
+ unist-util-is "^4.0.0"
+
+unist-util-is@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
+ integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==
+
+unist-util-stringify-position@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
+ integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==
+ dependencies:
+ "@types/unist" "^2.0.2"
+
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
+unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unplugin-element-plus@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/unplugin-element-plus/-/unplugin-element-plus-0.1.0.tgz#eb68721f152a79ebe39a7404cc60cfcd6a8e587b"
+ integrity sha512-DdNgXlZtarpU6dGzh8WIP5bxLSIWg1qPKHnGvlqOY+RGlljyxe3yULPo6HMAzovdxy+ix4kAijncZSEud72khA==
+ dependencies:
+ "@rollup/pluginutils" "^4.1.0"
+ es-module-lexer "^0.7.1"
+ magic-string "^0.25.7"
+ unplugin "^0.2.7"
+
+unplugin@^0.2.7:
+ version "0.2.16"
+ resolved "https://registry.npmjs.org/unplugin/-/unplugin-0.2.16.tgz#6f34e9f5068ca3ec92a36b016f47b5ad8bb875ca"
+ integrity sha512-KkXatHba0baJszSHW+2e8EQU/5Bz7rYwzYXu8wUeq97tE6K3wvub+7OWSuRv04LttvzNLsJ2jXEyR35gofv74Q==
+ dependencies:
+ webpack-virtual-modules "^0.4.3"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@^0.10.3:
+ version "0.10.4"
+ resolved "https://registry.npmjs.org/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+ integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+ dependencies:
+ inherits "2.0.3"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vfile-message@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
+ integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+
+vfile@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624"
+ integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+ vfile-message "^2.0.0"
+
+vite-plugin-mock@^2.9.6:
+ version "2.9.6"
+ resolved "https://registry.npmjs.org/vite-plugin-mock/-/vite-plugin-mock-2.9.6.tgz#04dd23de6baa052faa5b9ad317514c90d6205e25"
+ integrity sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==
+ dependencies:
+ "@rollup/plugin-node-resolve" "^13.0.4"
+ "@types/mockjs" "^1.0.4"
+ chalk "^4.1.2"
+ chokidar "^3.5.2"
+ connect "^3.7.0"
+ debug "^4.3.2"
+ esbuild "0.11.3"
+ fast-glob "^3.2.7"
+ path-to-regexp "^6.2.0"
+
+vite-svg-loader@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-2.2.0.tgz#b5d6ca948b03e45320cb4f96c44bf88f5bef0a2c"
+ integrity sha512-FP6qCN57coIOwmtah68ofpi4dewGmfzPcoKe76RMnJoz7qBTXxQVm2BlnH0YzGeCbOcjm9NKauJ1I6J9OlUUtg==
+ dependencies:
+ "@vue/compiler-sfc" "^3.0.11"
+ svgo "^2.3.0"
+
+vite@^2.6.7:
+ version "2.6.7"
+ resolved "https://registry.npmjs.org/vite/-/vite-2.6.7.tgz#e15c1d8327950720b5d7c4ec3fb36a5a58ccf7cb"
+ integrity sha512-ewk//jve9k6vlU8PfJmWUHN8k0YYdw4VaKOMvoQ3nT2Pb6k5OSMKQi4jPOzVH/TlUqMsCrq7IJ80xcuDDVyigg==
+ dependencies:
+ esbuild "^0.13.2"
+ postcss "^8.3.8"
+ resolve "^1.20.0"
+ rollup "^2.57.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vue-demi@*:
+ version "0.11.4"
+ resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz#6101992fe4724cf5634018a16e953f3052e94e2a"
+ integrity sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==
+
+vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.10.0:
+ version "7.11.0"
+ resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz#214b5dea961007fcffb2ee65b8912307628d0daf"
+ integrity sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==
+ dependencies:
+ debug "^4.1.1"
+ eslint-scope "^5.1.1"
+ eslint-visitor-keys "^1.1.0"
+ espree "^6.2.1"
+ esquery "^1.4.0"
+ lodash "^4.17.21"
+ semver "^6.3.0"
+
+vue-i18n@^9.2.0-beta.3:
+ version "9.2.0-beta.4"
+ resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.0-beta.4.tgz#c332ff0a615253017594fa636ebe99f40bea4d39"
+ integrity sha512-ahFQH7CJN2awM40g09d+DmrJIiIBNeKKnJbsPGEpiYLhI424iAkXEHOmXGaORJw4wXwxKYCCIZKrsiW+LNzThg==
+ dependencies:
+ "@intlify/core-base" "9.2.0-beta.4"
+ "@intlify/shared" "9.2.0-beta.4"
+ "@intlify/vue-devtools" "9.2.0-beta.4"
+ "@vue/devtools-api" "^6.0.0-beta.13"
+
+vue-router@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.0.11.tgz#cd649a0941c635281763a20965b599643ddc68ed"
+ integrity sha512-sha6I8fx9HWtvTrFZfxZkiQQBpqSeT+UCwauYjkdOQYRvwsGwimlQQE2ayqUwuuXGzquFpCPoXzYKWlzL4OuXg==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0-beta.14"
+
+vue-types@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/vue-types/-/vue-types-4.1.0.tgz#8dcbbaccf9d5c3815449ac7cb8ae5864454cfff0"
+ integrity sha512-oPAeKKx5vY5Q8c7lMQPQyrBIbmWQGael5XEHqO1f+Y3V/RUZNuISz7KxI4woGjh79Vy/gDDaPX9j9zKYpaaA2g==
+ dependencies:
+ is-plain-object "5.0.0"
+
+vue@^3.2.20:
+ version "3.2.20"
+ resolved "https://registry.npmjs.org/vue/-/vue-3.2.20.tgz#940f8aa8bf3e3be78243ca582bad41fcd45ae3e6"
+ integrity sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==
+ dependencies:
+ "@vue/compiler-dom" "3.2.20"
+ "@vue/compiler-sfc" "3.2.20"
+ "@vue/runtime-dom" "3.2.20"
+ "@vue/server-renderer" "3.2.20"
+ "@vue/shared" "3.2.20"
+
+webpack-virtual-modules@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9"
+ integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==
+
+which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^20.2.2, yargs-parser@^20.2.3:
+ version "20.2.9"
+ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
+yargs@^17.0.0:
+ version "17.1.1"
+ resolved "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba"
+ integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+zwitch@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
+ integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==