diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..9eb95b7 --- /dev/null +++ b/.env.development @@ -0,0 +1,4 @@ +/** + * Created by Zhang Haijun on 2018/8/13. + */ +VUE_APP_BASEURL = '/' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..547115c --- /dev/null +++ b/.env.production @@ -0,0 +1,4 @@ +/** + * Created by Zhang Haijun on 2018/8/13. + */ +VUE_APP_BASEURL = '/sms-web/' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..1f2e547 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +/resourceApply \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c2f01a0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: ['plugin:vue/essential', '@vue/standard', '@vue/typescript'], + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-unused-vars': [ + 0, + { + vars: 'all', + args: 'none' + } + ], + semi: 0, + eqeqeq: 0, + 'one-var': 0, + camelcase: 0, + 'no-case-declarations': 0, + 'space-before-function-paren': 0, + 'vue/no-parsing-error': [2, { 'x-invalid-end-tag': false }], + '@typescript-eslint/indent': ['error', 2] + }, + parserOptions: { + parser: '@typescript-eslint/parser' + } +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..ab4cd5e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "printWidth": 300, + "tabWidth": 2, + "singleQuote": true, + "semi": false, + "trailingComma": "none" +} diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..d58b43b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,7 @@ +@Library('jgpl') _ +webPipeline([onBuildInstallShell:{-> + return """ + pnpm install -no-frozen-lockfile + pnpm run build || echo 'Ignore build error !!!' + """ +}]) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b703a1 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# ts + +## Project setup + +``` +yarn install +``` + +### Compiles and hot-reloads for development + +``` +yarn serve +``` + +### Compiles and minifies for production + +``` +yarn build +``` + +### Lints and fixes files + +``` +yarn lint +``` + +### Customize configuration + +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..716b023 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['@vue/cli-plugin-babel/preset'] +} diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..a4f4369 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['@commitlint/config-conventional'] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..dfbc844 --- /dev/null +++ b/package.json @@ -0,0 +1,104 @@ +{ + "name": "sms-web", + "version": "5.6.0", + "private": true, + "author": "Haijun Zhang ", + "scripts": { + "dev": "vite", + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "fix": "vue-cli-service lint --fix", + "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit", + "precommit": "lint-staged", + "upload": "node upload.js", + "deploy": "yarn build && yarn upload" + }, + "dependencies": { + "@antv/g6": "3.8.5", + "vue-grid-layout": "2.3.12", + "@vue/composition-api": "^1.7.1", + "axios": "^0.21.1", + "clipboard": "^2.0.6", + "cmp-echarts": "2.0.0-5.6-release", + "cmp-element": "1.0.0-5.6-release", + "cmp-socket": "1.0.0", + "core-js": "^3.3.2", + "crypto-js": "^3.1.9-1", + "dayjs": "^1.10.4", + "element-ui": "2.13.0", + "js-cookie": "^2.2.0", + "lodash-es": "^4.17.21", + "nprogress": "^0.2.0", + "qs": "^6.7.0", + "regenerator-runtime": "^0.13.11", + "tslib": "^2.4.1", + "url-loader": "^4.1.1", + "vue": "2.6.14", + "vue-class-component": "^7.0.2", + "vue-i18n": "^8.15.0", + "vue-property-decorator": "^8.3.0", + "vue-router": "^3.3.4", + "vue2-animate": "^1.0.4", + "vuedraggable": "^2.15.0", + "vuex": "^3.0.1", + "wangeditor": "^4.6.16" + }, + "devDependencies": { + "@commitlint/cli": "^11.0.0", + "@commitlint/config-conventional": "^11.0.0", + "@types/js-cookie": "^2.2.4", + "@types/lodash-es": "^4.17.4", + "@types/nprogress": "^0.2.0", + "@types/qs": "^6.5.3", + "@typescript-eslint/eslint-plugin": "^2.18.0", + "@typescript-eslint/parser": "^2.18.0", + "@vue/cli-plugin-babel": "~4.4.1", + "@vue/cli-plugin-eslint": "~4.4.1", + "@vue/cli-plugin-router": "~4.4.1", + "@vue/cli-plugin-typescript": "~4.4.1", + "@vue/cli-plugin-vuex": "~4.4.1", + "@vue/cli-service": "~4.4.1", + "@vue/eslint-config-standard": "^5.1.0", + "@vue/eslint-config-typescript": "^5.0.1", + "chalk": "^4.1.1", + "compress-webpack-plugin": "^1.0.6", + "cross-env": "^5.2.0", + "eslint": "^6.7.2", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.1.2", + "husky": "^1.3.1", + "increase-memory-limit": "^1.0.6", + "lint-staged": "^8.1.5", + "ora": "^5.4.0", + "sass": "~1.32.6", + "sass-loader": "^8.0.0", + "scp2": "^0.5.0", + "svg-sprite-loader": "^6.0.2", + "typescript": "~3.9.3", + "vite": "2.4.1", + "vite-plugin-svg-icons": "^0.6.2", + "vite-plugin-vue2": "^1.5.1", + "vue-template-compiler": "2.6.14" + }, + "eslintConfig": { + "parserOptions": { + "parser": "@typescript-eslint/parser" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged", + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..c7d0482 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,12965 @@ +lockfileVersion: 5.4 + +specifiers: + '@antv/g6': 3.8.5 + '@commitlint/cli': ^11.0.0 + '@commitlint/config-conventional': ^11.0.0 + '@types/js-cookie': ^2.2.4 + '@types/lodash-es': ^4.17.4 + '@types/nprogress': ^0.2.0 + '@types/qs': ^6.5.3 + '@typescript-eslint/eslint-plugin': ^2.18.0 + '@typescript-eslint/parser': ^2.18.0 + '@vue/cli-plugin-babel': ~4.4.1 + '@vue/cli-plugin-eslint': ~4.4.1 + '@vue/cli-plugin-router': ~4.4.1 + '@vue/cli-plugin-typescript': ~4.4.1 + '@vue/cli-plugin-vuex': ~4.4.1 + '@vue/cli-service': ~4.4.1 + '@vue/composition-api': ^1.7.1 + '@vue/eslint-config-standard': ^5.1.0 + '@vue/eslint-config-typescript': ^5.0.1 + axios: ^0.21.1 + chalk: ^4.1.1 + clipboard: ^2.0.6 + cmp-echarts: 2.0.0-5.6-release + cmp-element: 1.0.0-5.6-release + cmp-socket: 1.0.0 + compress-webpack-plugin: ^1.0.6 + core-js: ^3.3.2 + cross-env: ^5.2.0 + crypto-js: ^3.1.9-1 + dayjs: ^1.10.4 + element-ui: 2.13.0 + eslint: ^6.7.2 + eslint-plugin-import: ^2.20.1 + eslint-plugin-node: ^11.0.0 + eslint-plugin-promise: ^4.2.1 + eslint-plugin-standard: ^4.0.0 + eslint-plugin-vue: ^6.1.2 + husky: ^1.3.1 + increase-memory-limit: ^1.0.6 + js-cookie: ^2.2.0 + lint-staged: ^8.1.5 + lodash-es: ^4.17.21 + nprogress: ^0.2.0 + ora: ^5.4.0 + qs: ^6.7.0 + regenerator-runtime: ^0.13.11 + sass: ~1.32.6 + sass-loader: ^8.0.0 + scp2: ^0.5.0 + svg-sprite-loader: ^6.0.2 + tslib: ^2.4.1 + typescript: ~3.9.3 + url-loader: ^4.1.1 + vite: 2.4.1 + vite-plugin-svg-icons: ^0.6.2 + vite-plugin-vue2: ^1.5.1 + vue: 2.6.14 + vue-class-component: ^7.0.2 + vue-grid-layout: 2.3.12 + vue-i18n: ^8.15.0 + vue-property-decorator: ^8.3.0 + vue-router: ^3.3.4 + vue-template-compiler: 2.6.14 + vue2-animate: ^1.0.4 + vuedraggable: ^2.15.0 + vuex: ^3.0.1 + wangeditor: ^4.6.16 + +dependencies: + '@antv/g6': 3.8.5 + '@vue/composition-api': 1.7.2_vue@2.6.14 + axios: 0.21.1 + clipboard: 2.0.8 + cmp-echarts: 2.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm + cmp-element: 1.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm + cmp-socket: 1.0.0 + core-js: 3.9.1 + crypto-js: 3.3.0 + dayjs: 1.10.4 + element-ui: 2.13.0_vue@2.6.14 + js-cookie: 2.2.1 + lodash-es: 4.17.21 + nprogress: 0.2.0 + qs: 6.10.0 + regenerator-runtime: 0.13.11 + tslib: 2.4.1 + url-loader: 4.1.1 + vue: 2.6.14 + vue-class-component: 7.2.6_vue@2.6.14 + vue-grid-layout: 2.3.12 + vue-i18n: 8.24.1_vue@2.6.14 + vue-property-decorator: 8.5.1_vue@2.6.14 + vue-router: 3.5.1_vue@2.6.14 + vue2-animate: 1.0.4 + vuedraggable: 2.24.3 + vuex: 3.6.2_vue@2.6.14 + wangeditor: 4.6.16 + +devDependencies: + '@commitlint/cli': 11.0.0 + '@commitlint/config-conventional': 11.0.0 + '@types/js-cookie': 2.2.6 + '@types/lodash-es': 4.17.4 + '@types/nprogress': 0.2.0 + '@types/qs': 6.9.6 + '@typescript-eslint/eslint-plugin': 2.34.0_jxzg2k43owi4xwrqkezmr5eq6m + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + '@vue/cli-plugin-babel': 4.4.6_fjy6firl6adfsotiausbjoc7ky + '@vue/cli-plugin-eslint': 4.4.6_gckqw5ssyvaoozj2spmaxoeooq + '@vue/cli-plugin-router': 4.4.6_@vue+cli-service@4.4.6 + '@vue/cli-plugin-typescript': 4.4.6_bf2tvjwiro5jzldu5wac7oah3u + '@vue/cli-plugin-vuex': 4.4.6_@vue+cli-service@4.4.6 + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/eslint-config-standard': 5.1.2_bhlcpwu3qqosv22ubdlbjeklmy + '@vue/eslint-config-typescript': 5.1.0_mfq4e2qj55uhlotzljeesvv4bm + chalk: 4.1.1 + compress-webpack-plugin: 1.0.6 + cross-env: 5.2.1 + eslint: 6.8.0 + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.3.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + husky: 1.3.1 + increase-memory-limit: 1.0.7 + lint-staged: 8.2.1 + ora: 5.4.0 + sass: 1.32.8 + sass-loader: 8.0.2_sass@1.32.8 + scp2: 0.5.0 + svg-sprite-loader: 6.0.2 + typescript: 3.9.9 + vite: 2.4.1 + vite-plugin-svg-icons: 0.6.2_vite@2.4.1 + vite-plugin-vue2: 1.5.1_vite@2.4.1 + vue-template-compiler: 2.6.14 + +packages: + /@ant-design/colors/4.0.5: + resolution: { integrity: sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q== } + dependencies: + tinycolor2: 1.4.2 + dev: false + + /@antv/dom-util/2.0.4: + resolution: { integrity: sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ== } + dependencies: + tslib: 2.4.1 + dev: false + + /@antv/event-emitter/0.1.3: + resolution: { integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg== } + dev: false + + /@antv/g-base/0.5.11: + resolution: { integrity: sha512-10Hkq7XksVCqxZZrPkd6HTU9tb/+2meCVEMy/edhS4I/sokhcgC9m3fQP5bE8rA3EVKwELE7MJHZ98BEpVFqvQ== } + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/g-math': 0.1.7 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + '@types/d3-timer': 2.0.1 + d3-ease: 1.0.7 + d3-interpolate: 1.4.0 + d3-timer: 1.0.10 + detect-browser: 5.3.0 + tslib: 2.4.1 + dev: false + + /@antv/g-canvas/0.5.12: + resolution: { integrity: sha512-iJ/muwwqCCNONVlPIzv/7OL5iLguaKRj2BxNMytUO3TWwamM+kHkiyYEOkS0dPn9h/hBsHYlLUluSVz2Fp6/bw== } + dependencies: + '@antv/g-base': 0.5.11 + '@antv/g-math': 0.1.7 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.4.1 + dev: false + + /@antv/g-math/0.1.7: + resolution: { integrity: sha512-xGyXaloD1ynfp7gS4VuV+MjSptZIwHvLHr8ekXJSFAeWPYLu84yOW2wOZHDdp1bzDAIuRv6xDBW58YGHrWsFcA== } + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + dev: false + + /@antv/g-svg/0.5.6: + resolution: { integrity: sha512-Xve1EUGk4HMbl2nq4ozR4QLh6GyoZ8Xw/+9kHYI4B5P2lIUQU95MuRsaLFfW5NNpZDx85ZeH97tqEmC9L96E7A== } + dependencies: + '@antv/g-base': 0.5.11 + '@antv/g-math': 0.1.7 + '@antv/util': 2.0.17 + detect-browser: 5.3.0 + tslib: 2.4.1 + dev: false + + /@antv/g6/3.8.5: + resolution: { integrity: sha512-q+Fomc5ogcdcJ9usgYUVHzB8lFR5XHi4+O1BBFzA4ERgaF255xtrIpP631cD2wjByDq/9MbBCSpFqeOgBg2eOg== } + dependencies: + '@ant-design/colors': 4.0.5 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.11 + '@antv/g-canvas': 0.5.12 + '@antv/g-math': 0.1.7 + '@antv/g-svg': 0.5.6 + '@antv/hierarchy': 0.6.8 + '@antv/matrix-util': 2.0.7 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + color: 3.1.3 + d3-force: 2.1.1 + dagre: 0.8.5 + insert-css: 2.0.0 + ml-matrix: 6.10.4 + dev: false + + /@antv/gl-matrix/2.7.1: + resolution: { integrity: sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q== } + dev: false + + /@antv/hierarchy/0.6.8: + resolution: { integrity: sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A== } + dependencies: + '@antv/util': 2.0.17 + dev: false + + /@antv/matrix-util/2.0.7: + resolution: { integrity: sha512-bogifQY8jplWtSTZsPqBOdBlDdkM7IwDqYL8eMYL8OaSyOPCS7l9bnEQjQ9qTAwfCd7wHTuPoCnCpbiR8BYFvQ== } + dependencies: + '@antv/gl-matrix': 2.7.1 + '@antv/util': 2.0.17 + tslib: 1.14.1 + dev: false + + /@antv/matrix-util/3.0.4: + resolution: { integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ== } + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.4.1 + dev: false + + /@antv/matrix-util/3.1.0-beta.3: + resolution: { integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A== } + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.4.1 + dev: false + + /@antv/path-util/2.0.15: + resolution: { integrity: sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw== } + dependencies: + '@antv/matrix-util': 3.0.4 + '@antv/util': 2.0.17 + tslib: 2.4.1 + dev: false + + /@antv/scale/0.3.18: + resolution: { integrity: sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w== } + dependencies: + '@antv/util': 2.0.17 + fecha: 4.2.3 + tslib: 2.4.1 + dev: false + + /@antv/util/2.0.17: + resolution: { integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q== } + dependencies: + csstype: 3.1.1 + tslib: 2.4.1 + dev: false + + /@babel/code-frame/7.12.13: + resolution: { integrity: sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== } + dependencies: + '@babel/highlight': 7.13.10 + dev: true + + /@babel/compat-data/7.14.0: + resolution: { integrity: sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== } + dev: true + + /@babel/core/7.14.3: + resolution: { integrity: sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/generator': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helpers': 7.14.0 + '@babel/parser': 7.14.3 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + convert-source-map: 1.7.0 + debug: 4.3.2 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.14.3: + resolution: { integrity: sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== } + dependencies: + '@babel/types': 7.14.2 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-annotate-as-pure/7.12.13: + resolution: { integrity: sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.12.13: + resolution: { integrity: sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== } + dependencies: + '@babel/helper-explode-assignable-expression': 7.13.0 + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-compilation-targets/7.13.16_@babel+core@7.14.3: + resolution: { integrity: sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-validator-option': 7.12.17 + browserslist: 4.16.3 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.14.3_@babel+core@7.14.3: + resolution: { integrity: sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-annotate-as-pure': 7.12.13 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-member-expression-to-functions': 7.13.12 + '@babel/helper-optimise-call-expression': 7.12.13 + '@babel/helper-replace-supers': 7.14.3 + '@babel/helper-split-export-declaration': 7.12.13 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin/7.12.17_@babel+core@7.14.3: + resolution: { integrity: sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-annotate-as-pure': 7.12.13 + regexpu-core: 4.7.1 + dev: true + + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.14.3: + resolution: { integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== } + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/traverse': 7.14.2 + debug: 4.3.2 + lodash.debounce: 4.0.8 + resolve: 1.20.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-explode-assignable-expression/7.13.0: + resolution: { integrity: sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-function-name/7.14.2: + resolution: { integrity: sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== } + dependencies: + '@babel/helper-get-function-arity': 7.12.13 + '@babel/template': 7.12.13 + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-get-function-arity/7.12.13: + resolution: { integrity: sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-hoist-variables/7.13.0: + resolution: { integrity: sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== } + dependencies: + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-member-expression-to-functions/7.13.12: + resolution: { integrity: sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-module-imports/7.13.12: + resolution: { integrity: sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-module-transforms/7.14.2: + resolution: { integrity: sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== } + dependencies: + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-replace-supers': 7.14.3 + '@babel/helper-simple-access': 7.13.12 + '@babel/helper-split-export-declaration': 7.12.13 + '@babel/helper-validator-identifier': 7.14.0 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.12.13: + resolution: { integrity: sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-plugin-utils/7.13.0: + resolution: { integrity: sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== } + dev: true + + /@babel/helper-remap-async-to-generator/7.13.0: + resolution: { integrity: sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== } + dependencies: + '@babel/helper-annotate-as-pure': 7.12.13 + '@babel/helper-wrap-function': 7.13.0 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.14.3: + resolution: { integrity: sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== } + dependencies: + '@babel/helper-member-expression-to-functions': 7.13.12 + '@babel/helper-optimise-call-expression': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.13.12: + resolution: { integrity: sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.12.1: + resolution: { integrity: sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-split-export-declaration/7.12.13: + resolution: { integrity: sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== } + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/helper-validator-identifier/7.14.0: + resolution: { integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== } + dev: true + + /@babel/helper-validator-option/7.12.17: + resolution: { integrity: sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== } + dev: true + + /@babel/helper-wrap-function/7.13.0: + resolution: { integrity: sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== } + dependencies: + '@babel/helper-function-name': 7.14.2 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers/7.14.0: + resolution: { integrity: sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== } + dependencies: + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.13.10: + resolution: { integrity: sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== } + dependencies: + '@babel/helper-validator-identifier': 7.14.0 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.14.3: + resolution: { integrity: sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + '@babel/types': 7.14.2 + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-remap-async-to-generator': 7.13.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-decorators/7.13.5_@babel+core@7.14.3: + resolution: { integrity: sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-decorators': 7.12.13_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-json-strings/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-transform-parameters': 7.13.0_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 + dev: true + + /@babel/plugin-proposal-private-methods/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== } + engines: { node: '>=4' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.3: + resolution: { integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-decorators/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-jsx/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.3: + resolution: { integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.3: + resolution: { integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.3: + resolution: { integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-top-level-await/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-syntax-typescript/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-arrow-functions/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-async-to-generator/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-remap-async-to-generator': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-block-scoping/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-classes/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-annotate-as-pure': 7.12.13 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-optimise-call-expression': 7.12.13 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-replace-supers': 7.14.3 + '@babel/helper-split-export-declaration': 7.12.13 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-destructuring/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-dotall-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.12.13 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-for-of/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-function-name/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-literals/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-modules-amd/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-simple-access': 7.13.12 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.13.8_@babel+core@7.14.3: + resolution: { integrity: sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-hoist-variables': 7.13.0 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-validator-identifier': 7.14.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-transforms': 7.14.2 + '@babel/helper-plugin-utils': 7.13.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + dev: true + + /@babel/plugin-transform-new-target/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-object-super/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-replace-supers': 7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-property-literals/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-regenerator/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + regenerator-transform: 0.14.5 + dev: true + + /@babel/plugin-transform-reserved-words/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-runtime/7.13.10_@babel+core@7.14.3: + resolution: { integrity: sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/helper-plugin-utils': 7.13.0 + babel-plugin-polyfill-corejs2: 0.1.10_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.3 + babel-plugin-polyfill-regenerator: 0.1.6_@babel+core@7.14.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-spread/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 + dev: true + + /@babel/plugin-transform-sticky-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-template-literals/7.13.0_@babel+core@7.14.3: + resolution: { integrity: sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-typescript/7.14.3_@babel+core@7.14.3: + resolution: { integrity: sha512-G5Bb5pY6tJRTC4ag1visSgiDoGgJ1u1fMUgmc2ijLkcIdzP83Q1qyZX4ggFQ/SkR+PNOatkaYC+nKcTlpsX4ag== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-syntax-typescript': 7.12.13_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-unicode-escapes/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/plugin-transform-unicode-regex/7.12.13_@babel+core@7.14.3: + resolution: { integrity: sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-create-regexp-features-plugin': 7.12.17_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + dev: true + + /@babel/preset-env/7.13.10_@babel+core@7.14.3: + resolution: { integrity: sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/helper-validator-option': 7.12.17 + '@babel/plugin-proposal-async-generator-functions': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-class-properties': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-proposal-dynamic-import': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-export-namespace-from': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-proposal-json-strings': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-numeric-separator': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-proposal-object-rest-spread': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-optional-catch-binding': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-optional-chaining': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-proposal-private-methods': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-proposal-unicode-property-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-top-level-await': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-arrow-functions': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-async-to-generator': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-block-scoped-functions': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-block-scoping': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-classes': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-computed-properties': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-destructuring': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-dotall-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-duplicate-keys': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-exponentiation-operator': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-for-of': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-function-name': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-literals': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-member-expression-literals': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-modules-amd': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-modules-commonjs': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-transform-modules-systemjs': 7.13.8_@babel+core@7.14.3 + '@babel/plugin-transform-modules-umd': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-new-target': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-object-super': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-parameters': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-property-literals': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-regenerator': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-reserved-words': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-shorthand-properties': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-spread': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-sticky-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-template-literals': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-transform-typeof-symbol': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-unicode-escapes': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-unicode-regex': 7.12.13_@babel+core@7.14.3 + '@babel/preset-modules': 0.1.4_@babel+core@7.14.3 + '@babel/types': 7.14.2 + babel-plugin-polyfill-corejs2: 0.1.10_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.3 + babel-plugin-polyfill-regenerator: 0.1.6_@babel+core@7.14.3 + core-js-compat: 3.9.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules/0.1.4_@babel+core@7.14.3: + resolution: { integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-plugin-utils': 7.13.0 + '@babel/plugin-proposal-unicode-property-regex': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-dotall-regex': 7.12.13_@babel+core@7.14.3 + '@babel/types': 7.14.2 + esutils: 2.0.3 + dev: true + + /@babel/runtime-corejs3/7.13.17: + resolution: { integrity: sha512-RGXINY1YvduBlGrP+vHjJqd/nK7JVpfM4rmZLGMx77WoL3sMrhheA0qxii9VNn1VHnxJLEyxmvCB+Wqc+x/FMw== } + dependencies: + core-js-pure: 3.11.0 + regenerator-runtime: 0.13.11 + dev: false + + /@babel/runtime/7.13.10: + resolution: { integrity: sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== } + dependencies: + regenerator-runtime: 0.13.11 + + /@babel/template/7.12.13: + resolution: { integrity: sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== } + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/parser': 7.14.3 + '@babel/types': 7.14.2 + dev: true + + /@babel/traverse/7.14.2: + resolution: { integrity: sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== } + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/generator': 7.14.3 + '@babel/helper-function-name': 7.14.2 + '@babel/helper-split-export-declaration': 7.12.13 + '@babel/parser': 7.14.3 + '@babel/types': 7.14.2 + debug: 4.3.2 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.14.2: + resolution: { integrity: sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== } + dependencies: + '@babel/helper-validator-identifier': 7.14.0 + to-fast-properties: 2.0.0 + dev: true + + /@commitlint/cli/11.0.0: + resolution: { integrity: sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g== } + engines: { node: '>=v10.22.0' } + hasBin: true + dependencies: + '@babel/runtime': 7.13.10 + '@commitlint/format': 11.0.0 + '@commitlint/lint': 11.0.0 + '@commitlint/load': 11.0.0 + '@commitlint/read': 11.0.0 + chalk: 4.1.0 + core-js: 3.9.1 + get-stdin: 8.0.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 15.4.1 + dev: true + + /@commitlint/config-conventional/11.0.0: + resolution: { integrity: sha512-SNDRsb5gLuDd2PL83yCOQX6pE7gevC79UPFx+GLbLfw6jGnnbO9/tlL76MLD8MOViqGbo7ZicjChO9Gn+7tHhA== } + engines: { node: '>=v10.22.0' } + dependencies: + conventional-changelog-conventionalcommits: 4.5.0 + dev: true + + /@commitlint/ensure/11.0.0: + resolution: { integrity: sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/types': 11.0.0 + lodash: 4.17.21 + dev: true + + /@commitlint/execute-rule/11.0.0: + resolution: { integrity: sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ== } + engines: { node: '>=v10.22.0' } + dev: true + + /@commitlint/format/11.0.0: + resolution: { integrity: sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/types': 11.0.0 + chalk: 4.1.1 + dev: true + + /@commitlint/is-ignored/11.0.0: + resolution: { integrity: sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/types': 11.0.0 + semver: 7.3.2 + dev: true + + /@commitlint/lint/11.0.0: + resolution: { integrity: sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/is-ignored': 11.0.0 + '@commitlint/parse': 11.0.0 + '@commitlint/rules': 11.0.0 + '@commitlint/types': 11.0.0 + dev: true + + /@commitlint/load/11.0.0: + resolution: { integrity: sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/execute-rule': 11.0.0 + '@commitlint/resolve-extends': 11.0.0 + '@commitlint/types': 11.0.0 + chalk: 4.1.0 + cosmiconfig: 7.0.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + dev: true + + /@commitlint/message/11.0.0: + resolution: { integrity: sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA== } + engines: { node: '>=v10.22.0' } + dev: true + + /@commitlint/parse/11.0.0: + resolution: { integrity: sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A== } + engines: { node: '>=v10.22.0' } + dependencies: + conventional-changelog-angular: 5.0.12 + conventional-commits-parser: 3.2.1 + dev: true + + /@commitlint/read/11.0.0: + resolution: { integrity: sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/top-level': 11.0.0 + fs-extra: 9.1.0 + git-raw-commits: 2.0.10 + dev: true + + /@commitlint/resolve-extends/11.0.0: + resolution: { integrity: sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw== } + engines: { node: '>=v10.22.0' } + dependencies: + import-fresh: 3.3.0 + lodash: 4.17.21 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: true + + /@commitlint/rules/11.0.0: + resolution: { integrity: sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA== } + engines: { node: '>=v10.22.0' } + dependencies: + '@commitlint/ensure': 11.0.0 + '@commitlint/message': 11.0.0 + '@commitlint/to-lines': 11.0.0 + '@commitlint/types': 11.0.0 + dev: true + + /@commitlint/to-lines/11.0.0: + resolution: { integrity: sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw== } + engines: { node: '>=v10.22.0' } + dev: true + + /@commitlint/top-level/11.0.0: + resolution: { integrity: sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA== } + engines: { node: '>=v10.22.0' } + dependencies: + find-up: 5.0.0 + dev: true + + /@commitlint/types/11.0.0: + resolution: { integrity: sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ== } + engines: { node: '>=v10.22.0' } + dev: true + + /@hapi/address/2.1.4: + resolution: { integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== } + deprecated: Moved to 'npm install @sideway/address' + dev: true + + /@hapi/bourne/1.3.2: + resolution: { integrity: sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== } + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/hoek/8.5.1: + resolution: { integrity: sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== } + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/joi/15.1.1: + resolution: { integrity: sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== } + deprecated: Switch to 'npm install joi' + dependencies: + '@hapi/address': 2.1.4 + '@hapi/bourne': 1.3.2 + '@hapi/hoek': 8.5.1 + '@hapi/topo': 3.1.6 + dev: true + + /@hapi/topo/3.1.6: + resolution: { integrity: sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== } + deprecated: This version has been deprecated and is no longer supported or maintained + dependencies: + '@hapi/hoek': 8.5.1 + dev: true + + /@interactjs/actions/1.10.11: + resolution: { integrity: sha512-P39zeefr4hkmKx+5nZ+mrH1s0l2YJ3gIHrthXmE81n6MlMa42m0WtHcTms4C5JTTNBP2EEDY+KGgGxSnmJKvUw== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/actions/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-P39zeefr4hkmKx+5nZ+mrH1s0l2YJ3gIHrthXmE81n6MlMa42m0WtHcTms4C5JTTNBP2EEDY+KGgGxSnmJKvUw== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/auto-scroll/1.10.11_@interactjs+utils@1.10.11: + resolution: { integrity: sha512-feHNjhi0EMNLV2nQcEgjYPz2mI54aeSW2RiaoNtFLyBvtXKp0b4DmluwDv6DvuXmUpDwD5g/Hk1gGM2rgl7iqQ== } + peerDependencies: + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/auto-start/1.10.11: + resolution: { integrity: sha512-cIg5CcalCPtC6AiGq6j/0hKUtL2MweEpvw12FuB19sz2Q9Dye0J4GliHKhOYvtumNinnvfVAZ4FZMqZEuX7YZA== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/auto-start/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-cIg5CcalCPtC6AiGq6j/0hKUtL2MweEpvw12FuB19sz2Q9Dye0J4GliHKhOYvtumNinnvfVAZ4FZMqZEuX7YZA== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/core/1.10.11_@interactjs+utils@1.10.11: + resolution: { integrity: sha512-aJ50ccVeszpJt7wPH7Yfqm7f1aG1SA94qd90P0NaESh5/QUXn4CESO6igobo4DFHQ5z+1Rfdl8aphP4JxlH4gw== } + peerDependencies: + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/utils': 1.10.11 + dev: false + + /@interactjs/dev-tools/1.10.11_6cfv4lzikfbo7rn4cjwgiucbha: + resolution: { integrity: sha512-BP2FNfMbF7zLuOAUGMkDhCo1e1B0fnqyb9ih/Y8yAIJuoLrZxP/9htbsS1vZOIVZ4UgtrId4cYOwfcAZBMQtmw== } + peerDependencies: + '@interactjs/modifiers': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/modifiers': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/dev-tools/1.10.11_ofnz4wzy252z7f2d24rqws4nkq: + resolution: { integrity: sha512-BP2FNfMbF7zLuOAUGMkDhCo1e1B0fnqyb9ih/Y8yAIJuoLrZxP/9htbsS1vZOIVZ4UgtrId4cYOwfcAZBMQtmw== } + peerDependencies: + '@interactjs/modifiers': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/modifiers': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/inertia/1.10.11_63jtl7zryfaftewohpjjqaczxm: + resolution: { integrity: sha512-h+sknCzRqBSyHy4ctPNsq56mxkAMMdwHWD6en7rDEw899gdGKYaXVDVdv1jMfiwNRw0eRFBNoCiol8r3a/a3Jw== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/modifiers': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/modifiers': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/offset': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/interact/1.10.11: + resolution: { integrity: sha512-0iZJ9l547JuBA/lKxK4ARGYVmMqRSsAdA8gXL1zWe51qEIQq8PyWmMipoi8JbDaL7exC2THKwkXu5uq5ndT+iA== } + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/types': 1.10.11 + '@interactjs/utils': 1.10.11 + dev: false + + /@interactjs/interactjs/1.10.11: + resolution: { integrity: sha512-cGOxf6rp3Y8/sk88LhIT0XDn4gCiCzAnUG5Kkj9SAqiUO6BK/9+Wbp1IBkNaPgl/8uG8gNHh/dXBrlBBNcqJAg== } + dependencies: + '@interactjs/actions': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/auto-scroll': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/auto-start': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/dev-tools': 1.10.11_ofnz4wzy252z7f2d24rqws4nkq + '@interactjs/inertia': 1.10.11_63jtl7zryfaftewohpjjqaczxm + '@interactjs/interact': 1.10.11 + '@interactjs/modifiers': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/offset': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/pointer-events': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/reflow': 1.10.11_tyfgkkxvwgresm6izb7s2h25im + '@interactjs/utils': 1.10.11 + dev: false + + /@interactjs/modifiers/1.10.11: + resolution: { integrity: sha512-ltqX1RSqeAIikixlQBlyEUdclT5+rbfIGi3sIdLLYaIZQnltYkWqL9MHKx/w5b+hV+Mc0p5MLUFWJbTdkSCZ9g== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/snappers': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/modifiers/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-ltqX1RSqeAIikixlQBlyEUdclT5+rbfIGi3sIdLLYaIZQnltYkWqL9MHKx/w5b+hV+Mc0p5MLUFWJbTdkSCZ9g== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/snappers': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/offset/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-mBT7eIfy5ivofECiv+VwtEwwIMLV54fT9ujSMWJPduxdSYIHepUWgEf/3zjJknFh6jQc7pqz9dtjvVvyzRCLlQ== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/pointer-events/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-yBT8JJVMZ+MgBay5l1WAHnL8ch/mZsRfaFahti+QFYeQyRloDtsWmEMDSYI/Onyy9+hS3gN/ge77ArGciZZ0Ow== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/reflow/1.10.11_tyfgkkxvwgresm6izb7s2h25im: + resolution: { integrity: sha512-NSCtcCkjImOYSbxzzv2kFqR9t49J8KlhEr9UoePc7GyLbNXsiv3WQ3n0ehZd7CgZXQDiVXnP2UnmIOv5Zd4HQg== } + peerDependencies: + '@interactjs/core': 1.10.11 + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/core': 1.10.11_@interactjs+utils@1.10.11 + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/snappers/1.10.11: + resolution: { integrity: sha512-yYtOMUZ7aFUZ1IYheq9Tj5hZ4J1r5dnaXhLF44WsI/awQ5L0DjZf07GPWof0B+7rZHEVudxyQNbPfFmb+1K94Q== } + peerDependencies: + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/snappers/1.10.11_@interactjs+utils@1.10.11: + resolution: { integrity: sha512-yYtOMUZ7aFUZ1IYheq9Tj5hZ4J1r5dnaXhLF44WsI/awQ5L0DjZf07GPWof0B+7rZHEVudxyQNbPfFmb+1K94Q== } + peerDependencies: + '@interactjs/utils': 1.10.11 + dependencies: + '@interactjs/utils': 1.10.11 + optionalDependencies: + '@interactjs/interact': 1.10.11 + dev: false + + /@interactjs/types/1.10.11: + resolution: { integrity: sha512-YRsVFWjL8Gkkvlx3qnjeaxW4fnibSJ9791g8BA7Pv5ANByI64WmtR1vU7A2rXcrOn8XvyCEfY0ss1s8NhZP+MA== } + dev: false + + /@interactjs/utils/1.10.11: + resolution: { integrity: sha512-410ZoxKF+r1roeSelL+WHXfdryUMg5iykC1XwQ3l6XqNw43IMACzyvTH6k6Pwxj7w7x42nce0Qdn1GQ3Y8xyCw== } + dev: false + + /@intervolga/optimize-cssnano-plugin/1.0.6_webpack@4.46.0: + resolution: { integrity: sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== } + peerDependencies: + webpack: ^4.0.0 + dependencies: + cssnano: 4.1.10 + cssnano-preset-default: 4.0.7 + postcss: 7.0.35 + webpack: 4.46.0 + dev: true + + /@mrmlnc/readdir-enhanced/2.2.1: + resolution: { integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== } + engines: { node: '>=4' } + dependencies: + call-me-maybe: 1.0.1 + glob-to-regexp: 0.3.0 + dev: true + + /@nodelib/fs.stat/1.1.3: + resolution: { integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== } + engines: { node: '>= 6' } + dev: true + + /@rollup/pluginutils/4.1.0_rollup@2.48.0: + resolution: { integrity: sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== } + engines: { node: '>= 8.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.48.0 + dev: true + + /@samverschueren/stream-to-observable/0.3.1_rxjs@6.6.6: + resolution: { integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== } + engines: { node: '>=6' } + peerDependencies: + rxjs: '*' + zen-observable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + dependencies: + any-observable: 0.3.0_rxjs@6.6.6 + rxjs: 6.6.6 + transitivePeerDependencies: + - zenObservable + dev: true + + /@soda/friendly-errors-webpack-plugin/1.8.0_webpack@4.46.0: + resolution: { integrity: sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow== } + engines: { node: '>=8.0.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + chalk: 2.4.2 + error-stack-parser: 2.0.6 + string-width: 2.1.1 + strip-ansi: 5.2.0 + webpack: 4.46.0 + dev: true + + /@soda/get-current-script/1.0.2: + resolution: { integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== } + dev: true + + /@trysound/sax/0.1.1: + resolution: { integrity: sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== } + engines: { node: '>=10.13.0' } + dev: true + + /@types/d3-timer/2.0.1: + resolution: { integrity: sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA== } + dev: false + + /@types/eslint-visitor-keys/1.0.0: + resolution: { integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== } + dev: true + + /@types/glob/7.1.3: + resolution: { integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== } + dependencies: + '@types/minimatch': 3.0.3 + '@types/node': 14.14.35 + dev: true + + /@types/js-cookie/2.2.6: + resolution: { integrity: sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== } + dev: true + + /@types/json-schema/7.0.11: + resolution: { integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== } + + /@types/json5/0.0.29: + resolution: { integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== } + dev: true + + /@types/lodash-es/4.17.4: + resolution: { integrity: sha512-BBz79DCJbD2CVYZH67MBeHZRX++HF+5p8Mo5MzjZi64Wac39S3diedJYHZtScbRVf4DjZyN6LzA0SB0zy+HSSQ== } + dependencies: + '@types/lodash': 4.14.170 + dev: true + + /@types/lodash/4.14.170: + resolution: { integrity: sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== } + dev: true + + /@types/minimatch/3.0.3: + resolution: { integrity: sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== } + dev: true + + /@types/minimist/1.2.1: + resolution: { integrity: sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== } + dev: true + + /@types/node/14.14.35: + resolution: { integrity: sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== } + dev: true + + /@types/normalize-package-data/2.4.0: + resolution: { integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== } + dev: true + + /@types/nprogress/0.2.0: + resolution: { integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== } + dev: true + + /@types/parse-json/4.0.0: + resolution: { integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== } + dev: true + + /@types/q/1.5.4: + resolution: { integrity: sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== } + dev: true + + /@types/qs/6.9.6: + resolution: { integrity: sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== } + dev: true + + /@types/svgo/2.6.4: + resolution: { integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng== } + dependencies: + '@types/node': 14.14.35 + dev: true + + /@types/webpack-env/1.16.0: + resolution: { integrity: sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== } + dev: true + + /@typescript-eslint/eslint-plugin/2.34.0_jxzg2k43owi4xwrqkezmr5eq6m: + resolution: { integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + '@typescript-eslint/parser': ^2.0.0 + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + eslint: 6.8.0 + functional-red-black-tree: 1.0.1 + regexpp: 3.1.0 + tsutils: 3.21.0_typescript@3.9.9 + typescript: 3.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/2.34.0_hejjmlztrvmnsks456jx6n7lwi: + resolution: { integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==, tarball: http://10.69.17.33:9081/repository/bocloud-npm/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/typescript-estree': 2.34.0_typescript@3.9.9 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/2.34.0_hejjmlztrvmnsks456jx6n7lwi: + resolution: { integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@types/eslint-visitor-keys': 1.0.0 + '@typescript-eslint/experimental-utils': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + '@typescript-eslint/typescript-estree': 2.34.0_typescript@3.9.9 + eslint: 6.8.0 + eslint-visitor-keys: 1.3.0 + typescript: 3.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/2.34.0_typescript@3.9.9: + resolution: { integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + debug: 4.3.2 + eslint-visitor-keys: 1.3.0 + glob: 7.1.6 + is-glob: 4.0.1 + lodash: 4.17.21 + semver: 7.3.4 + tsutils: 3.21.0_typescript@3.9.9 + typescript: 3.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-helper-vue-jsx-merge-props/1.2.1: + resolution: { integrity: sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== } + dev: true + + /@vue/babel-helper-vue-transform-on/1.0.2: + resolution: { integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== } + dev: true + + /@vue/babel-plugin-jsx/1.0.3_@babel+core@7.14.3: + resolution: { integrity: sha512-+52ZQFmrM0yh61dQlgwQlfHZXmYbswbQEL25SOSt9QkjegAdfIGu87oELw0l8H6cuJYazZCiNjPR9eU++ZIbxg== } + dependencies: + '@babel/helper-module-imports': 7.13.12 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@babel/template': 7.12.13 + '@babel/traverse': 7.14.2 + '@babel/types': 7.14.2 + '@vue/babel-helper-vue-transform-on': 1.0.2 + camelcase: 6.2.0 + html-tags: 3.1.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@vue/babel-plugin-transform-vue-jsx/1.2.1_@babel+core@7.14.3: + resolution: { integrity: sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + html-tags: 2.0.0 + lodash.kebabcase: 4.1.1 + svg-tags: 1.0.0 + dev: true + + /@vue/babel-preset-app/4.5.12_core-js@3.9.1+vue@2.6.14: + resolution: { integrity: sha512-8q67ORQ9O0Ms0nlqsXTVhaBefRBaLrzPxOewAZhdcO7onHwcO5/wRdWtHhZgfpCZlhY7NogkU16z3WnorSSkEA== } + peerDependencies: + core-js: ^3 + vue: ^2 || ^3.0.0-0 + peerDependenciesMeta: + core-js: + optional: true + vue: + optional: true + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 + '@babel/helper-module-imports': 7.13.12 + '@babel/plugin-proposal-class-properties': 7.13.0_@babel+core@7.14.3 + '@babel/plugin-proposal-decorators': 7.13.5_@babel+core@7.14.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@babel/plugin-transform-runtime': 7.13.10_@babel+core@7.14.3 + '@babel/preset-env': 7.13.10_@babel+core@7.14.3 + '@babel/runtime': 7.13.10 + '@vue/babel-plugin-jsx': 1.0.3_@babel+core@7.14.3 + '@vue/babel-preset-jsx': 1.2.4_@babel+core@7.14.3 + babel-plugin-dynamic-import-node: 2.3.3 + core-js: 3.9.1 + core-js-compat: 3.9.1 + semver: 6.3.0 + vue: 2.6.14 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-preset-jsx/1.2.4_@babel+core@7.14.3: + resolution: { integrity: sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.14.3 + '@vue/babel-sugar-composition-api-inject-h': 1.2.1_@babel+core@7.14.3 + '@vue/babel-sugar-composition-api-render-instance': 1.2.4_@babel+core@7.14.3 + '@vue/babel-sugar-functional-vue': 1.2.2_@babel+core@7.14.3 + '@vue/babel-sugar-inject-h': 1.2.2_@babel+core@7.14.3 + '@vue/babel-sugar-v-model': 1.2.3_@babel+core@7.14.3 + '@vue/babel-sugar-v-on': 1.2.3_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-composition-api-inject-h/1.2.1_@babel+core@7.14.3: + resolution: { integrity: sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-composition-api-render-instance/1.2.4_@babel+core@7.14.3: + resolution: { integrity: sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-functional-vue/1.2.2_@babel+core@7.14.3: + resolution: { integrity: sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-inject-h/1.2.2_@babel+core@7.14.3: + resolution: { integrity: sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + dev: true + + /@vue/babel-sugar-v-model/1.2.3_@babel+core@7.14.3: + resolution: { integrity: sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.14.3 + camelcase: 5.3.1 + html-tags: 2.0.0 + svg-tags: 1.0.0 + dev: true + + /@vue/babel-sugar-v-on/1.2.3_@babel+core@7.14.3: + resolution: { integrity: sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/plugin-syntax-jsx': 7.12.13_@babel+core@7.14.3 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.14.3 + camelcase: 5.3.1 + dev: true + + /@vue/cli-overlay/4.5.12: + resolution: { integrity: sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg== } + dev: true + + /@vue/cli-plugin-babel/4.4.6_fjy6firl6adfsotiausbjoc7ky: + resolution: { integrity: sha512-9cX9mN+4DIbcqw3rV6UBOA0t5zikIkrBLQloUzsOBOu5Xb7/UoD7inInFj7bnyHUflr5LqbdWJ+etCQcWAIIXA== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@vue/babel-preset-app': 4.5.12_core-js@3.9.1+vue@2.6.14 + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + babel-loader: 8.2.2_cbkhbx5fgxs7mbneuvhppwa6q4 + cache-loader: 4.1.0_webpack@4.46.0 + thread-loader: 2.1.3_webpack@4.46.0 + webpack: 4.46.0 + transitivePeerDependencies: + - core-js + - supports-color + - vue + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-eslint/4.4.6_gckqw5ssyvaoozj2spmaxoeooq: + resolution: { integrity: sha512-3a9rVpOKPQsDgAlRkhmBMHboGobivG/47BbQGE66Z8YJxrgF/AWikP3Jy67SmxtszRkyiWfw4aJFRV9r3MzffQ== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + eslint: '>= 1.6.0' + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + eslint: 6.8.0 + eslint-loader: 2.2.1_pfvmeq6opgydpezktw7j2dwffi + globby: 9.2.0 + inquirer: 7.3.3 + webpack: 4.46.0 + yorkie: 2.0.0 + transitivePeerDependencies: + - supports-color + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-router/4.4.6_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-TkLdn0ZYo3zgn78Rk8doPlR+4UkGjGW2R1eGEaZEkue/mw2VhUWtTk9cKLZaYrw0eY8Ro/j+OV6mD+scyrairg== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + dev: true + + /@vue/cli-plugin-router/4.5.12_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + dev: true + + /@vue/cli-plugin-typescript/4.4.6_bf2tvjwiro5jzldu5wac7oah3u: + resolution: { integrity: sha512-FIIx9yqm19M62+2X4QwTrnlePdghsKnFbBPCHJawx3ULx30B11fL7X0uwmcq+kEAAHwAGBI6QyU7dgwPDRUCOw== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + typescript: '>=2' + vue-template-compiler: ^2.0.0 + peerDependenciesMeta: + vue-template-compiler: + optional: true + dependencies: + '@babel/core': 7.14.3 + '@types/webpack-env': 1.16.0 + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + '@vue/cli-shared-utils': 4.5.12 + babel-loader: 8.2.2_cbkhbx5fgxs7mbneuvhppwa6q4 + cache-loader: 4.1.0_webpack@4.46.0 + fork-ts-checker-webpack-plugin: 3.1.1_zdvo64nkvyqkp3vqjwxlvouqsa + globby: 9.2.0 + thread-loader: 2.1.3_webpack@4.46.0 + ts-loader: 6.2.2_typescript@3.9.9 + tslint: 5.20.1_typescript@3.9.9 + typescript: 3.9.9 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + yorkie: 2.0.0 + transitivePeerDependencies: + - eslint + - supports-color + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-vuex/4.4.6_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-Ho0YzUivn8BLPqFoFypntR8CMTEXYYHVr0GdnZW99XL+DbGw75f+tJfnrV9UFHDTfvZt7uewKiXDMlrzQ0l3Ug== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + dev: true + + /@vue/cli-plugin-vuex/4.5.12_@vue+cli-service@4.4.6: + resolution: { integrity: sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + dev: true + + /@vue/cli-service/4.4.6_tudvkij53ve6zhr6ltadnssrsa: + resolution: { integrity: sha512-k5OFGh2NnvRymCyq9DfBiNJvECUuun3pl5KMm3557IZyA5E5csv+RHoSW3dX8HHe0zXq18g52VswP1llvR9POw== } + engines: { node: '>=8' } + hasBin: true + peerDependencies: + less-loader: '*' + pug-plain-loader: '*' + raw-loader: '*' + sass-loader: '*' + stylus-loader: '*' + vue-template-compiler: ^2.0.0 + peerDependenciesMeta: + less-loader: + optional: true + pug-plain-loader: + optional: true + raw-loader: + optional: true + sass-loader: + optional: true + stylus-loader: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@intervolga/optimize-cssnano-plugin': 1.0.6_webpack@4.46.0 + '@soda/friendly-errors-webpack-plugin': 1.8.0_webpack@4.46.0 + '@soda/get-current-script': 1.0.2 + '@vue/cli-overlay': 4.5.12 + '@vue/cli-plugin-router': 4.5.12_@vue+cli-service@4.4.6 + '@vue/cli-plugin-vuex': 4.5.12_@vue+cli-service@4.4.6 + '@vue/cli-shared-utils': 4.5.12 + '@vue/component-compiler-utils': 3.2.0 + '@vue/preload-webpack-plugin': 1.1.2_kawgdd6iu7jv34d6smtvgjfc2a + '@vue/web-component-wrapper': 1.3.0 + acorn: 7.4.1 + acorn-walk: 7.2.0 + address: 1.1.2 + autoprefixer: 9.8.6 + browserslist: 4.16.3 + cache-loader: 4.1.0_webpack@4.46.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + cli-highlight: 2.1.10 + clipboardy: 2.3.0 + cliui: 6.0.0 + copy-webpack-plugin: 5.1.2_webpack@4.46.0 + css-loader: 3.6.0_webpack@4.46.0 + cssnano: 4.1.10 + debug: 4.3.2 + default-gateway: 5.0.5 + dotenv: 8.2.0 + dotenv-expand: 5.1.0 + file-loader: 4.3.0_webpack@4.46.0 + fs-extra: 7.0.1 + globby: 9.2.0 + hash-sum: 2.0.0 + html-webpack-plugin: 3.2.0_webpack@4.46.0 + launch-editor-middleware: 2.2.1 + lodash.defaultsdeep: 4.6.1 + lodash.mapvalues: 4.6.0 + lodash.transform: 4.6.0 + mini-css-extract-plugin: 0.9.0_webpack@4.46.0 + minimist: 1.2.5 + pnp-webpack-plugin: 1.6.4_typescript@3.9.9 + portfinder: 1.0.28 + postcss-loader: 3.0.0 + sass-loader: 8.0.2_sass@1.32.8 + ssri: 7.1.0 + terser-webpack-plugin: 2.3.8_webpack@4.46.0 + thread-loader: 2.1.3_webpack@4.46.0 + url-loader: 2.3.0_ke5umg2s3o4akbat3qvdol7cby + vue-loader: 15.9.6_m6jvttnwtqqy6l4pi5vsxiehsy + vue-style-loader: 4.1.3 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + webpack-bundle-analyzer: 3.9.0 + webpack-chain: 6.5.1 + webpack-dev-server: 3.11.2_webpack@4.46.0 + webpack-merge: 4.2.2 + transitivePeerDependencies: + - '@vue/compiler-sfc' + - arc-templates + - atpl + - babel-core + - bluebird + - bracket-template + - bufferutil + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - typescript + - underscore + - utf-8-validate + - vash + - velocityjs + - walrus + - webpack-cli + - webpack-command + - whiskers + dev: true + + /@vue/cli-shared-utils/4.5.12: + resolution: { integrity: sha512-qnIQPJ4XckMoqYh9fJ0Y91QKMIb4Hiibrm9+k4E15QHpk5RaokuOpf10SsOr2NLPCXSWsHOLo3hduZSwHPGY/Q== } + dependencies: + '@hapi/joi': 15.1.1 + chalk: 2.4.2 + execa: 1.0.0 + launch-editor: 2.2.1 + lru-cache: 5.1.1 + node-ipc: 9.1.4 + open: 6.4.0 + ora: 3.4.0 + read-pkg: 5.2.0 + request: 2.88.2 + semver: 6.3.0 + strip-ansi: 6.0.0 + dev: true + + /@vue/component-compiler-utils/3.2.0: + resolution: { integrity: sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw== } + dependencies: + consolidate: 0.15.1 + hash-sum: 1.0.2 + lru-cache: 4.1.5 + merge-source-map: 1.1.0 + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + source-map: 0.6.1 + vue-template-es2015-compiler: 1.9.1 + optionalDependencies: + prettier: 1.19.1 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /@vue/composition-api/1.7.2_vue@2.6.14: + resolution: { integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw== } + peerDependencies: + vue: '>= 2.5 < 2.7' + dependencies: + vue: 2.6.14 + dev: false + + /@vue/eslint-config-standard/5.1.2_bhlcpwu3qqosv22ubdlbjeklmy: + resolution: { integrity: sha512-FTz0k77dIrj9r3xskt9jsZyL/YprrLiPRf4m3k7G6dZ5PKuD6OPqYrHR9eduUmHDFpTlRgFpTVQrq+1el9k3QQ== } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + eslint: '>=6.2.2' + eslint-plugin-import: '>= 2.18.0' + eslint-plugin-node: '>= 9.1.0' + eslint-plugin-promise: '>= 4.2.1' + eslint-plugin-standard: '>= 4.0.0' + eslint-plugin-vue: '>= 6.1.2' + peerDependenciesMeta: + '@vue/cli-service': + optional: true + dependencies: + '@vue/cli-service': 4.4.6_tudvkij53ve6zhr6ltadnssrsa + eslint: 6.8.0 + eslint-config-standard: 14.1.1_qyawu2d3xgr7ylgq3z5dwgxn44 + eslint-import-resolver-node: 0.3.4 + eslint-import-resolver-webpack: 0.12.2_5r6sr333lc7gkp2zt7fcegg6vi + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.3.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + - webpack + dev: true + + /@vue/eslint-config-typescript/5.1.0_mfq4e2qj55uhlotzljeesvv4bm: + resolution: { integrity: sha512-wFAdPMWegKZOdbQBEWV4/KbOKuX/6Q5db3304kiWNBK+6P7+CoMrsbaKzJFjuAZF7fQR2fJtZT9ciGWVVT//vw== } + peerDependencies: + '@typescript-eslint/eslint-plugin': ^2.7.0 + '@typescript-eslint/parser': ^2.7.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint-plugin-vue: ^5.2.3 || ^6.0.0 || ^7.0.0-0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 2.34.0_jxzg2k43owi4xwrqkezmr5eq6m + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + eslint: 6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + typescript: 3.9.9 + vue-eslint-parser: 7.6.0_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/preload-webpack-plugin/1.1.2_kawgdd6iu7jv34d6smtvgjfc2a: + resolution: { integrity: sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== } + engines: { node: '>=6.0.0' } + peerDependencies: + html-webpack-plugin: '>=2.26.0' + webpack: '>=4.0.0' + dependencies: + html-webpack-plugin: 3.2.0_webpack@4.46.0 + webpack: 4.46.0 + dev: true + + /@vue/web-component-wrapper/1.3.0: + resolution: { integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== } + dev: true + + /@webassemblyjs/ast/1.9.0: + resolution: { integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== } + dependencies: + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + dev: true + + /@webassemblyjs/floating-point-hex-parser/1.9.0: + resolution: { integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== } + dev: true + + /@webassemblyjs/helper-api-error/1.9.0: + resolution: { integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== } + dev: true + + /@webassemblyjs/helper-buffer/1.9.0: + resolution: { integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== } + dev: true + + /@webassemblyjs/helper-code-frame/1.9.0: + resolution: { integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== } + dependencies: + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/helper-fsm/1.9.0: + resolution: { integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== } + dev: true + + /@webassemblyjs/helper-module-context/1.9.0: + resolution: { integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + dev: true + + /@webassemblyjs/helper-wasm-bytecode/1.9.0: + resolution: { integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== } + dev: true + + /@webassemblyjs/helper-wasm-section/1.9.0: + resolution: { integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + dev: true + + /@webassemblyjs/ieee754/1.9.0: + resolution: { integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== } + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128/1.9.0: + resolution: { integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== } + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8/1.9.0: + resolution: { integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== } + dev: true + + /@webassemblyjs/wasm-edit/1.9.0: + resolution: { integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/wasm-gen/1.9.0: + resolution: { integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wasm-opt/1.9.0: + resolution: { integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + dev: true + + /@webassemblyjs/wasm-parser/1.9.0: + resolution: { integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wast-parser/1.9.0: + resolution: { integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/wast-printer/1.9.0: + resolution: { integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== } + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754/1.2.0: + resolution: { integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== } + dev: true + + /@xtuc/long/4.2.2: + resolution: { integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== } + dev: true + + /JSONStream/1.3.5: + resolution: { integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== } + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /accepts/1.3.7: + resolution: { integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== } + engines: { node: '>= 0.6' } + dependencies: + mime-types: 2.1.29 + negotiator: 0.6.2 + dev: true + + /acorn-jsx/5.3.1_acorn@7.4.1: + resolution: { integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-walk/7.2.0: + resolution: { integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== } + engines: { node: '>=0.4.0' } + dev: true + + /acorn/6.4.2: + resolution: { integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /acorn/7.4.1: + resolution: { integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /acorn/8.8.1: + resolution: { integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== } + engines: { node: '>=0.4.0' } + hasBin: true + dev: true + + /address/1.1.2: + resolution: { integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== } + engines: { node: '>= 0.12.0' } + dev: true + + /aggregate-error/3.1.0: + resolution: { integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== } + engines: { node: '>=8' } + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-errors/1.0.1_ajv@6.12.6: + resolution: { integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== } + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: { integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== } + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv/6.12.6: + resolution: { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /alphanum-sort/1.0.2: + resolution: { integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== } + dev: true + + /ansi-colors/3.2.4: + resolution: { integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== } + engines: { node: '>=6' } + dev: true + + /ansi-escapes/3.2.0: + resolution: { integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== } + engines: { node: '>=4' } + dev: true + + /ansi-escapes/4.3.1: + resolution: { integrity: sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== } + engines: { node: '>=8' } + dependencies: + type-fest: 0.11.0 + dev: true + + /ansi-html/0.0.7: + resolution: { integrity: sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== } + engines: { '0': node >= 0.8.0 } + hasBin: true + dev: true + + /ansi-regex/2.1.1: + resolution: { integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== } + engines: { node: '>=0.10.0' } + dev: true + + /ansi-regex/3.0.0: + resolution: { integrity: sha512-wFUFA5bg5dviipbQQ32yOQhl6gcJaJXiHE7dvR8VYPG97+J/GNC5FKGepKdEDUFeXRzDxPF1X/Btc8L+v7oqIQ== } + engines: { node: '>=4' } + dev: true + + /ansi-regex/4.1.0: + resolution: { integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== } + engines: { node: '>=6' } + dev: true + + /ansi-regex/5.0.0: + resolution: { integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== } + engines: { node: '>=8' } + dev: true + + /ansi-styles/2.2.1: + resolution: { integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== } + engines: { node: '>=0.10.0' } + dev: true + + /ansi-styles/3.2.1: + resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } + engines: { node: '>=4' } + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: '>=8' } + dependencies: + color-convert: 2.0.1 + dev: true + + /any-observable/0.3.0_rxjs@6.6.6: + resolution: { integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== } + engines: { node: '>=6' } + peerDependencies: + rxjs: '*' + zenObservable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zenObservable: + optional: true + dependencies: + rxjs: 6.6.6 + dev: true + + /any-promise/1.3.0: + resolution: { integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== } + dev: true + + /anymatch/2.0.0: + resolution: { integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== } + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /anymatch/2.0.0_supports-color@6.1.0: + resolution: { integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== } + dependencies: + micromatch: 3.1.10_supports-color@6.1.0 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /anymatch/3.1.2: + resolution: { integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== } + engines: { node: '>= 8' } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /aproba/1.2.0: + resolution: { integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== } + dev: true + + /arch/2.2.0: + resolution: { integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== } + dev: true + + /argparse/1.0.10: + resolution: { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== } + dependencies: + sprintf-js: 1.0.3 + dev: true + + /arr-diff/4.0.0: + resolution: { integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== } + engines: { node: '>=0.10.0' } + dev: true + + /arr-flatten/1.1.0: + resolution: { integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== } + engines: { node: '>=0.10.0' } + dev: true + + /arr-union/3.1.0: + resolution: { integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== } + engines: { node: '>=0.10.0' } + dev: true + + /array-find/1.0.0: + resolution: { integrity: sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== } + dev: true + + /array-flatten/1.1.1: + resolution: { integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== } + dev: true + + /array-flatten/2.1.2: + resolution: { integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== } + dev: true + + /array-ify/1.0.0: + resolution: { integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== } + dev: true + + /array-includes/3.1.3: + resolution: { integrity: sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + get-intrinsic: 1.1.1 + is-string: 1.0.5 + dev: true + + /array-union/1.0.2: + resolution: { integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== } + engines: { node: '>=0.10.0' } + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-uniq/1.0.3: + resolution: { integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== } + engines: { node: '>=0.10.0' } + dev: true + + /array-unique/0.3.2: + resolution: { integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== } + engines: { node: '>=0.10.0' } + dev: true + + /array.prototype.flat/1.2.4: + resolution: { integrity: sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + dev: true + + /arrify/1.0.1: + resolution: { integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== } + engines: { node: '>=0.10.0' } + dev: true + + /asn1.js/5.4.1: + resolution: { integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== } + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /asn1/0.2.4: + resolution: { integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== } + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: { integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== } + engines: { node: '>=0.8' } + dev: true + + /assert/1.5.0: + resolution: { integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== } + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + dev: true + + /assign-symbols/1.0.0: + resolution: { integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== } + engines: { node: '>=0.10.0' } + dev: true + + /astral-regex/1.0.0: + resolution: { integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== } + engines: { node: '>=4' } + dev: true + + /async-each/1.0.3: + resolution: { integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== } + dev: true + + /async-limiter/1.0.1: + resolution: { integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== } + dev: true + + /async-validator/1.8.5: + resolution: { integrity: sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA== } + dependencies: + babel-runtime: 6.26.0 + dev: false + + /async/0.9.2: + resolution: { integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw== } + dev: true + + /async/2.4.1: + resolution: { integrity: sha512-l4FGEG4ckq1nC3PSqULdowskm65HBAQfHPG4XH7VLRq0ZKsCWkcfLjVymfLrloqgrvijJrft/mPftclykhTA7w== } + dependencies: + lodash: 4.17.21 + dev: true + + /async/2.6.3: + resolution: { integrity: sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== } + dependencies: + lodash: 4.17.21 + dev: true + + /asynckit/0.4.0: + resolution: { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== } + dev: true + + /at-least-node/1.0.0: + resolution: { integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== } + engines: { node: '>= 4.0.0' } + dev: true + + /atob/2.1.2: + resolution: { integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== } + engines: { node: '>= 4.5.0' } + hasBin: true + dev: true + + /autoprefixer/9.8.6: + resolution: { integrity: sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== } + hasBin: true + dependencies: + browserslist: 4.16.3 + caniuse-lite: 1.0.30001228 + colorette: 1.2.2 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + postcss: 7.0.35 + postcss-value-parser: 4.1.0 + dev: true + + /aws-sign2/0.7.0: + resolution: { integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== } + dev: true + + /aws4/1.11.0: + resolution: { integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== } + dev: true + + /axios/0.21.1: + resolution: { integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== } + dependencies: + follow-redirects: 1.13.3 + transitivePeerDependencies: + - debug + dev: false + + /babel-code-frame/6.26.0: + resolution: { integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== } + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + dev: true + + /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: + resolution: { integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== } + dependencies: + babel-helper-explode-assignable-expression: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-call-delegate/6.24.1: + resolution: { integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== } + dependencies: + babel-helper-hoist-variables: 6.24.1 + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-define-map/6.26.0: + resolution: { integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== } + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-explode-assignable-expression/6.24.1: + resolution: { integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== } + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-function-name/6.24.1: + resolution: { integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== } + dependencies: + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-get-function-arity/6.24.1: + resolution: { integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-hoist-variables/6.24.1: + resolution: { integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-optimise-call-expression/6.24.1: + resolution: { integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-regex/6.26.0: + resolution: { integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + dev: true + + /babel-helper-remap-async-to-generator/6.24.1: + resolution: { integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== } + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-replace-supers/6.24.1: + resolution: { integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== } + dependencies: + babel-helper-optimise-call-expression: 6.24.1 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-vue-jsx-merge-props/2.0.3: + resolution: { integrity: sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== } + dev: false + + /babel-loader/8.2.2_cbkhbx5fgxs7mbneuvhppwa6q4: + resolution: { integrity: sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== } + engines: { node: '>= 8.9' } + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.14.3 + find-cache-dir: 3.3.1 + loader-utils: 1.4.2 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /babel-messages/6.23.0: + resolution: { integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-check-es2015-constants/6.22.0: + resolution: { integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: { integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== } + dependencies: + object.assign: 4.1.2 + dev: true + + /babel-plugin-polyfill-corejs2/0.1.10_@babel+core@7.14.3: + resolution: { integrity: sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.14.0 + '@babel/core': 7.14.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.14.3: + resolution: { integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + core-js-compat: 3.9.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.1.6_@babel+core@7.14.3: + resolution: { integrity: sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg== } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.14.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-syntax-async-functions/6.13.0: + resolution: { integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== } + dev: true + + /babel-plugin-syntax-exponentiation-operator/6.13.0: + resolution: { integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== } + dev: true + + /babel-plugin-syntax-trailing-function-commas/6.22.0: + resolution: { integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== } + dev: true + + /babel-plugin-transform-async-to-generator/6.24.1: + resolution: { integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== } + dependencies: + babel-helper-remap-async-to-generator: 6.24.1 + babel-plugin-syntax-async-functions: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-arrow-functions/6.22.0: + resolution: { integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-block-scoped-functions/6.22.0: + resolution: { integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-block-scoping/6.26.0: + resolution: { integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== } + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-classes/6.24.1: + resolution: { integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== } + dependencies: + babel-helper-define-map: 6.26.0 + babel-helper-function-name: 6.24.1 + babel-helper-optimise-call-expression: 6.24.1 + babel-helper-replace-supers: 6.24.1 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-computed-properties/6.24.1: + resolution: { integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== } + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-destructuring/6.23.0: + resolution: { integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-duplicate-keys/6.24.1: + resolution: { integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-for-of/6.23.0: + resolution: { integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-function-name/6.24.1: + resolution: { integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== } + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-literals/6.22.0: + resolution: { integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-modules-amd/6.24.1: + resolution: { integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== } + dependencies: + babel-plugin-transform-es2015-modules-commonjs: 6.26.2 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-commonjs/6.26.2: + resolution: { integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== } + dependencies: + babel-plugin-transform-strict-mode: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-systemjs/6.24.1: + resolution: { integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== } + dependencies: + babel-helper-hoist-variables: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-umd/6.24.1: + resolution: { integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== } + dependencies: + babel-plugin-transform-es2015-modules-amd: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-object-super/6.24.1: + resolution: { integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== } + dependencies: + babel-helper-replace-supers: 6.24.1 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-parameters/6.24.1: + resolution: { integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== } + dependencies: + babel-helper-call-delegate: 6.24.1 + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-shorthand-properties/6.24.1: + resolution: { integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-spread/6.22.0: + resolution: { integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-sticky-regex/6.24.1: + resolution: { integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== } + dependencies: + babel-helper-regex: 6.26.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-template-literals/6.22.0: + resolution: { integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-typeof-symbol/6.23.0: + resolution: { integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== } + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-unicode-regex/6.24.1: + resolution: { integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== } + dependencies: + babel-helper-regex: 6.26.0 + babel-runtime: 6.26.0 + regexpu-core: 2.0.0 + dev: true + + /babel-plugin-transform-exponentiation-operator/6.24.1: + resolution: { integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== } + dependencies: + babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 + babel-plugin-syntax-exponentiation-operator: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-regenerator/6.26.0: + resolution: { integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== } + dependencies: + regenerator-transform: 0.10.1 + dev: true + + /babel-plugin-transform-strict-mode/6.24.1: + resolution: { integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-preset-env/1.7.0: + resolution: { integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== } + dependencies: + babel-plugin-check-es2015-constants: 6.22.0 + babel-plugin-syntax-trailing-function-commas: 6.22.0 + babel-plugin-transform-async-to-generator: 6.24.1 + babel-plugin-transform-es2015-arrow-functions: 6.22.0 + babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 + babel-plugin-transform-es2015-block-scoping: 6.26.0 + babel-plugin-transform-es2015-classes: 6.24.1 + babel-plugin-transform-es2015-computed-properties: 6.24.1 + babel-plugin-transform-es2015-destructuring: 6.23.0 + babel-plugin-transform-es2015-duplicate-keys: 6.24.1 + babel-plugin-transform-es2015-for-of: 6.23.0 + babel-plugin-transform-es2015-function-name: 6.24.1 + babel-plugin-transform-es2015-literals: 6.22.0 + babel-plugin-transform-es2015-modules-amd: 6.24.1 + babel-plugin-transform-es2015-modules-commonjs: 6.26.2 + babel-plugin-transform-es2015-modules-systemjs: 6.24.1 + babel-plugin-transform-es2015-modules-umd: 6.24.1 + babel-plugin-transform-es2015-object-super: 6.24.1 + babel-plugin-transform-es2015-parameters: 6.24.1 + babel-plugin-transform-es2015-shorthand-properties: 6.24.1 + babel-plugin-transform-es2015-spread: 6.22.0 + babel-plugin-transform-es2015-sticky-regex: 6.24.1 + babel-plugin-transform-es2015-template-literals: 6.22.0 + babel-plugin-transform-es2015-typeof-symbol: 6.23.0 + babel-plugin-transform-es2015-unicode-regex: 6.24.1 + babel-plugin-transform-exponentiation-operator: 6.24.1 + babel-plugin-transform-regenerator: 6.26.0 + browserslist: 3.2.8 + invariant: 2.2.4 + semver: 5.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-runtime/6.26.0: + resolution: { integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== } + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + /babel-template/6.26.0: + resolution: { integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== } + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-traverse/6.26.0: + resolution: { integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== } + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-types/6.26.0: + resolution: { integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== } + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + dev: true + + /babylon/6.18.0: + resolution: { integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== } + hasBin: true + dev: true + + /balanced-match/1.0.0: + resolution: { integrity: sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg== } + dev: true + + /base/0.11.2: + resolution: { integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== } + engines: { node: '>=0.10.0' } + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /base64-js/1.5.1: + resolution: { integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== } + dev: true + + /batch-processor/1.0.0: + resolution: { integrity: sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA== } + dev: false + + /batch/0.6.1: + resolution: { integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== } + dev: true + + /bcrypt-pbkdf/1.0.2: + resolution: { integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== } + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bfj/6.1.2: + resolution: { integrity: sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== } + engines: { node: '>= 6.0.0' } + dependencies: + bluebird: 3.7.2 + check-types: 8.0.3 + hoopy: 0.1.4 + tryer: 1.0.1 + dev: true + + /big.js/3.2.0: + resolution: { integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== } + dev: true + + /big.js/5.2.2: + resolution: { integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== } + + /binary-extensions/1.13.1: + resolution: { integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== } + engines: { node: '>=0.10.0' } + dev: true + + /binary-extensions/2.2.0: + resolution: { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } + engines: { node: '>=8' } + dev: true + + /bindings/1.5.0: + resolution: { integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== } + requiresBuild: true + dependencies: + file-uri-to-path: 1.0.0 + dev: true + optional: true + + /bl/4.1.0: + resolution: { integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== } + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /bluebird/3.7.2: + resolution: { integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== } + dev: true + + /bn.js/4.12.0: + resolution: { integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== } + dev: true + + /bn.js/5.2.0: + resolution: { integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== } + dev: true + + /body-parser/1.19.0: + resolution: { integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.0 + content-type: 1.0.4 + debug: 2.6.9 + depd: 1.1.2 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.7.0 + raw-body: 2.4.0 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color + dev: true + + /body-parser/1.19.0_supports-color@6.1.0: + resolution: { integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.0 + content-type: 1.0.4 + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.7.0 + raw-body: 2.4.0 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour/3.5.0: + resolution: { integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== } + dependencies: + array-flatten: 2.1.2 + deep-equal: 1.1.1 + dns-equal: 1.0.0 + dns-txt: 2.0.2 + multicast-dns: 6.2.3 + multicast-dns-service-types: 1.1.0 + dev: true + + /boolbase/1.0.0: + resolution: { integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== } + dev: true + + /brace-expansion/1.1.11: + resolution: { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } + dependencies: + balanced-match: 1.0.0 + concat-map: 0.0.1 + dev: true + + /braces/2.3.2: + resolution: { integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== } + engines: { node: '>=0.10.0' } + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/2.3.2_supports-color@6.1.0: + resolution: { integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== } + engines: { node: '>=0.10.0' } + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/3.0.2: + resolution: { integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== } + engines: { node: '>=8' } + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand/1.1.0: + resolution: { integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== } + dev: true + + /browserify-aes/1.2.0: + resolution: { integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== } + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher/1.0.1: + resolution: { integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== } + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des/1.0.2: + resolution: { integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== } + dependencies: + cipher-base: 1.0.4 + des.js: 1.0.1 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa/4.1.0: + resolution: { integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== } + dependencies: + bn.js: 5.2.0 + randombytes: 2.1.0 + dev: true + + /browserify-sign/4.2.1: + resolution: { integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== } + dependencies: + bn.js: 5.2.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib/0.2.0: + resolution: { integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== } + dependencies: + pako: 1.0.11 + dev: true + + /browserslist/3.2.8: + resolution: { integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001228 + electron-to-chromium: 1.3.734 + dev: true + + /browserslist/4.16.3: + resolution: { integrity: sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001228 + colorette: 1.2.2 + electron-to-chromium: 1.3.734 + escalade: 3.1.1 + node-releases: 1.1.71 + dev: true + + /buffer-from/1.1.1: + resolution: { integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== } + dev: true + + /buffer-indexof/1.1.1: + resolution: { integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== } + dev: true + + /buffer-json/2.0.0: + resolution: { integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== } + dev: true + + /buffer-xor/1.0.3: + resolution: { integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== } + dev: true + + /buffer/4.9.2: + resolution: { integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + + /buffer/5.7.1: + resolution: { integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-modules/1.1.1: + resolution: { integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== } + engines: { node: '>=0.10.0' } + dev: true + + /builtin-status-codes/3.0.0: + resolution: { integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== } + dev: true + + /bytes/3.0.0: + resolution: { integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== } + engines: { node: '>= 0.8' } + dev: true + + /bytes/3.1.0: + resolution: { integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== } + engines: { node: '>= 0.8' } + dev: true + + /cacache/12.0.4: + resolution: { integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== } + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.1.6 + graceful-fs: 4.2.6 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.5 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 6.0.1 + unique-filename: 1.1.1 + y18n: 4.0.1 + dev: true + + /cacache/13.0.1: + resolution: { integrity: sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== } + engines: { node: '>= 8' } + dependencies: + chownr: 1.1.4 + figgy-pudding: 3.5.2 + fs-minipass: 2.1.0 + glob: 7.1.6 + graceful-fs: 4.2.6 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + minipass: 3.1.3 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 0.5.5 + move-concurrently: 1.0.1 + p-map: 3.0.0 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 7.1.0 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cache-base/1.0.1: + resolution: { integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== } + engines: { node: '>=0.10.0' } + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /cache-loader/4.1.0_webpack@4.46.0: + resolution: { integrity: sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 + dependencies: + buffer-json: 2.0.0 + find-cache-dir: 3.3.1 + loader-utils: 1.4.2 + mkdirp: 0.5.5 + neo-async: 2.6.2 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /call-bind/1.0.2: + resolution: { integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + + /call-me-maybe/1.0.1: + resolution: { integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== } + dev: true + + /caller-callsite/2.0.0: + resolution: { integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== } + engines: { node: '>=4' } + dependencies: + callsites: 2.0.0 + dev: true + + /caller-path/2.0.0: + resolution: { integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== } + engines: { node: '>=4' } + dependencies: + caller-callsite: 2.0.0 + dev: true + + /callsites/2.0.0: + resolution: { integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== } + engines: { node: '>=4' } + dev: true + + /callsites/3.1.0: + resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: '>=6' } + dev: true + + /camel-case/3.0.0: + resolution: { integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== } + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /camelcase-keys/6.2.2: + resolution: { integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== } + engines: { node: '>=8' } + dependencies: + camelcase: 5.3.1 + map-obj: 4.2.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: { integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== } + engines: { node: '>=6' } + dev: true + + /camelcase/6.2.0: + resolution: { integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== } + engines: { node: '>=10' } + dev: true + + /caniuse-api/3.0.0: + resolution: { integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== } + dependencies: + browserslist: 4.16.3 + caniuse-lite: 1.0.30001228 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001228: + resolution: { integrity: sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== } + dev: true + + /case-sensitive-paths-webpack-plugin/2.4.0: + resolution: { integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== } + engines: { node: '>=4' } + dev: true + + /caseless/0.12.0: + resolution: { integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== } + dev: true + + /chalk/1.1.3: + resolution: { integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== } + engines: { node: '>=0.10.0' } + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/2.4.2: + resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } + engines: { node: '>=4' } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.0: + resolution: { integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/4.1.1: + resolution: { integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chardet/0.7.0: + resolution: { integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== } + dev: true + + /check-types/8.0.3: + resolution: { integrity: sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== } + dev: true + + /chokidar/2.1.8: + resolution: { integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== } + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /chokidar/2.1.8_supports-color@6.1.0: + resolution: { integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== } + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0_supports-color@6.1.0 + async-each: 1.0.3 + braces: 2.3.2_supports-color@6.1.0 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1_supports-color@6.1.0 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + + /chokidar/3.5.3: + resolution: { integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== } + engines: { node: '>= 8.10.0' } + requiresBuild: true + 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 + dev: true + + /chownr/1.1.4: + resolution: { integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== } + dev: true + + /chrome-trace-event/1.0.2: + resolution: { integrity: sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== } + engines: { node: '>=6.0' } + dependencies: + tslib: 1.14.1 + dev: true + + /ci-info/1.6.0: + resolution: { integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== } + dev: true + + /ci-info/2.0.0: + resolution: { integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== } + dev: true + + /cipher-base/1.0.4: + resolution: { integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== } + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /class-utils/0.3.6: + resolution: { integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /clean-css/4.2.3: + resolution: { integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== } + engines: { node: '>= 4.0' } + dependencies: + source-map: 0.6.1 + dev: true + + /clean-stack/2.2.0: + resolution: { integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== } + engines: { node: '>=6' } + dev: true + + /cli-cursor/2.1.0: + resolution: { integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== } + engines: { node: '>=4' } + dependencies: + restore-cursor: 2.0.0 + dev: true + + /cli-cursor/3.1.0: + resolution: { integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== } + engines: { node: '>=8' } + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-highlight/2.1.10: + resolution: { integrity: sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw== } + engines: { node: '>=8.0.0', npm: '>=5.0.0' } + hasBin: true + dependencies: + chalk: 4.1.1 + highlight.js: 10.7.1 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + dev: true + + /cli-spinners/2.6.0: + resolution: { integrity: sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== } + engines: { node: '>=6' } + dev: true + + /cli-truncate/0.2.1: + resolution: { integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== } + engines: { node: '>=0.10.0' } + dependencies: + slice-ansi: 0.0.4 + string-width: 1.0.2 + dev: true + + /cli-width/3.0.0: + resolution: { integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== } + engines: { node: '>= 10' } + dev: true + + /clipboard/2.0.8: + resolution: { integrity: sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ== } + dependencies: + good-listener: 1.2.2 + select: 1.1.2 + tiny-emitter: 2.1.0 + dev: false + + /clipboardy/2.3.0: + resolution: { integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== } + engines: { node: '>=8' } + dependencies: + arch: 2.2.0 + execa: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /cliui/5.0.0: + resolution: { integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== } + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + + /cliui/6.0.0: + resolution: { integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== } + dependencies: + string-width: 4.2.2 + strip-ansi: 6.0.0 + wrap-ansi: 6.2.0 + dev: true + + /cliui/7.0.4: + resolution: { integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== } + dependencies: + string-width: 4.2.2 + strip-ansi: 6.0.0 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep/4.0.1: + resolution: { integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== } + engines: { node: '>=6' } + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone/1.0.4: + resolution: { integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== } + engines: { node: '>=0.8' } + dev: true + + /clone/2.1.2: + resolution: { integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== } + engines: { node: '>=0.8' } + dev: true + + /cmp-echarts/2.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm: + resolution: { integrity: sha512-xq2EuFiOQWTIWO9RVqVrfiruveZC0aaQOcAhhXjV6KJj9Ja9NihBnrBEsPe54r+Ah35pXKT5jnVtnaz8V2kNoA== } + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.6.11 + dependencies: + '@vue/composition-api': 1.7.2_vue@2.6.14 + core-js: 3.9.1 + echarts: 5.3.1 + echarts-liquidfill: 3.1.0_echarts@5.3.1 + element-ui: 2.15.1_vue@2.6.14 + lodash-es: 4.17.21 + vue: 2.6.14 + vue-router: 3.5.1_vue@2.6.14 + dev: false + + /cmp-element/1.0.0-5.6-release_w6byxhhjt3kc4nreagfk5h2rbm: + resolution: { integrity: sha512-zVv228zaO5n5iI3FOSysJnnEur2sJ2GaHfPhoXY8vWohPyj+u/Y6qBUfbR5PsNpwo3Dm8naFt1rApT8WD7BRBA== } + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.6.11 + dependencies: + '@vue/composition-api': 1.7.2_vue@2.6.14 + codemirror: 5.65.9 + core-js: 3.9.1 + element-ui: 2.15.1_vue@2.6.14 + lodash-es: 4.17.21 + vue: 2.6.14 + vue-router: 3.5.1_vue@2.6.14 + vuedraggable: 2.24.3 + dev: false + + /cmp-socket/1.0.0: + resolution: { integrity: sha512-2TdIGicSanZbxEwENDg77ZmvJhTGvyCUqdbfzcwgXjoLIj0JoAOGgoVfvQTVITo6eiHLmbd3mtHN42cYa0MT0g== } + dev: false + + /coa/2.0.2: + resolution: { integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== } + engines: { node: '>= 4.0' } + dependencies: + '@types/q': 1.5.4 + chalk: 2.4.2 + q: 1.5.1 + dev: true + + /code-point-at/1.1.0: + resolution: { integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== } + engines: { node: '>=0.10.0' } + dev: true + + /codemirror/5.65.9: + resolution: { integrity: sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw== } + dev: false + + /collection-visit/1.0.0: + resolution: { integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== } + engines: { node: '>=0.10.0' } + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert/1.9.3: + resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } + engines: { node: '>=7.0.0' } + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } + + /color-name/1.1.4: + resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } + + /color-string/1.5.5: + resolution: { integrity: sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== } + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + /color/3.1.3: + resolution: { integrity: sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== } + dependencies: + color-convert: 1.9.3 + color-string: 1.5.5 + + /colorette/1.2.2: + resolution: { integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== } + dev: true + + /combined-stream/1.0.8: + resolution: { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== } + engines: { node: '>= 0.8' } + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.17.1: + resolution: { integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== } + dev: true + + /commander/2.19.0: + resolution: { integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== } + dev: true + + /commander/2.20.3: + resolution: { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== } + dev: true + + /commander/7.2.0: + resolution: { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } + engines: { node: '>= 10' } + dev: true + + /commondir/1.0.1: + resolution: { integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== } + dev: true + + /compare-func/2.0.0: + resolution: { integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== } + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /component-emitter/1.3.0: + resolution: { integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== } + dev: true + + /compress-webpack-plugin/1.0.6: + resolution: { integrity: sha512-BEnN7bzKUGHK2pnGr7mo56Tw6rldaJr6CVTR30oL9FHcjdgu//cSTkWwYAT/p+18qF/Dtujtvzs5uVyL5sllsw== } + engines: { node: '>= 4.3 < 5.0.0 || >= 5.10' } + dependencies: + async: 2.4.1 + webpack-sources: 1.4.3 + dev: true + + /compressible/2.0.18: + resolution: { integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.46.0 + dev: true + + /compression/1.7.4_supports-color@6.1.0: + resolution: { integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== } + engines: { node: '>= 0.8.0' } + dependencies: + accepts: 1.3.7 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9_supports-color@6.1.0 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map/0.0.1: + resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } + dev: true + + /concat-stream/1.6.2: + resolution: { integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== } + engines: { '0': node >= 0.8 } + dependencies: + buffer-from: 1.1.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + + /connect-history-api-fallback/1.6.0: + resolution: { integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== } + engines: { node: '>=0.8' } + dev: true + + /console-browserify/1.2.0: + resolution: { integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== } + dev: true + + /consolidate/0.15.1: + resolution: { integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== } + engines: { node: '>= 0.10.0' } + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + + /consolidate/0.16.0: + resolution: { integrity: sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ== } + engines: { node: '>= 0.10.0' } + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^4.0.1 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + + /constants-browserify/1.0.0: + resolution: { integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== } + dev: true + + /contains-path/0.1.0: + resolution: { integrity: sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== } + engines: { node: '>=0.10.0' } + dev: true + + /content-disposition/0.5.3: + resolution: { integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== } + engines: { node: '>= 0.6' } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /content-type/1.0.4: + resolution: { integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== } + engines: { node: '>= 0.6' } + dev: true + + /conventional-changelog-angular/5.0.12: + resolution: { integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== } + engines: { node: '>=10' } + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + dev: true + + /conventional-changelog-conventionalcommits/4.5.0: + resolution: { integrity: sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw== } + engines: { node: '>=10' } + dependencies: + compare-func: 2.0.0 + lodash: 4.17.21 + q: 1.5.1 + dev: true + + /conventional-commits-parser/3.2.1: + resolution: { integrity: sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== } + engines: { node: '>=10' } + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + trim-off-newlines: 1.0.1 + dev: true + + /convert-source-map/1.7.0: + resolution: { integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /cookie-signature/1.0.6: + resolution: { integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== } + dev: true + + /cookie/0.4.0: + resolution: { integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== } + engines: { node: '>= 0.6' } + dev: true + + /copy-concurrently/1.0.5: + resolution: { integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== } + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.5 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /copy-descriptor/0.1.1: + resolution: { integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== } + engines: { node: '>=0.10.0' } + dev: true + + /copy-webpack-plugin/5.1.2_webpack@4.46.0: + resolution: { integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== } + engines: { node: '>= 6.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + glob-parent: 3.1.0 + globby: 7.1.1 + is-glob: 4.0.1 + loader-utils: 1.4.2 + minimatch: 3.0.4 + normalize-path: 3.0.0 + p-limit: 2.3.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + webpack: 4.46.0 + webpack-log: 2.0.0 + dev: true + + /core-js-compat/3.9.1: + resolution: { integrity: sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== } + dependencies: + browserslist: 4.16.3 + semver: 7.0.0 + dev: true + + /core-js-pure/3.11.0: + resolution: { integrity: sha512-PxEiQGjzC+5qbvE7ZIs5Zn6BynNeZO9zHhrrWmkRff2SZLq0CE/H5LuZOJHhmOQ8L38+eMzEHAmPYWrUtDfuDQ== } + requiresBuild: true + dev: false + + /core-js/2.6.12: + resolution: { integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== } + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + + /core-js/3.9.1: + resolution: { integrity: sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== } + requiresBuild: true + + /core-util-is/1.0.2: + resolution: { integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== } + dev: true + + /cors/2.8.5: + resolution: { integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== } + engines: { node: '>= 0.10' } + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig/5.2.1: + resolution: { integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== } + engines: { node: '>=4' } + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + dev: true + + /cosmiconfig/7.0.0: + resolution: { integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== } + engines: { node: '>=10' } + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /create-ecdh/4.0.4: + resolution: { integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== } + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash/1.2.0: + resolution: { integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== } + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac/1.1.7: + resolution: { integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== } + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /cross-env/5.2.1: + resolution: { integrity: sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ== } + engines: { node: '>=4.0' } + hasBin: true + dependencies: + cross-spawn: 6.0.5 + dev: true + + /cross-spawn/5.1.0: + resolution: { integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== } + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/6.0.5: + resolution: { integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== } + engines: { node: '>=4.8' } + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/7.0.3: + resolution: { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } + engines: { node: '>= 8' } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-browserify/3.12.0: + resolution: { integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== } + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.1 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /crypto-js/3.3.0: + resolution: { integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== } + dev: false + + /css-color-names/0.0.4: + resolution: { integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== } + dev: true + + /css-declaration-sorter/4.0.1: + resolution: { integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== } + engines: { node: '>4' } + dependencies: + postcss: 7.0.35 + timsort: 0.3.0 + dev: true + + /css-loader/3.6.0_webpack@4.46.0: + resolution: { integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + camelcase: 5.3.1 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 1.4.2 + normalize-path: 3.0.0 + postcss: 7.0.35 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.1.0 + schema-utils: 2.7.1 + semver: 6.3.0 + webpack: 4.46.0 + dev: true + + /css-select-base-adapter/0.1.1: + resolution: { integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== } + dev: true + + /css-select/2.1.0: + resolution: { integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== } + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: true + + /css-select/3.1.2: + resolution: { integrity: sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== } + dependencies: + boolbase: 1.0.0 + css-what: 4.0.0 + domhandler: 4.2.0 + domutils: 2.6.0 + nth-check: 2.0.0 + dev: true + + /css-tree/1.0.0-alpha.37: + resolution: { integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== } + engines: { node: '>=8.0.0' } + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: true + + /css-tree/1.1.2: + resolution: { integrity: sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== } + engines: { node: '>=8.0.0' } + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/3.4.2: + resolution: { integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== } + engines: { node: '>= 6' } + dev: true + + /css-what/4.0.0: + resolution: { integrity: sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== } + engines: { node: '>= 6' } + dev: true + + /cssesc/3.0.0: + resolution: { integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /cssnano-preset-default/4.0.7: + resolution: { integrity: sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== } + engines: { node: '>=6.9.0' } + dependencies: + css-declaration-sorter: 4.0.1 + cssnano-util-raw-cache: 4.0.1 + postcss: 7.0.35 + postcss-calc: 7.0.5 + postcss-colormin: 4.0.3 + postcss-convert-values: 4.0.1 + postcss-discard-comments: 4.0.2 + postcss-discard-duplicates: 4.0.2 + postcss-discard-empty: 4.0.1 + postcss-discard-overridden: 4.0.1 + postcss-merge-longhand: 4.0.11 + postcss-merge-rules: 4.0.3 + postcss-minify-font-values: 4.0.2 + postcss-minify-gradients: 4.0.2 + postcss-minify-params: 4.0.2 + postcss-minify-selectors: 4.0.2 + postcss-normalize-charset: 4.0.1 + postcss-normalize-display-values: 4.0.2 + postcss-normalize-positions: 4.0.2 + postcss-normalize-repeat-style: 4.0.2 + postcss-normalize-string: 4.0.2 + postcss-normalize-timing-functions: 4.0.2 + postcss-normalize-unicode: 4.0.1 + postcss-normalize-url: 4.0.1 + postcss-normalize-whitespace: 4.0.2 + postcss-ordered-values: 4.1.2 + postcss-reduce-initial: 4.0.3 + postcss-reduce-transforms: 4.0.2 + postcss-svgo: 4.0.2 + postcss-unique-selectors: 4.0.1 + dev: true + + /cssnano-util-get-arguments/4.0.0: + resolution: { integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== } + engines: { node: '>=6.9.0' } + dev: true + + /cssnano-util-get-match/4.0.0: + resolution: { integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== } + engines: { node: '>=6.9.0' } + dev: true + + /cssnano-util-raw-cache/4.0.1: + resolution: { integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /cssnano-util-same-parent/4.0.1: + resolution: { integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== } + engines: { node: '>=6.9.0' } + dev: true + + /cssnano/4.1.10: + resolution: { integrity: sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== } + engines: { node: '>=6.9.0' } + dependencies: + cosmiconfig: 5.2.1 + cssnano-preset-default: 4.0.7 + is-resolvable: 1.1.0 + postcss: 7.0.35 + dev: true + + /csso/4.2.0: + resolution: { integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== } + engines: { node: '>=8.0.0' } + dependencies: + css-tree: 1.1.2 + dev: true + + /csstype/3.1.1: + resolution: { integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== } + dev: false + + /cyclist/1.0.1: + resolution: { integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== } + dev: true + + /d3-color/1.4.1: + resolution: { integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== } + dev: false + + /d3-dispatch/2.0.0: + resolution: { integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== } + dev: false + + /d3-ease/1.0.7: + resolution: { integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ== } + dev: false + + /d3-force/2.1.1: + resolution: { integrity: sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew== } + dependencies: + d3-dispatch: 2.0.0 + d3-quadtree: 2.0.0 + d3-timer: 2.0.0 + dev: false + + /d3-interpolate/1.4.0: + resolution: { integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== } + dependencies: + d3-color: 1.4.1 + dev: false + + /d3-quadtree/2.0.0: + resolution: { integrity: sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== } + dev: false + + /d3-timer/1.0.10: + resolution: { integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== } + dev: false + + /d3-timer/2.0.0: + resolution: { integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== } + dev: false + + /dagre/0.8.5: + resolution: { integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw== } + dependencies: + graphlib: 2.1.8 + lodash: 4.17.21 + dev: false + + /dargs/7.0.0: + resolution: { integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== } + engines: { node: '>=8' } + dev: true + + /dashdash/1.14.1: + resolution: { integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== } + engines: { node: '>=0.10' } + dependencies: + assert-plus: 1.0.0 + dev: true + + /date-fns/1.30.1: + resolution: { integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== } + dev: true + + /dayjs/1.10.4: + resolution: { integrity: sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== } + dev: false + + /de-indent/1.0.2: + resolution: { integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== } + dev: true + + /debug/2.6.9: + resolution: { integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/2.6.9_supports-color@6.1.0: + resolution: { integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + supports-color: 6.1.0 + dev: true + + /debug/3.2.7: + resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug/3.2.7_supports-color@6.1.0: + resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 6.1.0 + dev: true + + /debug/4.3.2: + resolution: { integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.2_supports-color@6.1.0: + resolution: { integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 6.1.0 + dev: true + + /decamelize-keys/1.1.0: + resolution: { integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== } + engines: { node: '>=0.10.0' } + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: { integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== } + engines: { node: '>=0.10.0' } + dev: true + + /decode-uri-component/0.2.0: + resolution: { integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== } + engines: { node: '>=0.10' } + dev: true + + /dedent/0.7.0: + resolution: { integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== } + dev: true + + /deep-equal/1.1.1: + resolution: { integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== } + dependencies: + is-arguments: 1.1.0 + is-date-object: 1.0.2 + is-regex: 1.1.2 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.3.1 + dev: true + + /deep-is/0.1.3: + resolution: { integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw== } + dev: true + + /deepmerge/1.3.2: + resolution: { integrity: sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg== } + engines: { node: '>=0.10.0' } + dev: true + + /deepmerge/1.5.2: + resolution: { integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== } + engines: { node: '>=0.10.0' } + + /default-gateway/4.2.0: + resolution: { integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== } + engines: { node: '>=6' } + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + dev: true + + /default-gateway/5.0.5: + resolution: { integrity: sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== } + engines: { node: ^8.12.0 || >=9.7.0 } + dependencies: + execa: 3.4.0 + dev: true + + /defaults/1.0.3: + resolution: { integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== } + dependencies: + clone: 1.0.4 + dev: true + + /define-properties/1.1.3: + resolution: { integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== } + engines: { node: '>= 0.4' } + dependencies: + object-keys: 1.1.1 + dev: true + + /define-property/0.2.5: + resolution: { integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property/1.0.0: + resolution: { integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property/2.0.2: + resolution: { integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /del/3.0.0: + resolution: { integrity: sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A== } + engines: { node: '>=4' } + dependencies: + globby: 6.1.0 + is-path-cwd: 1.0.0 + is-path-in-cwd: 1.0.1 + p-map: 1.2.0 + pify: 3.0.0 + rimraf: 2.7.1 + dev: true + + /del/4.1.1: + resolution: { integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== } + engines: { node: '>=6' } + dependencies: + '@types/glob': 7.1.3 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + dev: true + + /delayed-stream/1.0.0: + resolution: { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== } + engines: { node: '>=0.4.0' } + dev: true + + /delegate/3.2.0: + resolution: { integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== } + dev: false + + /depd/1.1.2: + resolution: { integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== } + engines: { node: '>= 0.6' } + dev: true + + /des.js/1.0.1: + resolution: { integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== } + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /destroy/1.0.4: + resolution: { integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== } + dev: true + + /detect-browser/5.3.0: + resolution: { integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== } + dev: false + + /detect-node/2.0.5: + resolution: { integrity: sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== } + dev: true + + /diff/4.0.2: + resolution: { integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== } + engines: { node: '>=0.3.1' } + dev: true + + /diffie-hellman/5.0.3: + resolution: { integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== } + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob/2.2.2: + resolution: { integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== } + engines: { node: '>=4' } + dependencies: + path-type: 3.0.0 + dev: true + + /dns-equal/1.0.0: + resolution: { integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== } + dev: true + + /dns-packet/1.3.1: + resolution: { integrity: sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== } + dependencies: + ip: 1.1.5 + safe-buffer: 5.2.1 + dev: true + + /dns-txt/2.0.2: + resolution: { integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== } + dependencies: + buffer-indexof: 1.1.1 + dev: true + + /doctrine/1.5.0: + resolution: { integrity: sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg== } + engines: { node: '>=0.10.0' } + dependencies: + esutils: 2.0.3 + isarray: 1.0.0 + dev: true + + /doctrine/3.0.0: + resolution: { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } + engines: { node: '>=6.0.0' } + dependencies: + esutils: 2.0.3 + dev: true + + /dom-converter/0.2.0: + resolution: { integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== } + dependencies: + utila: 0.4.0 + dev: true + + /dom-serializer/0.2.2: + resolution: { integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== } + dependencies: + domelementtype: 2.2.0 + entities: 2.2.0 + dev: true + + /dom-serializer/1.3.2: + resolution: { integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== } + dependencies: + domelementtype: 2.2.0 + domhandler: 4.2.0 + entities: 2.2.0 + dev: true + + /domain-browser/1.2.0: + resolution: { integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== } + engines: { node: '>=0.4', npm: '>=1.2' } + dev: true + + /domelementtype/1.3.1: + resolution: { integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== } + dev: true + + /domelementtype/2.2.0: + resolution: { integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== } + dev: true + + /domhandler/2.4.2: + resolution: { integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== } + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler/4.2.0: + resolution: { integrity: sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== } + engines: { node: '>= 4' } + dependencies: + domelementtype: 2.2.0 + dev: true + + /domready/1.0.8: + resolution: { integrity: sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA== } + dev: true + + /domutils/1.7.0: + resolution: { integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== } + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils/2.6.0: + resolution: { integrity: sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA== } + dependencies: + dom-serializer: 1.3.2 + domelementtype: 2.2.0 + domhandler: 4.2.0 + dev: true + + /dot-prop/5.3.0: + resolution: { integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== } + engines: { node: '>=8' } + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-expand/5.1.0: + resolution: { integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== } + dev: true + + /dotenv/8.2.0: + resolution: { integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== } + engines: { node: '>=8' } + dev: true + + /duplexer/0.1.2: + resolution: { integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== } + dev: true + + /duplexify/3.7.1: + resolution: { integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== } + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.7 + stream-shift: 1.0.1 + dev: true + + /easy-stack/1.0.1: + resolution: { integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== } + engines: { node: '>=6.0.0' } + dev: true + + /ecc-jsbn/0.1.2: + resolution: { integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== } + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /echarts-liquidfill/3.1.0_echarts@5.3.1: + resolution: { integrity: sha512-5Dlqs/jTsdTUAsd+K5LPLLTgrbbNORUSBQyk8PSy1Mg2zgHDWm83FmvA4s0ooNepCJojFYRITTQ4GU1UUSKYLw== } + peerDependencies: + echarts: ^5.0.1 + dependencies: + echarts: 5.3.1 + dev: false + + /echarts/5.3.1: + resolution: { integrity: sha512-nWdlbgX3OVY0hpqncSvp0gDt1FRSKWn7lsWEH+PHmfCuvE0QmSw17pczQvm8AvawnLEkmf1Cts7YwQJZNC0AEQ== } + dependencies: + tslib: 2.3.0 + zrender: 5.3.1 + dev: false + + /ee-first/1.1.1: + resolution: { integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== } + dev: true + + /ejs/2.7.4: + resolution: { integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== } + engines: { node: '>=0.10.0' } + requiresBuild: true + dev: true + + /electron-to-chromium/1.3.734: + resolution: { integrity: sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw== } + dev: true + + /elegant-spinner/1.0.1: + resolution: { integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== } + engines: { node: '>=0.10.0' } + dev: true + + /element-resize-detector/1.2.3: + resolution: { integrity: sha512-+dhNzUgLpq9ol5tyhoG7YLoXL3ssjfFW+0gpszXPwRU6NjGr1fVHMEAF8fVzIiRJq57Nre0RFeIjJwI8Nh2NmQ== } + dependencies: + batch-processor: 1.0.0 + dev: false + + /element-ui/2.13.0_vue@2.6.14: + resolution: { integrity: sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw== } + peerDependencies: + vue: ^2.5.17 + dependencies: + async-validator: 1.8.5 + babel-helper-vue-jsx-merge-props: 2.0.3 + deepmerge: 1.5.2 + normalize-wheel: 1.0.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 1.1.0 + vue: 2.6.14 + dev: false + + /element-ui/2.15.1_vue@2.6.14: + resolution: { integrity: sha512-TqlScAKGH97XndSScUDeEHIzL1x7yg7DvQdKPEOUdiDcyIz3y3FJJBlpHYaJT96FOn1xpIcUZb+I2FJeU9EcrQ== } + peerDependencies: + vue: ^2.5.17 + dependencies: + async-validator: 1.8.5 + babel-helper-vue-jsx-merge-props: 2.0.3 + deepmerge: 1.5.2 + normalize-wheel: 1.0.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 1.1.0 + vue: 2.6.14 + dev: false + + /elliptic/6.5.4: + resolution: { integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== } + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emoji-regex/7.0.3: + resolution: { integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== } + dev: true + + /emoji-regex/8.0.0: + resolution: { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } + dev: true + + /emojis-list/2.1.0: + resolution: { integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== } + engines: { node: '>= 0.10' } + dev: true + + /emojis-list/3.0.0: + resolution: { integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== } + engines: { node: '>= 4' } + + /encodeurl/1.0.2: + resolution: { integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== } + engines: { node: '>= 0.8' } + dev: true + + /end-of-stream/1.4.4: + resolution: { integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== } + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/0.9.1: + resolution: { integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== } + engines: { node: '>=0.6' } + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.2.0 + tapable: 0.1.10 + dev: true + + /enhanced-resolve/4.5.0: + resolution: { integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== } + engines: { node: '>=6.9.0' } + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.5.0 + tapable: 1.1.3 + dev: true + + /entities/1.1.2: + resolution: { integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== } + dev: true + + /entities/2.2.0: + resolution: { integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== } + dev: true + + /errno/0.1.8: + resolution: { integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== } + hasBin: true + dependencies: + prr: 1.0.1 + dev: true + + /error-ex/1.3.2: + resolution: { integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== } + dependencies: + is-arrayish: 0.2.1 + dev: true + + /error-stack-parser/2.0.6: + resolution: { integrity: sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== } + dependencies: + stackframe: 1.2.0 + dev: true + + /es-abstract/1.18.0: + resolution: { integrity: sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.2 + is-callable: 1.2.3 + is-negative-zero: 2.0.1 + is-regex: 1.1.2 + is-string: 1.0.5 + object-inspect: 1.9.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.4 + string.prototype.trimstart: 1.0.4 + unbox-primitive: 1.0.0 + dev: true + + /es-to-primitive/1.2.1: + resolution: { integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== } + engines: { node: '>= 0.4' } + dependencies: + is-callable: 1.2.3 + is-date-object: 1.0.2 + is-symbol: 1.0.3 + dev: true + + /esbuild/0.12.29: + resolution: { integrity: sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g== } + hasBin: true + requiresBuild: true + dev: true + + /escalade/3.1.1: + resolution: { integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== } + engines: { node: '>=6' } + dev: true + + /escape-html/1.0.3: + resolution: { integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== } + dev: true + + /escape-string-regexp/1.0.5: + resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } + engines: { node: '>=0.8.0' } + dev: true + + /eslint-config-standard/14.1.1_qyawu2d3xgr7ylgq3z5dwgxn44: + resolution: { integrity: sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== } + peerDependencies: + eslint: '>=6.2.2' + eslint-plugin-import: '>=2.18.0' + eslint-plugin-node: '>=9.1.0' + eslint-plugin-promise: '>=4.2.1' + eslint-plugin-standard: '>=4.0.0' + dependencies: + eslint: 6.8.0 + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.3.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + dev: true + + /eslint-import-resolver-node/0.3.4: + resolution: { integrity: sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== } + dependencies: + debug: 2.6.9 + resolve: 1.20.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-webpack/0.12.2_5r6sr333lc7gkp2zt7fcegg6vi: + resolution: { integrity: sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ== } + peerDependencies: + eslint-plugin-import: '>=1.4.0' + webpack: '>=1.11.0' + dependencies: + array-find: 1.0.0 + debug: 2.6.9 + enhanced-resolve: 0.9.1 + eslint-plugin-import: 2.22.1_tbglwmj7t2rhd43mvxmptakoay + find-root: 1.1.0 + has: 1.0.3 + interpret: 1.4.0 + lodash: 4.17.21 + node-libs-browser: 2.2.1 + resolve: 1.20.0 + semver: 5.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-loader/2.2.1_pfvmeq6opgydpezktw7j2dwffi: + resolution: { integrity: sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== } + deprecated: This loader has been deprecated. Please use eslint-webpack-plugin + peerDependencies: + eslint: '>=1.6.0 <7.0.0' + webpack: '>=2.0.0 <5.0.0' + dependencies: + eslint: 6.8.0 + loader-fs-cache: 1.0.3 + loader-utils: 1.4.2 + object-assign: 4.1.1 + object-hash: 1.3.1 + rimraf: 2.7.1 + webpack: 4.46.0 + dev: true + + /eslint-module-utils/2.6.0_cch7oag2xabt66xpirhjznaddy: + resolution: { integrity: sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + debug: 2.6.9 + eslint-import-resolver-node: 0.3.4 + pkg-dir: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es/3.0.1_eslint@6.8.0: + resolution: { integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== } + engines: { node: '>=8.10.0' } + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 6.8.0 + eslint-utils: 2.1.0 + regexpp: 3.1.0 + dev: true + + /eslint-plugin-import/2.22.1_tbglwmj7t2rhd43mvxmptakoay: + resolution: { integrity: sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 2.34.0_hejjmlztrvmnsks456jx6n7lwi + array-includes: 3.1.3 + array.prototype.flat: 1.2.4 + contains-path: 0.1.0 + debug: 2.6.9 + doctrine: 1.5.0 + eslint: 6.8.0 + eslint-import-resolver-node: 0.3.4 + eslint-module-utils: 2.6.0_cch7oag2xabt66xpirhjznaddy + has: 1.0.3 + minimatch: 3.0.4 + object.values: 1.1.3 + read-pkg-up: 2.0.0 + resolve: 1.20.0 + tsconfig-paths: 3.9.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-node/11.1.0_eslint@6.8.0: + resolution: { integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== } + engines: { node: '>=8.10.0' } + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 6.8.0 + eslint-plugin-es: 3.0.1_eslint@6.8.0 + eslint-utils: 2.1.0 + ignore: 5.1.8 + minimatch: 3.0.4 + resolve: 1.20.0 + semver: 6.3.0 + dev: true + + /eslint-plugin-promise/4.3.1: + resolution: { integrity: sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== } + engines: { node: '>=6' } + dev: true + + /eslint-plugin-standard/4.1.0_eslint@6.8.0: + resolution: { integrity: sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ== } + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 6.8.0 + dev: true + + /eslint-plugin-vue/6.2.2_eslint@6.8.0: + resolution: { integrity: sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== } + engines: { node: '>=8.10' } + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + dependencies: + eslint: 6.8.0 + natural-compare: 1.4.0 + semver: 5.7.1 + vue-eslint-parser: 7.6.0_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/4.0.3: + resolution: { integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== } + engines: { node: '>=4.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/5.1.1: + resolution: { integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== } + engines: { node: '>=8.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-utils/1.4.3: + resolution: { integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== } + engines: { node: '>=6' } + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: { integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== } + engines: { node: '>=6' } + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: { integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== } + engines: { node: '>=4' } + dev: true + + /eslint/6.8.0: + resolution: { integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + hasBin: true + dependencies: + '@babel/code-frame': 7.12.13 + ajv: 6.12.6 + chalk: 2.4.2 + cross-spawn: 6.0.5 + debug: 4.3.2 + doctrine: 3.0.0 + eslint-scope: 5.1.1 + eslint-utils: 1.4.3 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.4.0 + esutils: 2.0.3 + file-entry-cache: 5.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 12.4.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + inquirer: 7.3.3 + is-glob: 4.0.1 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.3.0 + lodash: 4.17.21 + minimatch: 3.0.4 + mkdirp: 0.5.5 + natural-compare: 1.4.0 + optionator: 0.8.3 + progress: 2.0.3 + regexpp: 2.0.1 + semver: 6.3.0 + strip-ansi: 5.2.0 + strip-json-comments: 3.1.1 + table: 5.4.6 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/6.2.1: + resolution: { integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== } + engines: { node: '>=6.0.0' } + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.1_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /esprima/4.0.1: + resolution: { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /esquery/1.4.0: + resolution: { integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== } + engines: { node: '>=0.10' } + dependencies: + estraverse: 5.2.0 + dev: true + + /esrecurse/4.3.0: + resolution: { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } + engines: { node: '>=4.0' } + dependencies: + estraverse: 5.2.0 + dev: true + + /estraverse/4.3.0: + resolution: { integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== } + engines: { node: '>=4.0' } + dev: true + + /estraverse/5.2.0: + resolution: { integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== } + engines: { node: '>=4.0' } + dev: true + + /estree-walker/2.0.2: + resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } + dev: true + + /esutils/2.0.3: + resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: '>=0.10.0' } + dev: true + + /etag/1.8.1: + resolution: { integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== } + engines: { node: '>= 0.6' } + dev: true + + /event-pubsub/4.3.0: + resolution: { integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== } + engines: { node: '>=4.0.0' } + dev: true + + /eventemitter3/4.0.7: + resolution: { integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== } + dev: true + + /events/3.3.0: + resolution: { integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== } + engines: { node: '>=0.8.x' } + dev: true + + /eventsource/1.1.0: + resolution: { integrity: sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== } + engines: { node: '>=0.12.0' } + dependencies: + original: 1.0.2 + dev: true + + /evp_bytestokey/1.0.3: + resolution: { integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== } + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /execa/0.8.0: + resolution: { integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA== } + engines: { node: '>=4' } + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.3 + strip-eof: 1.0.0 + dev: true + + /execa/1.0.0: + resolution: { integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== } + engines: { node: '>=6' } + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.3 + strip-eof: 1.0.0 + dev: true + + /execa/3.4.0: + resolution: { integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== } + engines: { node: ^8.12.0 || >=9.7.0 } + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.0 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + p-finally: 2.0.1 + signal-exit: 3.0.3 + strip-final-newline: 2.0.0 + dev: true + + /expand-brackets/2.1.4: + resolution: { integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== } + engines: { node: '>=0.10.0' } + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /expand-brackets/2.1.4_supports-color@6.1.0: + resolution: { integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== } + engines: { node: '>=0.10.0' } + dependencies: + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express/4.17.1: + resolution: { integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== } + engines: { node: '>= 0.10.0' } + dependencies: + accepts: 1.3.7 + array-flatten: 1.1.1 + body-parser: 1.19.0 + content-disposition: 0.5.3 + content-type: 1.0.4 + cookie: 0.4.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.6 + qs: 6.7.0 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.17.1 + serve-static: 1.14.1 + setprototypeof: 1.1.1 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express/4.17.1_supports-color@6.1.0: + resolution: { integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== } + engines: { node: '>= 0.10.0' } + dependencies: + accepts: 1.3.7 + array-flatten: 1.1.1 + body-parser: 1.19.0_supports-color@6.1.0 + content-disposition: 0.5.3 + content-type: 1.0.4 + cookie: 0.4.0 + cookie-signature: 1.0.6 + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2_supports-color@6.1.0 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.6 + qs: 6.7.0 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.17.1_supports-color@6.1.0 + serve-static: 1.14.1_supports-color@6.1.0 + setprototypeof: 1.1.1 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend-shallow/2.0.1: + resolution: { integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== } + engines: { node: '>=0.10.0' } + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow/3.0.2: + resolution: { integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== } + engines: { node: '>=0.10.0' } + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extend/3.0.2: + resolution: { integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== } + dev: true + + /external-editor/3.1.0: + resolution: { integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== } + engines: { node: '>=4' } + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extglob/2.0.4: + resolution: { integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== } + engines: { node: '>=0.10.0' } + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extglob/2.0.4_supports-color@6.1.0: + resolution: { integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== } + engines: { node: '>=0.10.0' } + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4_supports-color@6.1.0 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf/1.3.0: + resolution: { integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== } + engines: { '0': node >=0.6.0 } + dev: true + + /extsprintf/1.4.0: + resolution: { integrity: sha512-6NW8DZ8pWBc5NbGYUiqqccj9dXnuSzilZYqprdKJBZsQodGH9IyUoFOGxIWVDcBzHMb8ET24aqx9p66tZEWZkA== } + engines: { '0': node >=0.6.0 } + dev: true + + /fast-deep-equal/3.1.3: + resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } + + /fast-glob/2.2.7: + resolution: { integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== } + engines: { node: '>=4.0.0' } + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.1 + merge2: 1.4.1 + micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } + + /fast-levenshtein/2.0.6: + resolution: { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } + dev: true + + /faye-websocket/0.11.3: + resolution: { integrity: sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== } + engines: { node: '>=0.8.0' } + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fecha/4.2.3: + resolution: { integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== } + dev: false + + /figgy-pudding/3.5.2: + resolution: { integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== } + dev: true + + /figures/1.7.0: + resolution: { integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== } + engines: { node: '>=0.10.0' } + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + dev: true + + /figures/2.0.0: + resolution: { integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== } + engines: { node: '>=4' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /figures/3.2.0: + resolution: { integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== } + engines: { node: '>=8' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/5.0.1: + resolution: { integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== } + engines: { node: '>=4' } + dependencies: + flat-cache: 2.0.1 + dev: true + + /file-loader/4.3.0_webpack@4.46.0: + resolution: { integrity: sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 + dependencies: + loader-utils: 1.4.2 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /file-uri-to-path/1.0.0: + resolution: { integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== } + requiresBuild: true + dev: true + optional: true + + /filesize/3.6.1: + resolution: { integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== } + engines: { node: '>= 0.4.0' } + dev: true + + /fill-range/4.0.0: + resolution: { integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range/7.0.1: + resolution: { integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== } + engines: { node: '>=8' } + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler/1.1.2: + resolution: { integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== } + engines: { node: '>= 0.8' } + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler/1.1.2_supports-color@6.1.0: + resolution: { integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== } + engines: { node: '>= 0.8' } + dependencies: + debug: 2.6.9_supports-color@6.1.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir/0.1.1: + resolution: { integrity: sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A== } + engines: { node: '>=0.10.0' } + dependencies: + commondir: 1.0.1 + mkdirp: 0.5.5 + pkg-dir: 1.0.0 + dev: true + + /find-cache-dir/2.1.0: + resolution: { integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== } + engines: { node: '>=6' } + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + + /find-cache-dir/3.3.1: + resolution: { integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== } + engines: { node: '>=8' } + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-root/1.1.0: + resolution: { integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== } + dev: true + + /find-up/1.1.2: + resolution: { integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== } + engines: { node: '>=0.10.0' } + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: true + + /find-up/2.1.0: + resolution: { integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== } + engines: { node: '>=4' } + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up/3.0.0: + resolution: { integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== } + engines: { node: '>=6' } + dependencies: + locate-path: 3.0.0 + dev: true + + /find-up/4.1.0: + resolution: { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== } + engines: { node: '>=8' } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: '>=10' } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/2.0.1: + resolution: { integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== } + engines: { node: '>=4' } + dependencies: + flatted: 2.0.2 + rimraf: 2.6.3 + write: 1.0.3 + dev: true + + /flatted/2.0.2: + resolution: { integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== } + dev: true + + /flush-write-stream/1.1.1: + resolution: { integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== } + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fn-name/2.0.1: + resolution: { integrity: sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA== } + engines: { node: '>=0.10.0' } + dev: true + + /follow-redirects/1.13.3: + resolution: { integrity: sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== } + engines: { node: '>=4.0' } + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /for-in/1.0.2: + resolution: { integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== } + engines: { node: '>=0.10.0' } + dev: true + + /forever-agent/0.6.1: + resolution: { integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== } + dev: true + + /fork-ts-checker-webpack-plugin/3.1.1_zdvo64nkvyqkp3vqjwxlvouqsa: + resolution: { integrity: sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== } + engines: { node: '>=6.11.5', yarn: '>=1.0.0' } + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + babel-code-frame: 6.26.0 + chalk: 2.4.2 + chokidar: 3.5.3 + eslint: 6.8.0 + micromatch: 3.1.10 + minimatch: 3.0.4 + semver: 5.7.1 + tapable: 1.1.3 + typescript: 3.9.9 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /form-data/2.3.3: + resolution: { integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== } + engines: { node: '>= 0.12' } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.29 + dev: true + + /forwarded/0.1.2: + resolution: { integrity: sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA== } + engines: { node: '>= 0.6' } + dev: true + + /fragment-cache/0.2.1: + resolution: { integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== } + engines: { node: '>=0.10.0' } + dependencies: + map-cache: 0.2.2 + dev: true + + /fresh/0.5.2: + resolution: { integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== } + engines: { node: '>= 0.6' } + dev: true + + /from2/2.3.0: + resolution: { integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== } + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fs-extra/10.1.0: + resolution: { integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== } + engines: { node: '>=12' } + dependencies: + graceful-fs: 4.2.6 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/7.0.1: + resolution: { integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== } + engines: { node: '>=6 <7 || >=8' } + dependencies: + graceful-fs: 4.2.6 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/9.1.0: + resolution: { integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== } + engines: { node: '>=10' } + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.6 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-minipass/2.1.0: + resolution: { integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== } + engines: { node: '>= 8' } + dependencies: + minipass: 3.1.3 + dev: true + + /fs-write-stream-atomic/1.0.10: + resolution: { integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== } + dependencies: + graceful-fs: 4.2.6 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.7 + dev: true + + /fs.realpath/1.0.0: + resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } + dev: true + + /fsevents/1.2.13: + resolution: { integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== } + engines: { node: '>= 4.0' } + os: [darwin] + deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.15.0 + dev: true + optional: true + + /fsevents/2.3.2: + resolution: { integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: { integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== } + + /functional-red-black-tree/1.0.1: + resolution: { integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== } + dev: true + + /g-status/2.0.2: + resolution: { integrity: sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== } + engines: { node: '>=6' } + dependencies: + arrify: 1.0.1 + matcher: 1.1.1 + simple-git: 1.132.0 + transitivePeerDependencies: + - supports-color + dev: true + + /gensync/1.0.0-beta.2: + resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } + engines: { node: '>=6.9.0' } + dev: true + + /get-caller-file/2.0.5: + resolution: { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /get-intrinsic/1.1.1: + resolution: { integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.2 + + /get-own-enumerable-property-symbols/3.0.2: + resolution: { integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== } + dev: true + + /get-stdin/6.0.0: + resolution: { integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== } + engines: { node: '>=4' } + dev: true + + /get-stdin/8.0.0: + resolution: { integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== } + engines: { node: '>=10' } + dev: true + + /get-stream/3.0.0: + resolution: { integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== } + engines: { node: '>=4' } + dev: true + + /get-stream/4.1.0: + resolution: { integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== } + engines: { node: '>=6' } + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/5.2.0: + resolution: { integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== } + engines: { node: '>=8' } + dependencies: + pump: 3.0.0 + dev: true + + /get-value/2.0.6: + resolution: { integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== } + engines: { node: '>=0.10.0' } + dev: true + + /getpass/0.1.7: + resolution: { integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== } + dependencies: + assert-plus: 1.0.0 + dev: true + + /git-raw-commits/2.0.10: + resolution: { integrity: sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== } + engines: { node: '>=10' } + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /gl-matrix/3.4.3: + resolution: { integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== } + dev: false + + /glob-parent/3.1.0: + resolution: { integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== } + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + + /glob-parent/5.1.2: + resolution: { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } + engines: { node: '>= 6' } + dependencies: + is-glob: 4.0.1 + dev: true + + /glob-to-regexp/0.3.0: + resolution: { integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== } + dev: true + + /glob/7.0.6: + resolution: { integrity: sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q== } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.1.6: + resolution: { integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-dirs/0.1.1: + resolution: { integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== } + engines: { node: '>=4' } + dependencies: + ini: 1.3.8 + dev: true + + /globals/11.12.0: + resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } + engines: { node: '>=4' } + dev: true + + /globals/12.4.0: + resolution: { integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== } + engines: { node: '>=8' } + dependencies: + type-fest: 0.8.1 + dev: true + + /globals/9.18.0: + resolution: { integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== } + engines: { node: '>=0.10.0' } + dev: true + + /globby/6.1.0: + resolution: { integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== } + engines: { node: '>=0.10.0' } + dependencies: + array-union: 1.0.2 + glob: 7.1.6 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globby/7.1.1: + resolution: { integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== } + engines: { node: '>=4' } + dependencies: + array-union: 1.0.2 + dir-glob: 2.2.2 + glob: 7.1.6 + ignore: 3.3.10 + pify: 3.0.0 + slash: 1.0.0 + dev: true + + /globby/9.2.0: + resolution: { integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== } + engines: { node: '>=6' } + dependencies: + '@types/glob': 7.1.3 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.1.6 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /good-listener/1.2.2: + resolution: { integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== } + dependencies: + delegate: 3.2.0 + dev: false + + /graceful-fs/4.2.6: + resolution: { integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== } + dev: true + + /graphlib/2.1.8: + resolution: { integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A== } + dependencies: + lodash: 4.17.21 + dev: false + + /gzip-size/5.1.1: + resolution: { integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== } + engines: { node: '>=6' } + dependencies: + duplexer: 0.1.2 + pify: 4.0.1 + dev: true + + /handle-thing/2.0.1: + resolution: { integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== } + dev: true + + /har-schema/2.0.0: + resolution: { integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== } + engines: { node: '>=4' } + dev: true + + /har-validator/5.1.5: + resolution: { integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== } + engines: { node: '>=6' } + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /hard-rejection/2.1.0: + resolution: { integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== } + engines: { node: '>=6' } + dev: true + + /has-ansi/2.0.0: + resolution: { integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== } + engines: { node: '>=0.10.0' } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-bigints/1.0.1: + resolution: { integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== } + dev: true + + /has-flag/1.0.0: + resolution: { integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== } + engines: { node: '>=0.10.0' } + dev: true + + /has-flag/3.0.0: + resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } + engines: { node: '>=4' } + dev: true + + /has-flag/4.0.0: + resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: '>=8' } + dev: true + + /has-symbols/1.0.2: + resolution: { integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== } + engines: { node: '>= 0.4' } + + /has-value/0.3.1: + resolution: { integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== } + engines: { node: '>=0.10.0' } + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value/1.0.0: + resolution: { integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== } + engines: { node: '>=0.10.0' } + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values/0.1.4: + resolution: { integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== } + engines: { node: '>=0.10.0' } + dev: true + + /has-values/1.0.0: + resolution: { integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /has/1.0.3: + resolution: { integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== } + engines: { node: '>= 0.4.0' } + dependencies: + function-bind: 1.1.1 + + /hash-base/3.1.0: + resolution: { integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== } + engines: { node: '>=4' } + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /hash-sum/1.0.2: + resolution: { integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== } + dev: true + + /hash-sum/2.0.0: + resolution: { integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== } + dev: true + + /hash.js/1.1.7: + resolution: { integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== } + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /he/1.2.0: + resolution: { integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== } + hasBin: true + dev: true + + /hex-color-regex/1.1.0: + resolution: { integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== } + dev: true + + /highlight.js/10.7.1: + resolution: { integrity: sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA== } + dev: true + + /hmac-drbg/1.0.1: + resolution: { integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== } + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoopy/0.1.4: + resolution: { integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== } + engines: { node: '>= 6.0.0' } + dev: true + + /hosted-git-info/2.8.8: + resolution: { integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== } + dev: true + + /hosted-git-info/4.0.1: + resolution: { integrity: sha512-eT7NrxAsppPRQEBSwKSosReE+v8OzABwEScQYk5d4uxaEPlzxTIku7LINXtBGalthkLhJnq5lBI89PfK43zAKg== } + engines: { node: '>=10' } + dependencies: + lru-cache: 6.0.0 + dev: true + + /hpack.js/2.1.6: + resolution: { integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== } + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + dev: true + + /hsl-regex/1.0.0: + resolution: { integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== } + dev: true + + /hsla-regex/1.0.0: + resolution: { integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== } + dev: true + + /html-comment-regex/1.1.2: + resolution: { integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== } + dev: true + + /html-entities/1.4.0: + resolution: { integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== } + dev: true + + /html-minifier/3.5.21: + resolution: { integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== } + engines: { node: '>=4' } + hasBin: true + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.3 + commander: 2.17.1 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.4.10 + dev: true + + /html-tags/2.0.0: + resolution: { integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== } + engines: { node: '>=4' } + dev: true + + /html-tags/3.1.0: + resolution: { integrity: sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== } + engines: { node: '>=8' } + dev: true + + /html-webpack-plugin/3.2.0_webpack@4.46.0: + resolution: { integrity: sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg== } + engines: { node: '>=6.9' } + deprecated: 3.x is no longer supported + peerDependencies: + webpack: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + html-minifier: 3.5.21 + loader-utils: 0.2.17 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + toposort: 1.0.7 + util.promisify: 1.0.0 + webpack: 4.46.0 + dev: true + + /htmlparser2/3.10.1: + resolution: { integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== } + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /http-deceiver/1.2.7: + resolution: { integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== } + dev: true + + /http-errors/1.6.3: + resolution: { integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== } + engines: { node: '>= 0.6' } + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors/1.7.2: + resolution: { integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== } + engines: { node: '>= 0.6' } + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + + /http-errors/1.7.3: + resolution: { integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== } + engines: { node: '>= 0.6' } + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + + /http-parser-js/0.5.3: + resolution: { integrity: sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== } + dev: true + + /http-proxy-middleware/0.19.1_xwktanctkdp2ue56r3exixdqpa: + resolution: { integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== } + engines: { node: '>=4.0.0' } + dependencies: + http-proxy: 1.18.1_debug@4.3.2 + is-glob: 4.0.1 + lodash: 4.17.21 + micromatch: 3.1.10_supports-color@6.1.0 + transitivePeerDependencies: + - debug + - supports-color + dev: true + + /http-proxy/1.18.1_debug@4.3.2: + resolution: { integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== } + engines: { node: '>=8.0.0' } + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.13.3 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /http-signature/1.2.0: + resolution: { integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== } + engines: { node: '>=0.8', npm: '>=1.3.7' } + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + dev: true + + /https-browserify/1.0.0: + resolution: { integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== } + dev: true + + /human-signals/1.1.1: + resolution: { integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== } + engines: { node: '>=8.12.0' } + dev: true + + /husky/1.3.1: + resolution: { integrity: sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg== } + engines: { node: '>=6' } + hasBin: true + requiresBuild: true + dependencies: + cosmiconfig: 5.2.1 + execa: 1.0.0 + find-up: 3.0.0 + get-stdin: 6.0.0 + is-ci: 2.0.0 + pkg-dir: 3.0.0 + please-upgrade-node: 3.2.0 + read-pkg: 4.0.1 + run-node: 1.0.0 + slash: 2.0.0 + dev: true + + /iconv-lite/0.4.24: + resolution: { integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== } + engines: { node: '>=0.10.0' } + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils/4.1.1: + resolution: { integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== } + engines: { node: '>= 6' } + dependencies: + postcss: 7.0.35 + dev: true + + /ieee754/1.2.1: + resolution: { integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== } + dev: true + + /iferr/0.1.5: + resolution: { integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== } + dev: true + + /ignore/3.3.10: + resolution: { integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== } + dev: true + + /ignore/4.0.6: + resolution: { integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== } + engines: { node: '>= 4' } + dev: true + + /ignore/5.1.8: + resolution: { integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== } + engines: { node: '>= 4' } + dev: true + + /image-size/0.5.5: + resolution: { integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== } + engines: { node: '>=0.10.0' } + hasBin: true + dev: true + + /import-cwd/2.1.0: + resolution: { integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== } + engines: { node: '>=4' } + dependencies: + import-from: 2.1.0 + dev: true + + /import-fresh/2.0.0: + resolution: { integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== } + engines: { node: '>=4' } + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: true + + /import-fresh/3.3.0: + resolution: { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } + engines: { node: '>=6' } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-from/2.1.0: + resolution: { integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== } + engines: { node: '>=4' } + dependencies: + resolve-from: 3.0.0 + dev: true + + /import-local/2.0.0: + resolution: { integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== } + engines: { node: '>=6' } + hasBin: true + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: '>=0.8.19' } + dev: true + + /increase-memory-limit/1.0.7: + resolution: { integrity: sha512-ozyn+HHAPD9VxMT1U50A7G8XXlktUWhnnEDYSeDYnQjKsNrBWHqq6XfEA0uhMdDPD+q/7rXWlzF1CbXX/c1LiQ== } + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /indent-string/3.2.0: + resolution: { integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== } + engines: { node: '>=4' } + dev: true + + /indent-string/4.0.0: + resolution: { integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== } + engines: { node: '>=8' } + dev: true + + /indexes-of/1.0.1: + resolution: { integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== } + dev: true + + /infer-owner/1.0.4: + resolution: { integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== } + dev: true + + /inflight/1.0.6: + resolution: { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.1: + resolution: { integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== } + dev: true + + /inherits/2.0.3: + resolution: { integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== } + dev: true + + /inherits/2.0.4: + resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } + dev: true + + /ini/1.3.8: + resolution: { integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== } + dev: true + + /inquirer/7.3.3: + resolution: { integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== } + engines: { node: '>=8.0.0' } + dependencies: + ansi-escapes: 4.3.1 + chalk: 4.1.1 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.6 + string-width: 4.2.2 + strip-ansi: 6.0.0 + through: 2.3.8 + dev: true + + /insert-css/2.0.0: + resolution: { integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA== } + dev: false + + /internal-ip/4.3.0: + resolution: { integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== } + engines: { node: '>=6' } + dependencies: + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + dev: true + + /interpret/1.4.0: + resolution: { integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== } + engines: { node: '>= 0.10' } + dev: true + + /invariant/2.2.4: + resolution: { integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== } + dependencies: + loose-envify: 1.4.0 + dev: true + + /ip-regex/2.1.0: + resolution: { integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== } + engines: { node: '>=4' } + dev: true + + /ip/1.1.5: + resolution: { integrity: sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== } + dev: true + + /ipaddr.js/1.9.1: + resolution: { integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== } + engines: { node: '>= 0.10' } + dev: true + + /is-absolute-url/2.1.0: + resolution: { integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== } + engines: { node: '>=0.10.0' } + dev: true + + /is-absolute-url/3.0.3: + resolution: { integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== } + engines: { node: '>=8' } + dev: true + + /is-accessor-descriptor/0.1.6: + resolution: { integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor/1.0.0: + resolution: { integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 6.0.3 + dev: true + + /is-any-array/2.0.0: + resolution: { integrity: sha512-WdPV58rT3aOWXvvyuBydnCq4S2BM1Yz8shKxlEpk/6x+GX202XRvXOycEFtNgnHVLoc46hpexPFx8Pz1/sMS0w== } + dev: false + + /is-arguments/1.1.0: + resolution: { integrity: sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-arrayish/0.2.1: + resolution: { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== } + dev: true + + /is-arrayish/0.3.2: + resolution: { integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== } + + /is-bigint/1.0.1: + resolution: { integrity: sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== } + dev: true + + /is-binary-path/1.0.1: + resolution: { integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== } + engines: { node: '>=0.10.0' } + dependencies: + binary-extensions: 1.13.1 + dev: true + + /is-binary-path/2.1.0: + resolution: { integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== } + engines: { node: '>=8' } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.0: + resolution: { integrity: sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + dev: true + + /is-buffer/1.1.6: + resolution: { integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== } + dev: true + + /is-callable/1.2.3: + resolution: { integrity: sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== } + engines: { node: '>= 0.4' } + dev: true + + /is-ci/1.2.1: + resolution: { integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== } + hasBin: true + dependencies: + ci-info: 1.6.0 + dev: true + + /is-ci/2.0.0: + resolution: { integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== } + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: true + + /is-color-stop/1.1.0: + resolution: { integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== } + dependencies: + css-color-names: 0.0.4 + hex-color-regex: 1.1.0 + hsl-regex: 1.0.0 + hsla-regex: 1.0.0 + rgb-regex: 1.0.1 + rgba-regex: 1.0.0 + dev: true + + /is-core-module/2.2.0: + resolution: { integrity: sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== } + dependencies: + has: 1.0.3 + dev: true + + /is-data-descriptor/0.1.4: + resolution: { integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor/1.0.0: + resolution: { integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 6.0.3 + dev: true + + /is-date-object/1.0.2: + resolution: { integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== } + engines: { node: '>= 0.4' } + dev: true + + /is-descriptor/0.1.6: + resolution: { integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== } + engines: { node: '>=0.10.0' } + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor/1.0.2: + resolution: { integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== } + engines: { node: '>=0.10.0' } + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-directory/0.3.1: + resolution: { integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== } + engines: { node: '>=0.10.0' } + dev: true + + /is-docker/2.1.1: + resolution: { integrity: sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== } + engines: { node: '>=8' } + hasBin: true + dev: true + + /is-extendable/0.1.1: + resolution: { integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== } + engines: { node: '>=0.10.0' } + dev: true + + /is-extendable/1.0.1: + resolution: { integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== } + engines: { node: '>=0.10.0' } + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob/2.1.1: + resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: '>=0.10.0' } + dev: true + + /is-fullwidth-code-point/1.0.0: + resolution: { integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== } + engines: { node: '>=0.10.0' } + dependencies: + number-is-nan: 1.0.1 + dev: true + + /is-fullwidth-code-point/2.0.0: + resolution: { integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== } + engines: { node: '>=4' } + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } + engines: { node: '>=8' } + dev: true + + /is-glob/3.1.0: + resolution: { integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-glob/4.0.1: + resolution: { integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-interactive/1.0.0: + resolution: { integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== } + engines: { node: '>=8' } + dev: true + + /is-negative-zero/2.0.1: + resolution: { integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== } + engines: { node: '>= 0.4' } + dev: true + + /is-number-object/1.0.4: + resolution: { integrity: sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== } + engines: { node: '>= 0.4' } + dev: true + + /is-number/3.0.0: + resolution: { integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number/7.0.0: + resolution: { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } + engines: { node: '>=0.12.0' } + dev: true + + /is-obj/1.0.1: + resolution: { integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== } + engines: { node: '>=0.10.0' } + dev: true + + /is-obj/2.0.0: + resolution: { integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== } + engines: { node: '>=8' } + dev: true + + /is-observable/1.1.0: + resolution: { integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== } + engines: { node: '>=4' } + dependencies: + symbol-observable: 1.2.0 + dev: true + + /is-path-cwd/1.0.0: + resolution: { integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== } + engines: { node: '>=0.10.0' } + dev: true + + /is-path-cwd/2.2.0: + resolution: { integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== } + engines: { node: '>=6' } + dev: true + + /is-path-in-cwd/1.0.1: + resolution: { integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-path-inside: 1.0.1 + dev: true + + /is-path-in-cwd/2.1.0: + resolution: { integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== } + engines: { node: '>=6' } + dependencies: + is-path-inside: 2.1.0 + dev: true + + /is-path-inside/1.0.1: + resolution: { integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== } + engines: { node: '>=0.10.0' } + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-path-inside/2.1.0: + resolution: { integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== } + engines: { node: '>=6' } + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-plain-obj/1.1.0: + resolution: { integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== } + engines: { node: '>=0.10.0' } + dev: true + + /is-plain-object/2.0.4: + resolution: { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /is-promise/2.2.2: + resolution: { integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== } + dev: true + + /is-regex/1.1.2: + resolution: { integrity: sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + has-symbols: 1.0.2 + dev: true + + /is-regexp/1.0.0: + resolution: { integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== } + engines: { node: '>=0.10.0' } + dev: true + + /is-resolvable/1.1.0: + resolution: { integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== } + dev: true + + /is-stream/1.1.0: + resolution: { integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== } + engines: { node: '>=0.10.0' } + dev: true + + /is-stream/2.0.0: + resolution: { integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== } + engines: { node: '>=8' } + dev: true + + /is-string/1.0.5: + resolution: { integrity: sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== } + engines: { node: '>= 0.4' } + dev: true + + /is-svg/3.0.0: + resolution: { integrity: sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== } + engines: { node: '>=4' } + dependencies: + html-comment-regex: 1.1.2 + dev: true + + /is-symbol/1.0.3: + resolution: { integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== } + engines: { node: '>= 0.4' } + dependencies: + has-symbols: 1.0.2 + dev: true + + /is-text-path/1.0.1: + resolution: { integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== } + engines: { node: '>=0.10.0' } + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-typedarray/1.0.0: + resolution: { integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== } + dev: true + + /is-unicode-supported/0.1.0: + resolution: { integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== } + engines: { node: '>=10' } + dev: true + + /is-windows/1.0.2: + resolution: { integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== } + engines: { node: '>=0.10.0' } + dev: true + + /is-wsl/1.1.0: + resolution: { integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== } + engines: { node: '>=4' } + dev: true + + /is-wsl/2.2.0: + resolution: { integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== } + engines: { node: '>=8' } + dependencies: + is-docker: 2.1.1 + dev: true + + /isarray/0.0.1: + resolution: { integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== } + dev: true + + /isarray/1.0.0: + resolution: { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } + dev: true + + /isexe/2.0.0: + resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } + dev: true + + /isobject/2.1.0: + resolution: { integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== } + engines: { node: '>=0.10.0' } + dependencies: + isarray: 1.0.0 + dev: true + + /isobject/3.0.1: + resolution: { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } + engines: { node: '>=0.10.0' } + dev: true + + /isstream/0.1.2: + resolution: { integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== } + dev: true + + /javascript-stringify/2.0.1: + resolution: { integrity: sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== } + dev: true + + /jest-worker/25.5.0: + resolution: { integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== } + engines: { node: '>= 8.3' } + dependencies: + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true + + /js-base64/2.6.4: + resolution: { integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== } + dev: true + + /js-cookie/2.2.1: + resolution: { integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== } + dev: false + + /js-message/1.0.7: + resolution: { integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== } + engines: { node: '>=0.6.0' } + dev: true + + /js-queue/2.0.2: + resolution: { integrity: sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA== } + engines: { node: '>=1.0.0' } + dependencies: + easy-stack: 1.0.1 + dev: true + + /js-tokens/3.0.2: + resolution: { integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== } + dev: true + + /js-tokens/4.0.0: + resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } + dev: true + + /js-yaml/3.14.1: + resolution: { integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== } + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsbn/0.1.1: + resolution: { integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== } + dev: true + + /jsesc/0.5.0: + resolution: { integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== } + hasBin: true + dev: true + + /jsesc/2.5.2: + resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /json-parse-better-errors/1.0.2: + resolution: { integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== } + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } + dev: true + + /json-schema-traverse/0.4.1: + resolution: { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } + + /json-schema/0.2.3: + resolution: { integrity: sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ== } + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } + dev: true + + /json-stringify-safe/5.0.1: + resolution: { integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== } + dev: true + + /json3/3.3.3: + resolution: { integrity: sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== } + dev: true + + /json5/0.5.1: + resolution: { integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== } + hasBin: true + dev: true + + /json5/1.0.1: + resolution: { integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== } + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /json5/2.2.0: + resolution: { integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== } + engines: { node: '>=6' } + hasBin: true + dependencies: + minimist: 1.2.5 + + /jsonfile/4.0.0: + resolution: { integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== } + optionalDependencies: + graceful-fs: 4.2.6 + dev: true + + /jsonfile/6.1.0: + resolution: { integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== } + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.6 + dev: true + + /jsonparse/1.3.1: + resolution: { integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== } + engines: { '0': node >= 0.2.0 } + dev: true + + /jsprim/1.4.1: + resolution: { integrity: sha512-4Dj8Rf+fQ+/Pn7C5qeEX02op1WfOss3PKTE9Nsop3Dx+6UPxlm1dr/og7o2cRa5hNN07CACr4NFzRLtj/rjWog== } + engines: { '0': node >=0.6.0 } + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + dev: true + + /killable/1.0.1: + resolution: { integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== } + dev: true + + /kind-of/3.2.2: + resolution: { integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== } + engines: { node: '>=0.10.0' } + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/4.0.0: + resolution: { integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== } + engines: { node: '>=0.10.0' } + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/5.1.0: + resolution: { integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== } + engines: { node: '>=0.10.0' } + dev: true + + /kind-of/6.0.3: + resolution: { integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== } + engines: { node: '>=0.10.0' } + dev: true + + /launch-editor-middleware/2.2.1: + resolution: { integrity: sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== } + dependencies: + launch-editor: 2.2.1 + dev: true + + /launch-editor/2.2.1: + resolution: { integrity: sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== } + dependencies: + chalk: 2.4.2 + shell-quote: 1.7.2 + dev: true + + /levn/0.3.0: + resolution: { integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /lines-and-columns/1.1.6: + resolution: { integrity: sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ== } + dev: true + + /lint-staged/8.2.1: + resolution: { integrity: sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A== } + hasBin: true + dependencies: + chalk: 2.4.2 + commander: 2.20.3 + cosmiconfig: 5.2.1 + debug: 3.2.7 + dedent: 0.7.0 + del: 3.0.0 + execa: 1.0.0 + g-status: 2.0.2 + is-glob: 4.0.1 + is-windows: 1.0.2 + listr: 0.14.3 + listr-update-renderer: 0.5.0_listr@0.14.3 + lodash: 4.17.21 + log-symbols: 2.2.0 + micromatch: 3.1.10 + npm-which: 3.0.1 + p-map: 1.2.0 + path-is-inside: 1.0.2 + pify: 3.0.0 + please-upgrade-node: 3.2.0 + staged-git-files: 1.1.2 + string-argv: 0.0.2 + stringify-object: 3.3.0 + yup: 0.27.0 + transitivePeerDependencies: + - supports-color + - zen-observable + - zenObservable + dev: true + + /listr-silent-renderer/1.1.1: + resolution: { integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== } + engines: { node: '>=4' } + dev: true + + /listr-update-renderer/0.5.0_listr@0.14.3: + resolution: { integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== } + engines: { node: '>=6' } + peerDependencies: + listr: ^0.14.2 + dependencies: + chalk: 1.1.3 + cli-truncate: 0.2.1 + elegant-spinner: 1.0.1 + figures: 1.7.0 + indent-string: 3.2.0 + listr: 0.14.3 + log-symbols: 1.0.2 + log-update: 2.3.0 + strip-ansi: 3.0.1 + dev: true + + /listr-verbose-renderer/0.5.0: + resolution: { integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== } + engines: { node: '>=4' } + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + date-fns: 1.30.1 + figures: 2.0.0 + dev: true + + /listr/0.14.3: + resolution: { integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== } + engines: { node: '>=6' } + dependencies: + '@samverschueren/stream-to-observable': 0.3.1_rxjs@6.6.6 + is-observable: 1.1.0 + is-promise: 2.2.2 + is-stream: 1.1.0 + listr-silent-renderer: 1.1.1 + listr-update-renderer: 0.5.0_listr@0.14.3 + listr-verbose-renderer: 0.5.0 + p-map: 2.1.0 + rxjs: 6.6.6 + transitivePeerDependencies: + - zen-observable + - zenObservable + dev: true + + /load-json-file/2.0.0: + resolution: { integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== } + engines: { node: '>=4' } + dependencies: + graceful-fs: 4.2.6 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + dev: true + + /loader-fs-cache/1.0.3: + resolution: { integrity: sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== } + dependencies: + find-cache-dir: 0.1.1 + mkdirp: 0.5.5 + dev: true + + /loader-runner/2.4.0: + resolution: { integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== } + engines: { node: '>=4.3.0 <5.0.0 || >=5.10' } + dev: true + + /loader-utils/0.2.17: + resolution: { integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug== } + dependencies: + big.js: 3.2.0 + emojis-list: 2.1.0 + json5: 0.5.1 + object-assign: 4.1.1 + dev: true + + /loader-utils/1.4.2: + resolution: { integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== } + engines: { node: '>=4.0.0' } + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.1 + dev: true + + /loader-utils/2.0.4: + resolution: { integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== } + engines: { node: '>=8.9.0' } + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.0 + dev: false + + /locate-path/2.0.0: + resolution: { integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== } + engines: { node: '>=4' } + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/3.0.0: + resolution: { integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== } + engines: { node: '>=6' } + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/5.0.0: + resolution: { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } + engines: { node: '>=8' } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: '>=10' } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es/4.17.21: + resolution: { integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== } + dev: false + + /lodash.debounce/4.0.8: + resolution: { integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== } + dev: true + + /lodash.defaultsdeep/4.6.1: + resolution: { integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== } + dev: true + + /lodash.kebabcase/4.1.1: + resolution: { integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== } + dev: true + + /lodash.mapvalues/4.6.0: + resolution: { integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== } + dev: true + + /lodash.memoize/4.1.2: + resolution: { integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== } + dev: true + + /lodash.transform/4.6.0: + resolution: { integrity: sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ== } + dev: true + + /lodash.uniq/4.5.0: + resolution: { integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== } + dev: true + + /lodash/4.11.2: + resolution: { integrity: sha512-kzYAjjUS0vKRLVcNZgK2k7NJOT5cQoFO3w8ddED6mDBdgu3AIL9xhAktXJ5Dm6GD1x+eqqyu1wKAzEt8Uq77NQ== } + dev: true + + /lodash/4.17.21: + resolution: { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== } + + /log-symbols/1.0.2: + resolution: { integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== } + engines: { node: '>=0.10.0' } + dependencies: + chalk: 1.1.3 + dev: true + + /log-symbols/2.2.0: + resolution: { integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== } + engines: { node: '>=4' } + dependencies: + chalk: 2.4.2 + dev: true + + /log-symbols/4.1.0: + resolution: { integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== } + engines: { node: '>=10' } + dependencies: + chalk: 4.1.1 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/2.3.0: + resolution: { integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== } + engines: { node: '>=4' } + dependencies: + ansi-escapes: 3.2.0 + cli-cursor: 2.1.0 + wrap-ansi: 3.0.1 + dev: true + + /loglevel/1.7.1: + resolution: { integrity: sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== } + engines: { node: '>= 0.6.0' } + dev: true + + /loose-envify/1.4.0: + resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: true + + /lower-case/1.1.4: + resolution: { integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== } + dev: true + + /lru-cache/4.1.5: + resolution: { integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== } + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache/5.1.1: + resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache/6.0.0: + resolution: { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } + engines: { node: '>=10' } + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.7: + resolution: { integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== } + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /make-dir/2.1.0: + resolution: { integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== } + engines: { node: '>=6' } + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-dir/3.1.0: + resolution: { integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== } + engines: { node: '>=8' } + dependencies: + semver: 6.3.0 + dev: true + + /map-cache/0.2.2: + resolution: { integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== } + engines: { node: '>=0.10.0' } + dev: true + + /map-obj/1.0.1: + resolution: { integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== } + engines: { node: '>=0.10.0' } + dev: true + + /map-obj/4.2.0: + resolution: { integrity: sha512-NAq0fCmZYGz9UFEQyndp7sisrow4GroyGeKluyKC/chuITZsPyOyC1UJZPJlVFImhXdROIP5xqouRLThT3BbpQ== } + engines: { node: '>=8' } + dev: true + + /map-visit/1.0.0: + resolution: { integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== } + engines: { node: '>=0.10.0' } + dependencies: + object-visit: 1.0.1 + dev: true + + /matcher/1.1.1: + resolution: { integrity: sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== } + engines: { node: '>=4' } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /md5.js/1.3.5: + resolution: { integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== } + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdn-data/2.0.14: + resolution: { integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== } + dev: true + + /mdn-data/2.0.4: + resolution: { integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== } + dev: true + + /media-typer/0.3.0: + resolution: { integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== } + engines: { node: '>= 0.6' } + dev: true + + /memory-fs/0.2.0: + resolution: { integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== } + dev: true + + /memory-fs/0.4.1: + resolution: { integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== } + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + + /memory-fs/0.5.0: + resolution: { integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== } + engines: { node: '>=4.3.0 <5.0.0 || >=5.10' } + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + + /meow/8.1.2: + resolution: { integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== } + engines: { node: '>=10' } + dependencies: + '@types/minimist': 1.2.1 + 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.2 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.0 + type-fest: 0.18.1 + yargs-parser: 20.2.7 + dev: true + + /merge-descriptors/1.0.1: + resolution: { integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== } + dev: true + + /merge-options/1.0.1: + resolution: { integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg== } + engines: { node: '>=4' } + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /merge-source-map/1.1.0: + resolution: { integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== } + dependencies: + source-map: 0.6.1 + dev: true + + /merge-stream/2.0.0: + resolution: { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== } + dev: true + + /merge2/1.4.1: + resolution: { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } + engines: { node: '>= 8' } + dev: true + + /methods/1.1.2: + resolution: { integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== } + engines: { node: '>= 0.6' } + dev: true + + /microevent.ts/0.1.1: + resolution: { integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== } + dev: true + + /micromatch/3.1.0: + resolution: { integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 1.0.0 + extend-shallow: 2.0.1 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 5.1.0 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/3.1.10: + resolution: { integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/3.1.10_supports-color@6.1.0: + resolution: { integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2_supports-color@6.1.0 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4_supports-color@6.1.0 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13_supports-color@6.1.0 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.2: + resolution: { integrity: sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== } + engines: { node: '>=8' } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /miller-rabin/4.0.1: + resolution: { integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== } + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + + /mime-db/1.46.0: + resolution: { integrity: sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== } + engines: { node: '>= 0.6' } + + /mime-types/2.1.29: + resolution: { integrity: sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.46.0 + + /mime/1.6.0: + resolution: { integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /mime/2.5.2: + resolution: { integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== } + engines: { node: '>=4.0.0' } + hasBin: true + dev: true + + /mimic-fn/1.2.0: + resolution: { integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== } + engines: { node: '>=4' } + dev: true + + /mimic-fn/2.1.0: + resolution: { integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== } + engines: { node: '>=6' } + dev: true + + /min-indent/1.0.1: + resolution: { integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== } + engines: { node: '>=4' } + dev: true + + /mini-css-extract-plugin/0.9.0_webpack@4.46.0: + resolution: { integrity: sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== } + engines: { node: '>= 6.9.0' } + peerDependencies: + webpack: ^4.4.0 + dependencies: + loader-utils: 1.4.2 + normalize-url: 1.9.1 + schema-utils: 1.0.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + dev: true + + /minimalistic-assert/1.0.1: + resolution: { integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== } + dev: true + + /minimalistic-crypto-utils/1.0.1: + resolution: { integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== } + dev: true + + /minimatch/3.0.4: + resolution: { integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist-options/4.1.0: + resolution: { integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== } + engines: { node: '>= 6' } + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.5: + resolution: { integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== } + + /minipass-collect/1.0.2: + resolution: { integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== } + engines: { node: '>= 8' } + dependencies: + minipass: 3.1.3 + dev: true + + /minipass-flush/1.0.5: + resolution: { integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== } + engines: { node: '>= 8' } + dependencies: + minipass: 3.1.3 + dev: true + + /minipass-pipeline/1.2.4: + resolution: { integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== } + engines: { node: '>=8' } + dependencies: + minipass: 3.1.3 + dev: true + + /minipass/3.1.3: + resolution: { integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== } + engines: { node: '>=8' } + dependencies: + yallist: 4.0.0 + dev: true + + /mississippi/3.0.0: + resolution: { integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== } + engines: { node: '>=4.0.0' } + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.0 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mitt/1.1.2: + resolution: { integrity: sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw== } + dev: true + + /mixin-deep/1.3.2: + resolution: { integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== } + engines: { node: '>=0.10.0' } + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mkdirp/0.5.5: + resolution: { integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== } + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /ml-array-max/1.2.4: + resolution: { integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ== } + dependencies: + is-any-array: 2.0.0 + dev: false + + /ml-array-min/1.2.3: + resolution: { integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q== } + dependencies: + is-any-array: 2.0.0 + dev: false + + /ml-array-rescale/1.3.7: + resolution: { integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ== } + dependencies: + is-any-array: 2.0.0 + ml-array-max: 1.2.4 + ml-array-min: 1.2.3 + dev: false + + /ml-matrix/6.10.4: + resolution: { integrity: sha512-rUyEhfNPzqFsltYwvjNeYQXlYEaVea3KgzcJKJteQUj2WVAGFx9fLNRjtMR9mg2B6bd5buxlmkZmxM4hmO+SKg== } + dependencies: + is-any-array: 2.0.0 + ml-array-rescale: 1.3.7 + dev: false + + /move-concurrently/1.0.1: + resolution: { integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== } + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.5 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /ms/2.0.0: + resolution: { integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== } + dev: true + + /ms/2.1.1: + resolution: { integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== } + dev: true + + /ms/2.1.2: + resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + dev: true + + /ms/2.1.3: + resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } + dev: true + + /multicast-dns-service-types/1.1.0: + resolution: { integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== } + dev: true + + /multicast-dns/6.2.3: + resolution: { integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== } + hasBin: true + dependencies: + dns-packet: 1.3.1 + thunky: 1.1.0 + dev: true + + /mute-stream/0.0.8: + resolution: { integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== } + dev: true + + /mz/2.7.0: + resolution: { integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nan/2.15.0: + resolution: { integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== } + requiresBuild: true + dev: true + optional: true + + /nanoid/3.3.6: + resolution: { integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + dev: true + + /nanomatch/1.2.13: + resolution: { integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /nanomatch/1.2.13_supports-color@6.1.0: + resolution: { integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== } + engines: { node: '>=0.10.0' } + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /natural-compare/1.4.0: + resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } + dev: true + + /negotiator/0.6.2: + resolution: { integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== } + engines: { node: '>= 0.6' } + dev: true + + /neo-async/2.6.2: + resolution: { integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== } + dev: true + + /nice-try/1.0.5: + resolution: { integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== } + dev: true + + /no-case/2.3.2: + resolution: { integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== } + dependencies: + lower-case: 1.1.4 + dev: true + + /node-forge/0.10.0: + resolution: { integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== } + engines: { node: '>= 6.0.0' } + dev: true + + /node-ipc/9.1.4: + resolution: { integrity: sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g== } + engines: { node: '>=8.0.0' } + dependencies: + event-pubsub: 4.3.0 + js-message: 1.0.7 + js-queue: 2.0.2 + dev: true + + /node-libs-browser/2.2.1: + resolution: { integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== } + dependencies: + assert: 1.5.0 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.7 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.0 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: true + + /node-releases/1.1.71: + resolution: { integrity: sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== } + dev: true + + /normalize-package-data/2.5.0: + resolution: { integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== } + dependencies: + hosted-git-info: 2.8.8 + resolve: 1.20.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.2: + resolution: { integrity: sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== } + engines: { node: '>=10' } + dependencies: + hosted-git-info: 4.0.1 + resolve: 1.20.0 + semver: 7.3.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/1.0.0: + resolution: { integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA== } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-path/2.1.1: + resolution: { integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== } + engines: { node: '>=0.10.0' } + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path/3.0.0: + resolution: { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-range/0.1.2: + resolution: { integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== } + engines: { node: '>=0.10.0' } + dev: true + + /normalize-url/1.9.1: + resolution: { integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== } + engines: { node: '>=4' } + dependencies: + object-assign: 4.1.1 + prepend-http: 1.0.4 + query-string: 4.3.4 + sort-keys: 1.1.2 + dev: true + + /normalize-url/3.3.0: + resolution: { integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== } + engines: { node: '>=6' } + dev: true + + /normalize-wheel/1.0.1: + resolution: { integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA== } + dev: false + + /npm-path/2.0.4: + resolution: { integrity: sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== } + engines: { node: '>=0.8' } + hasBin: true + dependencies: + which: 1.3.1 + dev: true + + /npm-run-path/2.0.2: + resolution: { integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== } + engines: { node: '>=4' } + dependencies: + path-key: 2.0.1 + dev: true + + /npm-run-path/4.0.1: + resolution: { integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== } + engines: { node: '>=8' } + dependencies: + path-key: 3.1.1 + dev: true + + /npm-which/3.0.1: + resolution: { integrity: sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A== } + engines: { node: '>=4.2.0' } + hasBin: true + dependencies: + commander: 2.20.3 + npm-path: 2.0.4 + which: 1.3.1 + dev: true + + /nprogress/0.2.0: + resolution: { integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== } + dev: false + + /nth-check/1.0.2: + resolution: { integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== } + dependencies: + boolbase: 1.0.0 + dev: true + + /nth-check/2.0.0: + resolution: { integrity: sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== } + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction/1.2.2: + resolution: { integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== } + dev: true + + /number-is-nan/1.0.1: + resolution: { integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== } + engines: { node: '>=0.10.0' } + dev: true + + /oauth-sign/0.9.0: + resolution: { integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== } + dev: true + + /object-assign/4.1.1: + resolution: { integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== } + engines: { node: '>=0.10.0' } + dev: true + + /object-copy/0.1.0: + resolution: { integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== } + engines: { node: '>=0.10.0' } + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-hash/1.3.1: + resolution: { integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== } + engines: { node: '>= 0.10.0' } + dev: true + + /object-inspect/1.9.0: + resolution: { integrity: sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== } + + /object-is/1.1.5: + resolution: { integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /object-keys/1.1.1: + resolution: { integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== } + engines: { node: '>= 0.4' } + dev: true + + /object-visit/1.0.1: + resolution: { integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /object.assign/4.1.2: + resolution: { integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + has-symbols: 1.0.2 + object-keys: 1.1.1 + dev: true + + /object.getownpropertydescriptors/2.1.2: + resolution: { integrity: sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== } + engines: { node: '>= 0.8' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + dev: true + + /object.pick/1.3.0: + resolution: { integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /object.values/1.1.3: + resolution: { integrity: sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.18.0 + has: 1.0.3 + dev: true + + /obuf/1.1.2: + resolution: { integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== } + dev: true + + /on-finished/2.3.0: + resolution: { integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== } + engines: { node: '>= 0.8' } + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers/1.0.2: + resolution: { integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== } + engines: { node: '>= 0.8' } + dev: true + + /once/1.4.0: + resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/2.0.1: + resolution: { integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== } + engines: { node: '>=4' } + dependencies: + mimic-fn: 1.2.0 + dev: true + + /onetime/5.1.2: + resolution: { integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== } + engines: { node: '>=6' } + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/6.4.0: + resolution: { integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== } + engines: { node: '>=8' } + dependencies: + is-wsl: 1.1.0 + dev: true + + /opener/1.5.2: + resolution: { integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== } + hasBin: true + dev: true + + /opn/5.5.0: + resolution: { integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== } + engines: { node: '>=4' } + dependencies: + is-wsl: 1.1.0 + dev: true + + /optionator/0.8.3: + resolution: { integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== } + engines: { node: '>= 0.8.0' } + dependencies: + deep-is: 0.1.3 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /ora/3.4.0: + resolution: { integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== } + engines: { node: '>=6' } + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.6.0 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + dev: true + + /ora/5.4.0: + resolution: { integrity: sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== } + engines: { node: '>=10' } + dependencies: + bl: 4.1.0 + chalk: 4.1.1 + cli-cursor: 3.1.0 + cli-spinners: 2.6.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.0 + wcwidth: 1.0.1 + dev: true + + /original/1.0.2: + resolution: { integrity: sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== } + dependencies: + url-parse: 1.5.1 + dev: true + + /os-browserify/0.3.0: + resolution: { integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== } + dev: true + + /os-tmpdir/1.0.2: + resolution: { integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== } + engines: { node: '>=0.10.0' } + dev: true + + /p-finally/1.0.0: + resolution: { integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== } + engines: { node: '>=4' } + dev: true + + /p-finally/2.0.1: + resolution: { integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== } + engines: { node: '>=8' } + dev: true + + /p-limit/1.3.0: + resolution: { integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== } + engines: { node: '>=4' } + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit/2.3.0: + resolution: { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } + engines: { node: '>=6' } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: '>=10' } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/2.0.0: + resolution: { integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== } + engines: { node: '>=4' } + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate/3.0.0: + resolution: { integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== } + engines: { node: '>=6' } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/4.1.0: + resolution: { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } + engines: { node: '>=8' } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } + engines: { node: '>=10' } + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map/1.2.0: + resolution: { integrity: sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== } + engines: { node: '>=4' } + dev: true + + /p-map/2.1.0: + resolution: { integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== } + engines: { node: '>=6' } + dev: true + + /p-map/3.0.0: + resolution: { integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== } + engines: { node: '>=8' } + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-retry/3.0.1: + resolution: { integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== } + engines: { node: '>=6' } + dependencies: + retry: 0.12.0 + dev: true + + /p-try/1.0.0: + resolution: { integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== } + engines: { node: '>=4' } + dev: true + + /p-try/2.2.0: + resolution: { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } + engines: { node: '>=6' } + dev: true + + /pako/1.0.11: + resolution: { integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== } + dev: true + + /parallel-transform/1.2.0: + resolution: { integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== } + dependencies: + cyclist: 1.0.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /param-case/2.1.1: + resolution: { integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== } + dependencies: + no-case: 2.3.2 + dev: true + + /parent-module/1.0.1: + resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: '>=6' } + dependencies: + callsites: 3.1.0 + dev: true + + /parse-asn1/5.1.6: + resolution: { integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== } + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.1 + safe-buffer: 5.2.1 + dev: true + + /parse-json/2.2.0: + resolution: { integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== } + engines: { node: '>=0.10.0' } + dependencies: + error-ex: 1.3.2 + dev: true + + /parse-json/4.0.0: + resolution: { integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== } + engines: { node: '>=4' } + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json/5.2.0: + resolution: { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== } + engines: { node: '>=8' } + dependencies: + '@babel/code-frame': 7.12.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.1.6 + dev: true + + /parse5-htmlparser2-tree-adapter/6.0.1: + resolution: { integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== } + dependencies: + parse5: 6.0.1 + dev: true + + /parse5/5.1.1: + resolution: { integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== } + dev: true + + /parse5/6.0.1: + resolution: { integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== } + dev: true + + /parseurl/1.3.3: + resolution: { integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== } + engines: { node: '>= 0.8' } + dev: true + + /pascalcase/0.1.1: + resolution: { integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== } + engines: { node: '>=0.10.0' } + dev: true + + /path-browserify/0.0.1: + resolution: { integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== } + dev: true + + /path-dirname/1.0.2: + resolution: { integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== } + dev: true + + /path-exists/2.1.0: + resolution: { integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== } + engines: { node: '>=0.10.0' } + dependencies: + pinkie-promise: 2.0.1 + dev: true + + /path-exists/3.0.0: + resolution: { integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== } + engines: { node: '>=4' } + dev: true + + /path-exists/4.0.0: + resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } + engines: { node: '>=8' } + dev: true + + /path-is-absolute/1.0.1: + resolution: { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } + engines: { node: '>=0.10.0' } + dev: true + + /path-is-inside/1.0.2: + resolution: { integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== } + dev: true + + /path-key/2.0.1: + resolution: { integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== } + engines: { node: '>=4' } + dev: true + + /path-key/3.1.1: + resolution: { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } + engines: { node: '>=8' } + dev: true + + /path-parse/1.0.6: + resolution: { integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== } + dev: true + + /path-to-regexp/0.1.7: + resolution: { integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== } + dev: true + + /path-type/2.0.0: + resolution: { integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== } + engines: { node: '>=4' } + dependencies: + pify: 2.3.0 + dev: true + + /path-type/3.0.0: + resolution: { integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== } + engines: { node: '>=4' } + dependencies: + pify: 3.0.0 + dev: true + + /path-type/4.0.0: + resolution: { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } + engines: { node: '>=8' } + dev: true + + /pbkdf2/3.1.1: + resolution: { integrity: sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== } + engines: { node: '>=0.12' } + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /performance-now/2.1.0: + resolution: { integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== } + dev: true + + /picocolors/1.0.0: + resolution: { integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== } + dev: true + + /picomatch/2.3.1: + resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: '>=8.6' } + dev: true + + /pify/2.3.0: + resolution: { integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== } + engines: { node: '>=0.10.0' } + dev: true + + /pify/3.0.0: + resolution: { integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== } + engines: { node: '>=4' } + dev: true + + /pify/4.0.1: + resolution: { integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== } + engines: { node: '>=6' } + dev: true + + /pinkie-promise/2.0.1: + resolution: { integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== } + engines: { node: '>=0.10.0' } + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: { integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== } + engines: { node: '>=0.10.0' } + dev: true + + /pkg-dir/1.0.0: + resolution: { integrity: sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg== } + engines: { node: '>=0.10.0' } + dependencies: + find-up: 1.1.2 + dev: true + + /pkg-dir/2.0.0: + resolution: { integrity: sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== } + engines: { node: '>=4' } + dependencies: + find-up: 2.1.0 + dev: true + + /pkg-dir/3.0.0: + resolution: { integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== } + engines: { node: '>=6' } + dependencies: + find-up: 3.0.0 + dev: true + + /pkg-dir/4.2.0: + resolution: { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + dev: true + + /please-upgrade-node/3.2.0: + resolution: { integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== } + dependencies: + semver-compare: 1.0.0 + dev: true + + /pnp-webpack-plugin/1.6.4_typescript@3.9.9: + resolution: { integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== } + engines: { node: '>=6' } + dependencies: + ts-pnp: 1.2.0_typescript@3.9.9 + transitivePeerDependencies: + - typescript + dev: true + + /portfinder/1.0.28: + resolution: { integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== } + engines: { node: '>= 0.12.0' } + dependencies: + async: 2.6.3 + debug: 3.2.7 + mkdirp: 0.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /portfinder/1.0.28_supports-color@6.1.0: + resolution: { integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== } + engines: { node: '>= 0.12.0' } + dependencies: + async: 2.6.3 + debug: 3.2.7_supports-color@6.1.0 + mkdirp: 0.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /posix-character-classes/0.1.1: + resolution: { integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== } + engines: { node: '>=0.10.0' } + dev: true + + /postcss-calc/7.0.5: + resolution: { integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== } + dependencies: + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + postcss-value-parser: 4.1.0 + dev: true + + /postcss-colormin/4.0.3: + resolution: { integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + color: 3.1.3 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-convert-values/4.0.1: + resolution: { integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-discard-comments/4.0.2: + resolution: { integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-duplicates/4.0.2: + resolution: { integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-empty/4.0.1: + resolution: { integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-overridden/4.0.1: + resolution: { integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-load-config/2.1.2: + resolution: { integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== } + engines: { node: '>= 4' } + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + dev: true + + /postcss-loader/3.0.0: + resolution: { integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== } + engines: { node: '>= 6' } + dependencies: + loader-utils: 1.4.2 + postcss: 7.0.35 + postcss-load-config: 2.1.2 + schema-utils: 1.0.0 + dev: true + + /postcss-merge-longhand/4.0.11: + resolution: { integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== } + engines: { node: '>=6.9.0' } + dependencies: + css-color-names: 0.0.4 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + stylehacks: 4.0.3 + dev: true + + /postcss-merge-rules/4.0.3: + resolution: { integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + caniuse-api: 3.0.0 + cssnano-util-same-parent: 4.0.1 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + vendors: 1.0.4 + dev: true + + /postcss-minify-font-values/4.0.2: + resolution: { integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-gradients/4.0.2: + resolution: { integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + is-color-stop: 1.1.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-params/4.0.2: + resolution: { integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== } + engines: { node: '>=6.9.0' } + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.16.3 + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + uniqs: 2.0.0 + dev: true + + /postcss-minify-selectors/4.0.2: + resolution: { integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== } + engines: { node: '>=6.9.0' } + dependencies: + alphanum-sort: 1.0.2 + has: 1.0.3 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + dev: true + + /postcss-modules-extract-imports/2.0.0: + resolution: { integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== } + engines: { node: '>= 6' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-modules-local-by-default/3.0.3: + resolution: { integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== } + engines: { node: '>= 6' } + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + postcss-value-parser: 4.1.0 + dev: true + + /postcss-modules-scope/2.2.0: + resolution: { integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== } + engines: { node: '>= 6' } + dependencies: + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + dev: true + + /postcss-modules-values/3.0.0: + resolution: { integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== } + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.35 + dev: true + + /postcss-normalize-charset/4.0.1: + resolution: { integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-normalize-display-values/4.0.2: + resolution: { integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-positions/4.0.2: + resolution: { integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-repeat-style/4.0.2: + resolution: { integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-string/4.0.2: + resolution: { integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== } + engines: { node: '>=6.9.0' } + dependencies: + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-timing-functions/4.0.2: + resolution: { integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-unicode/4.0.1: + resolution: { integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-url/4.0.1: + resolution: { integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== } + engines: { node: '>=6.9.0' } + dependencies: + is-absolute-url: 2.1.0 + normalize-url: 3.3.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-whitespace/4.0.2: + resolution: { integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== } + engines: { node: '>=6.9.0' } + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-ordered-values/4.1.2: + resolution: { integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-prefix-selector/1.9.0: + resolution: { integrity: sha512-tTUHUNP+/Qfgg+fvbljUIeLs1ijICWb8+CT3bZM2joE2pkd+EnuBzSfZNHY2RMmozNRp44yEFv+I+6IIiLcoCg== } + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-reduce-initial/4.0.3: + resolution: { integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + caniuse-api: 3.0.0 + has: 1.0.3 + postcss: 7.0.35 + dev: true + + /postcss-reduce-transforms/4.0.2: + resolution: { integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== } + engines: { node: '>=6.9.0' } + dependencies: + cssnano-util-get-match: 4.0.0 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-selector-parser/3.1.2: + resolution: { integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== } + engines: { node: '>=8' } + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + dev: true + + /postcss-selector-parser/6.0.4: + resolution: { integrity: sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== } + engines: { node: '>=4' } + dependencies: + cssesc: 3.0.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo/4.0.2: + resolution: { integrity: sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== } + engines: { node: '>=6.9.0' } + dependencies: + is-svg: 3.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + svgo: 1.3.2 + dev: true + + /postcss-unique-selectors/4.0.1: + resolution: { integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== } + engines: { node: '>=6.9.0' } + dependencies: + alphanum-sort: 1.0.2 + postcss: 7.0.35 + uniqs: 2.0.0 + dev: true + + /postcss-value-parser/3.3.1: + resolution: { integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== } + dev: true + + /postcss-value-parser/4.1.0: + resolution: { integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== } + dev: true + + /postcss/5.2.18: + resolution: { integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== } + engines: { node: '>=0.12' } + dependencies: + chalk: 1.1.3 + js-base64: 2.6.4 + source-map: 0.5.7 + supports-color: 3.2.3 + dev: true + + /postcss/7.0.35: + resolution: { integrity: sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== } + engines: { node: '>=6.0.0' } + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + dev: true + + /postcss/8.4.31: + resolution: { integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /posthtml-parser/0.2.1: + resolution: { integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw== } + dependencies: + htmlparser2: 3.10.1 + isobject: 2.1.0 + dev: true + + /posthtml-rename-id/1.0.12: + resolution: { integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw== } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /posthtml-render/1.3.1: + resolution: { integrity: sha512-eSToKjNLu0FiF76SSGMHjOFXYzAc/CJqi677Sq6hYvcvFCBtD6de/W5l+0IYPf7ypscqAfjCttxvTdMJt5Gj8Q== } + engines: { node: '>=10' } + dev: true + + /posthtml-svg-mode/1.0.3: + resolution: { integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ== } + dependencies: + merge-options: 1.0.1 + posthtml: 0.9.2 + posthtml-parser: 0.2.1 + posthtml-render: 1.3.1 + dev: true + + /posthtml/0.9.2: + resolution: { integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q== } + engines: { node: '>=0.10.0' } + dependencies: + posthtml-parser: 0.2.1 + posthtml-render: 1.3.1 + dev: true + + /prelude-ls/1.1.2: + resolution: { integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== } + engines: { node: '>= 0.8.0' } + dev: true + + /prepend-http/1.0.4: + resolution: { integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== } + engines: { node: '>=0.10.0' } + dev: true + + /prettier/1.19.1: + resolution: { integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== } + engines: { node: '>=4' } + hasBin: true + requiresBuild: true + dev: true + optional: true + + /prettier/2.3.0: + resolution: { integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== } + engines: { node: '>=10.13.0' } + hasBin: true + dev: true + + /pretty-error/2.1.2: + resolution: { integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== } + dependencies: + lodash: 4.17.21 + renderkid: 2.0.5 + dev: true + + /private/0.1.8: + resolution: { integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== } + engines: { node: '>= 0.6' } + dev: true + + /process-nextick-args/2.0.1: + resolution: { integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== } + dev: true + + /process/0.11.10: + resolution: { integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== } + engines: { node: '>= 0.6.0' } + dev: true + + /progress/2.0.3: + resolution: { integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== } + engines: { node: '>=0.4.0' } + dev: true + + /promise-inflight/1.0.1: + resolution: { integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== } + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /property-expr/1.5.1: + resolution: { integrity: sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== } + dev: true + + /proxy-addr/2.0.6: + resolution: { integrity: sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== } + engines: { node: '>= 0.10' } + dependencies: + forwarded: 0.1.2 + ipaddr.js: 1.9.1 + dev: true + + /prr/1.0.1: + resolution: { integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== } + dev: true + + /pseudomap/1.0.2: + resolution: { integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== } + dev: true + + /psl/1.8.0: + resolution: { integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== } + dev: true + + /public-encrypt/4.0.3: + resolution: { integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== } + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pump/2.0.1: + resolution: { integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump/3.0.0: + resolution: { integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pumpify/1.5.1: + resolution: { integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== } + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode/1.3.2: + resolution: { integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== } + dev: true + + /punycode/1.4.1: + resolution: { integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== } + dev: true + + /punycode/2.1.1: + resolution: { integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== } + engines: { node: '>=6' } + + /q/1.5.1: + resolution: { integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== } + engines: { node: '>=0.6.0', teleport: '>=0.2.0' } + dev: true + + /qs/6.10.0: + resolution: { integrity: sha512-yjACOWijC6L/kmPZZAsVBNY2zfHSIbpdpL977quseu56/8BZ2LoF5axK2bGhbzhVKt7V9xgWTtpyLbxwIoER0Q== } + engines: { node: '>=0.6' } + dependencies: + side-channel: 1.0.4 + dev: false + + /qs/6.5.2: + resolution: { integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== } + engines: { node: '>=0.6' } + dev: true + + /qs/6.7.0: + resolution: { integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== } + engines: { node: '>=0.6' } + dev: true + + /query-string/4.3.4: + resolution: { integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== } + engines: { node: '>=0.10.0' } + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: true + + /querystring-es3/0.2.1: + resolution: { integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== } + engines: { node: '>=0.4.x' } + dev: true + + /querystring/0.2.0: + resolution: { integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== } + engines: { node: '>=0.4.x' } + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystring/0.2.1: + resolution: { integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== } + engines: { node: '>=0.4.x' } + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystringify/2.2.0: + resolution: { integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== } + dev: true + + /quick-lru/4.0.1: + resolution: { integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== } + engines: { node: '>=8' } + dev: true + + /randombytes/2.1.0: + resolution: { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill/1.0.4: + resolution: { integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== } + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /range-parser/1.2.1: + resolution: { integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== } + engines: { node: '>= 0.6' } + dev: true + + /raw-body/2.4.0: + resolution: { integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== } + engines: { node: '>= 0.8' } + dependencies: + bytes: 3.1.0 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /read-pkg-up/2.0.0: + resolution: { integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== } + engines: { node: '>=4' } + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + dev: true + + /read-pkg-up/7.0.1: + resolution: { integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/2.0.0: + resolution: { integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== } + engines: { node: '>=4' } + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + dev: true + + /read-pkg/4.0.1: + resolution: { integrity: sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w== } + engines: { node: '>=6' } + dependencies: + normalize-package-data: 2.5.0 + parse-json: 4.0.0 + pify: 3.0.0 + dev: true + + /read-pkg/5.2.0: + resolution: { integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== } + engines: { node: '>=8' } + dependencies: + '@types/normalize-package-data': 2.4.0 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/1.0.34: + resolution: { integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== } + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream/2.3.7: + resolution: { integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== } + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream/3.6.0: + resolution: { integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== } + engines: { node: '>= 6' } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/2.2.1: + resolution: { integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== } + engines: { node: '>=0.10' } + dependencies: + graceful-fs: 4.2.6 + micromatch: 3.1.10 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /readdirp/2.2.1_supports-color@6.1.0: + resolution: { integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== } + engines: { node: '>=0.10' } + dependencies: + graceful-fs: 4.2.6 + micromatch: 3.1.10_supports-color@6.1.0 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /readdirp/3.6.0: + resolution: { integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== } + engines: { node: '>=8.10.0' } + dependencies: + picomatch: 2.3.1 + dev: true + + /redent/3.0.0: + resolution: { integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== } + engines: { node: '>=8' } + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /regenerate-unicode-properties/8.2.0: + resolution: { integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== } + engines: { node: '>=4' } + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate/1.4.2: + resolution: { integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== } + dev: true + + /regenerator-runtime/0.11.1: + resolution: { integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== } + + /regenerator-runtime/0.13.11: + resolution: { integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== } + + /regenerator-transform/0.10.1: + resolution: { integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== } + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + private: 0.1.8 + dev: true + + /regenerator-transform/0.14.5: + resolution: { integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== } + dependencies: + '@babel/runtime': 7.13.10 + dev: true + + /regex-not/1.0.2: + resolution: { integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /regexp.prototype.flags/1.3.1: + resolution: { integrity: sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== } + engines: { node: '>= 0.4' } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /regexpp/2.0.1: + resolution: { integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== } + engines: { node: '>=6.5.0' } + dev: true + + /regexpp/3.1.0: + resolution: { integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== } + engines: { node: '>=8' } + dev: true + + /regexpu-core/2.0.0: + resolution: { integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== } + dependencies: + regenerate: 1.4.2 + regjsgen: 0.2.0 + regjsparser: 0.1.5 + dev: true + + /regexpu-core/4.7.1: + resolution: { integrity: sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== } + engines: { node: '>=4' } + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 8.2.0 + regjsgen: 0.5.2 + regjsparser: 0.6.7 + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.2.0 + dev: true + + /regjsgen/0.2.0: + resolution: { integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== } + dev: true + + /regjsgen/0.5.2: + resolution: { integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== } + dev: true + + /regjsparser/0.1.5: + resolution: { integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== } + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /regjsparser/0.6.7: + resolution: { integrity: sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== } + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /relateurl/0.2.7: + resolution: { integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== } + engines: { node: '>= 0.10' } + dev: true + + /remove-trailing-separator/1.1.0: + resolution: { integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== } + dev: true + + /renderkid/2.0.5: + resolution: { integrity: sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== } + dependencies: + css-select: 2.1.0 + dom-converter: 0.2.0 + htmlparser2: 3.10.1 + lodash: 4.17.21 + strip-ansi: 3.0.1 + dev: true + + /repeat-element/1.1.3: + resolution: { integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== } + engines: { node: '>=0.10.0' } + dev: true + + /repeat-string/1.6.1: + resolution: { integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== } + engines: { node: '>=0.10' } + dev: true + + /request/2.88.2: + resolution: { integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== } + engines: { node: '>= 6' } + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.29 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } + engines: { node: '>=0.10.0' } + dev: true + + /require-main-filename/2.0.0: + resolution: { integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== } + dev: true + + /requires-port/1.0.0: + resolution: { integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== } + dev: true + + /resize-observer-polyfill/1.5.1: + resolution: { integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== } + dev: false + + /resolve-cwd/2.0.0: + resolution: { integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== } + engines: { node: '>=4' } + dependencies: + resolve-from: 3.0.0 + dev: true + + /resolve-from/3.0.0: + resolution: { integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== } + engines: { node: '>=4' } + dev: true + + /resolve-from/4.0.0: + resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: '>=4' } + dev: true + + /resolve-from/5.0.0: + resolution: { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } + engines: { node: '>=8' } + dev: true + + /resolve-global/1.0.0: + resolution: { integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== } + engines: { node: '>=8' } + dependencies: + global-dirs: 0.1.1 + dev: true + + /resolve-url/0.2.1: + resolution: { integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== } + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /resolve/1.20.0: + resolution: { integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== } + dependencies: + is-core-module: 2.2.0 + path-parse: 1.0.6 + dev: true + + /restore-cursor/2.0.0: + resolution: { integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== } + engines: { node: '>=4' } + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.3 + dev: true + + /restore-cursor/3.1.0: + resolution: { integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== } + engines: { node: '>=8' } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.3 + dev: true + + /ret/0.1.15: + resolution: { integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== } + engines: { node: '>=0.12' } + dev: true + + /retry/0.12.0: + resolution: { integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== } + engines: { node: '>= 4' } + dev: true + + /rgb-regex/1.0.1: + resolution: { integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== } + dev: true + + /rgba-regex/1.0.0: + resolution: { integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== } + dev: true + + /rimraf/2.6.3: + resolution: { integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== } + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /rimraf/2.7.1: + resolution: { integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== } + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /ripemd160/2.0.2: + resolution: { integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== } + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rollup/2.48.0: + resolution: { integrity: sha512-wl9ZSSSsi5579oscSDYSzGn092tCS076YB+TQrzsGuSfYyJeep8eEWj0eaRjuC5McuMNmcnR8icBqiE/FWNB1A== } + engines: { node: '>=10.0.0' } + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async/2.4.1: + resolution: { integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== } + engines: { node: '>=0.12.0' } + dev: true + + /run-node/1.0.0: + resolution: { integrity: sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /run-queue/1.0.3: + resolution: { integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== } + dependencies: + aproba: 1.2.0 + dev: true + + /rxjs/6.6.6: + resolution: { integrity: sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== } + engines: { npm: '>=2.0.0' } + dependencies: + tslib: 1.14.1 + dev: true + + /safe-buffer/5.1.2: + resolution: { integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== } + dev: true + + /safe-buffer/5.2.1: + resolution: { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== } + dev: true + + /safe-regex/1.1.0: + resolution: { integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== } + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer/2.1.2: + resolution: { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } + dev: true + + /sass-loader/8.0.2_sass@1.32.8: + resolution: { integrity: sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== } + engines: { node: '>= 8.9.0' } + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 + sass: ^1.3.0 + webpack: ^4.36.0 || ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + clone-deep: 4.0.1 + loader-utils: 1.4.2 + neo-async: 2.6.2 + sass: 1.32.8 + schema-utils: 2.7.1 + semver: 6.3.0 + dev: true + + /sass/1.32.8: + resolution: { integrity: sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== } + engines: { node: '>=8.9.0' } + hasBin: true + dependencies: + chokidar: 3.5.3 + dev: true + + /sax/1.2.4: + resolution: { integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== } + dev: true + + /schema-utils/1.0.0: + resolution: { integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== } + engines: { node: '>= 4' } + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1_ajv@6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/2.7.1: + resolution: { integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== } + engines: { node: '>= 8.9.0' } + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/3.1.1: + resolution: { integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== } + engines: { node: '>= 10.13.0' } + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + + /scp2/0.5.0: + resolution: { integrity: sha512-HzPWuOHM/qVjVYhjmgfBKyUXQsI+9+SdI5l+5E0S98bUHirf1NoTynfrAPb0kr0oJKg/JFdFSlZwq7FnqLttvw== } + hasBin: true + dependencies: + async: 0.9.2 + glob: 7.0.6 + lodash: 4.11.2 + ssh2: 0.4.15 + dev: true + + /select-hose/2.0.0: + resolution: { integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== } + dev: true + + /select/1.1.2: + resolution: { integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== } + dev: false + + /selfsigned/1.10.8: + resolution: { integrity: sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== } + dependencies: + node-forge: 0.10.0 + dev: true + + /semver-compare/1.0.0: + resolution: { integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== } + dev: true + + /semver/5.7.1: + resolution: { integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== } + hasBin: true + dev: true + + /semver/6.3.0: + resolution: { integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== } + hasBin: true + dev: true + + /semver/7.0.0: + resolution: { integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== } + hasBin: true + dev: true + + /semver/7.3.2: + resolution: { integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== } + engines: { node: '>=10' } + hasBin: true + dev: true + + /semver/7.3.4: + resolution: { integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== } + engines: { node: '>=10' } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send/0.17.1: + resolution: { integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== } + engines: { node: '>= 0.8.0' } + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /send/0.17.1_supports-color@6.1.0: + resolution: { integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== } + engines: { node: '>= 0.8.0' } + dependencies: + debug: 2.6.9_supports-color@6.1.0 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript/4.0.0: + resolution: { integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== } + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index/1.9.1_supports-color@6.1.0: + resolution: { integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== } + engines: { node: '>= 0.8.0' } + dependencies: + accepts: 1.3.7 + batch: 0.6.1 + debug: 2.6.9_supports-color@6.1.0 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.29 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.14.1: + resolution: { integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== } + engines: { node: '>= 0.8.0' } + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.14.1_supports-color@6.1.0: + resolution: { integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== } + engines: { node: '>= 0.8.0' } + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-blocking/2.0.0: + resolution: { integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== } + dev: true + + /set-value/2.0.1: + resolution: { integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setimmediate/1.0.5: + resolution: { integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== } + dev: true + + /setprototypeof/1.1.0: + resolution: { integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== } + dev: true + + /setprototypeof/1.1.1: + resolution: { integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== } + dev: true + + /sha.js/2.4.11: + resolution: { integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== } + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shallow-clone/3.0.1: + resolution: { integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== } + engines: { node: '>=8' } + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command/1.2.0: + resolution: { integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== } + engines: { node: '>=0.10.0' } + dependencies: + shebang-regex: 1.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: '>=8' } + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/1.0.0: + resolution: { integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== } + engines: { node: '>=0.10.0' } + dev: true + + /shebang-regex/3.0.0: + resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } + engines: { node: '>=8' } + dev: true + + /shell-quote/1.7.2: + resolution: { integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== } + dev: true + + /side-channel/1.0.4: + resolution: { integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + object-inspect: 1.9.0 + dev: false + + /signal-exit/3.0.3: + resolution: { integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== } + dev: true + + /simple-git/1.132.0: + resolution: { integrity: sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg== } + dependencies: + debug: 4.3.2 + transitivePeerDependencies: + - supports-color + dev: true + + /simple-swizzle/0.2.2: + resolution: { integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== } + dependencies: + is-arrayish: 0.3.2 + + /slash/1.0.0: + resolution: { integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== } + engines: { node: '>=0.10.0' } + dev: true + + /slash/2.0.0: + resolution: { integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== } + engines: { node: '>=6' } + dev: true + + /slash/3.0.0: + resolution: { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } + engines: { node: '>=8' } + dev: true + + /slice-ansi/0.0.4: + resolution: { integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== } + engines: { node: '>=0.10.0' } + dev: true + + /slice-ansi/2.1.0: + resolution: { integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== } + engines: { node: '>=6' } + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: true + + /snapdragon-node/2.1.1: + resolution: { integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util/3.0.1: + resolution: { integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon/0.8.2: + resolution: { integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== } + engines: { node: '>=0.10.0' } + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /snapdragon/0.8.2_supports-color@6.1.0: + resolution: { integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== } + engines: { node: '>=0.10.0' } + dependencies: + base: 0.11.2 + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs-client/1.5.0_supports-color@6.1.0: + resolution: { integrity: sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== } + dependencies: + debug: 3.2.7_supports-color@6.1.0 + eventsource: 1.1.0 + faye-websocket: 0.11.3 + inherits: 2.0.4 + json3: 3.3.3 + url-parse: 1.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs/0.3.21: + resolution: { integrity: sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== } + dependencies: + faye-websocket: 0.11.3 + uuid: 3.4.0 + websocket-driver: 0.7.4 + dev: true + + /sort-keys/1.1.2: + resolution: { integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== } + engines: { node: '>=0.10.0' } + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /sortablejs/1.10.2: + resolution: { integrity: sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== } + dev: false + + /source-list-map/2.0.1: + resolution: { integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== } + dev: true + + /source-map-js/1.0.2: + resolution: { integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== } + engines: { node: '>=0.10.0' } + dev: true + + /source-map-resolve/0.5.3: + resolution: { integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== } + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-support/0.5.19: + resolution: { integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== } + dependencies: + buffer-from: 1.1.1 + source-map: 0.6.1 + dev: true + + /source-map-url/0.4.1: + resolution: { integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== } + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map/0.5.7: + resolution: { integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== } + engines: { node: '>=0.10.0' } + dev: true + + /source-map/0.6.1: + resolution: { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } + engines: { node: '>=0.10.0' } + dev: true + + /sourcemap-codec/1.4.8: + resolution: { integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== } + dev: true + + /spdx-correct/3.1.1: + resolution: { integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== } + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.7 + dev: true + + /spdx-exceptions/2.3.0: + resolution: { integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== } + dev: true + + /spdx-expression-parse/3.0.1: + resolution: { integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== } + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.7 + dev: true + + /spdx-license-ids/3.0.7: + resolution: { integrity: sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== } + dev: true + + /spdy-transport/3.0.0_supports-color@6.1.0: + resolution: { integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== } + dependencies: + debug: 4.3.2_supports-color@6.1.0 + detect-node: 2.0.5 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy/4.0.2_supports-color@6.1.0: + resolution: { integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== } + engines: { node: '>=6.0.0' } + dependencies: + debug: 4.3.2_supports-color@6.1.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /split-string/3.1.0: + resolution: { integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== } + engines: { node: '>=0.10.0' } + dependencies: + extend-shallow: 3.0.2 + dev: true + + /split2/3.2.2: + resolution: { integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== } + dependencies: + readable-stream: 3.6.0 + dev: true + + /sprintf-js/1.0.3: + resolution: { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== } + dev: true + + /ssh2-streams/0.0.23: + resolution: { integrity: sha512-llhegJ0WOuEZQoWvh+ZB/ZQpJNjuDVPVAh+UjIsi0YLM7GeKPX7xMnh5LJtjOBAChumuUg7hNfIUfKjrxfNNYg== } + engines: { node: '>=0.8.7' } + dependencies: + asn1: 0.2.4 + readable-stream: 1.0.34 + streamsearch: 0.1.2 + dev: true + + /ssh2/0.4.15: + resolution: { integrity: sha512-/KEtwbNly4LtP92bBfgY4RCj8YAvKaXg89nLaCINNMu1X5d++W5DOZz+yX2xwjlSmdw8we7AC9LYnAzBkA4OwA== } + engines: { node: '>=0.8.7' } + dependencies: + readable-stream: 1.0.34 + ssh2-streams: 0.0.23 + dev: true + + /sshpk/1.16.1: + resolution: { integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== } + engines: { node: '>=0.10.0' } + hasBin: true + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri/6.0.1: + resolution: { integrity: sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== } + dependencies: + figgy-pudding: 3.5.2 + dev: true + + /ssri/7.1.0: + resolution: { integrity: sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== } + engines: { node: '>= 8' } + dependencies: + figgy-pudding: 3.5.2 + minipass: 3.1.3 + dev: true + + /stable/0.1.8: + resolution: { integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== } + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /stackframe/1.2.0: + resolution: { integrity: sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== } + dev: true + + /staged-git-files/1.1.2: + resolution: { integrity: sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== } + hasBin: true + dev: true + + /static-extend/0.1.2: + resolution: { integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /statuses/1.5.0: + resolution: { integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== } + engines: { node: '>= 0.6' } + dev: true + + /stream-browserify/2.0.2: + resolution: { integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== } + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /stream-each/1.2.3: + resolution: { integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== } + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.1 + dev: true + + /stream-http/2.8.3: + resolution: { integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== } + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.7 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-shift/1.0.1: + resolution: { integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== } + dev: true + + /streamsearch/0.1.2: + resolution: { integrity: sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA== } + engines: { node: '>=0.8.0' } + dev: true + + /strict-uri-encode/1.1.0: + resolution: { integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== } + engines: { node: '>=0.10.0' } + dev: true + + /string-argv/0.0.2: + resolution: { integrity: sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w== } + engines: { node: '>=0.6.19' } + dev: true + + /string-width/1.0.2: + resolution: { integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== } + engines: { node: '>=0.10.0' } + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: true + + /string-width/2.1.1: + resolution: { integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== } + engines: { node: '>=4' } + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width/3.1.0: + resolution: { integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== } + engines: { node: '>=6' } + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + + /string-width/4.2.2: + resolution: { integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== } + engines: { node: '>=8' } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.0 + dev: true + + /string.prototype.trimend/1.0.4: + resolution: { integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /string.prototype.trimstart/1.0.4: + resolution: { integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /string_decoder/0.10.31: + resolution: { integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== } + dev: true + + /string_decoder/1.1.1: + resolution: { integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder/1.3.0: + resolution: { integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-object/3.3.0: + resolution: { integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== } + engines: { node: '>=4' } + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi/3.0.1: + resolution: { integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== } + engines: { node: '>=0.10.0' } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi/4.0.0: + resolution: { integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== } + engines: { node: '>=4' } + dependencies: + ansi-regex: 3.0.0 + dev: true + + /strip-ansi/5.2.0: + resolution: { integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== } + engines: { node: '>=6' } + dependencies: + ansi-regex: 4.1.0 + dev: true + + /strip-ansi/6.0.0: + resolution: { integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== } + engines: { node: '>=8' } + dependencies: + ansi-regex: 5.0.0 + dev: true + + /strip-bom/3.0.0: + resolution: { integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== } + engines: { node: '>=4' } + dev: true + + /strip-eof/1.0.0: + resolution: { integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== } + engines: { node: '>=0.10.0' } + dev: true + + /strip-final-newline/2.0.0: + resolution: { integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== } + engines: { node: '>=6' } + dev: true + + /strip-indent/2.0.0: + resolution: { integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== } + engines: { node: '>=4' } + dev: true + + /strip-indent/3.0.0: + resolution: { integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== } + engines: { node: '>=8' } + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: '>=8' } + dev: true + + /stylehacks/4.0.3: + resolution: { integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== } + engines: { node: '>=6.9.0' } + dependencies: + browserslist: 4.16.3 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + dev: true + + /supports-color/2.0.0: + resolution: { integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== } + engines: { node: '>=0.8.0' } + dev: true + + /supports-color/3.2.3: + resolution: { integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== } + engines: { node: '>=0.8.0' } + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color/5.5.0: + resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } + engines: { node: '>=4' } + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/6.1.0: + resolution: { integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== } + engines: { node: '>=6' } + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: '>=8' } + dependencies: + has-flag: 4.0.0 + dev: true + + /svg-baker-runtime/1.4.7: + resolution: { integrity: sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw== } + dependencies: + deepmerge: 1.3.2 + mitt: 1.1.2 + svg-baker: 1.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-baker/1.7.0: + resolution: { integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg== } + dependencies: + bluebird: 3.7.2 + clone: 2.1.2 + he: 1.2.0 + image-size: 0.5.5 + loader-utils: 1.4.2 + merge-options: 1.0.1 + micromatch: 3.1.0 + postcss: 5.2.18 + postcss-prefix-selector: 1.9.0 + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.6 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-sprite-loader/6.0.2: + resolution: { integrity: sha512-uh16i2TBfd6QM/nEIMF++e7mJtz1rersRs7vlZYIbwmPnP7jSfRtWflijfnCB4i1YABX7WYsDaDS8k7lcmLIyA== } + engines: { node: '>=6' } + dependencies: + bluebird: 3.7.2 + deepmerge: 1.3.2 + domready: 1.0.8 + escape-string-regexp: 1.0.5 + loader-utils: 1.4.2 + svg-baker: 1.7.0 + svg-baker-runtime: 1.4.7 + url-slug: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-tags/1.0.0: + resolution: { integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== } + dev: true + + /svgo/1.3.2: + resolution: { integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== } + engines: { node: '>=4.0.0' } + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.5 + object.values: 1.1.3 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: true + + /svgo/2.3.0: + resolution: { integrity: sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q== } + engines: { node: '>=10.13.0' } + hasBin: true + dependencies: + '@trysound/sax': 0.1.1 + chalk: 4.1.1 + commander: 7.2.0 + css-select: 3.1.2 + css-tree: 1.1.2 + csso: 4.2.0 + stable: 0.1.8 + dev: true + + /symbol-observable/1.2.0: + resolution: { integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== } + engines: { node: '>=0.10.0' } + dev: true + + /synchronous-promise/2.0.15: + resolution: { integrity: sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== } + dev: true + + /table/5.4.6: + resolution: { integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== } + engines: { node: '>=6.0.0' } + dependencies: + ajv: 6.12.6 + lodash: 4.17.21 + slice-ansi: 2.1.0 + string-width: 3.1.0 + dev: true + + /tapable/0.1.10: + resolution: { integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== } + engines: { node: '>=0.6' } + dev: true + + /tapable/1.1.3: + resolution: { integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== } + engines: { node: '>=6' } + dev: true + + /terser-webpack-plugin/1.4.5_webpack@4.46.0: + resolution: { integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== } + engines: { node: '>= 6.9.0' } + peerDependencies: + webpack: ^4.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: true + + /terser-webpack-plugin/2.3.8_webpack@4.46.0: + resolution: { integrity: sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 13.0.1 + find-cache-dir: 3.3.1 + jest-worker: 25.5.0 + p-limit: 2.3.0 + schema-utils: 2.7.1 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.46.0 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + dev: true + + /terser/4.8.0: + resolution: { integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + acorn: 8.8.1 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.19 + dev: true + + /text-extensions/1.9.0: + resolution: { integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== } + engines: { node: '>=0.10' } + dev: true + + /text-table/0.2.0: + resolution: { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } + dev: true + + /thenify-all/1.6.0: + resolution: { integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== } + engines: { node: '>=0.8' } + dependencies: + thenify: 3.3.1 + dev: true + + /thenify/3.3.1: + resolution: { integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== } + dependencies: + any-promise: 1.3.0 + dev: true + + /thread-loader/2.1.3_webpack@4.46.0: + resolution: { integrity: sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== } + engines: { node: '>= 6.9.0 <7.0.0 || >= 8.9.0' } + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + loader-runner: 2.4.0 + loader-utils: 1.4.2 + neo-async: 2.6.2 + webpack: 4.46.0 + dev: true + + /throttle-debounce/1.1.0: + resolution: { integrity: sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg== } + engines: { node: '>=4' } + dev: false + + /through/2.3.8: + resolution: { integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== } + dev: true + + /through2/2.0.5: + resolution: { integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== } + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + dev: true + + /through2/4.0.2: + resolution: { integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== } + dependencies: + readable-stream: 3.6.0 + dev: true + + /thunky/1.1.0: + resolution: { integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== } + dev: true + + /timers-browserify/2.0.12: + resolution: { integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== } + engines: { node: '>=0.6.0' } + dependencies: + setimmediate: 1.0.5 + dev: true + + /timsort/0.3.0: + resolution: { integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== } + dev: true + + /tiny-emitter/2.1.0: + resolution: { integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== } + dev: false + + /tinycolor2/1.4.2: + resolution: { integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== } + dev: false + + /tmp/0.0.33: + resolution: { integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== } + engines: { node: '>=0.6.0' } + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-arraybuffer/1.0.1: + resolution: { integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== } + dev: true + + /to-fast-properties/1.0.3: + resolution: { integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== } + engines: { node: '>=0.10.0' } + dev: true + + /to-fast-properties/2.0.0: + resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } + engines: { node: '>=4' } + dev: true + + /to-object-path/0.3.0: + resolution: { integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== } + engines: { node: '>=0.10.0' } + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range/2.1.1: + resolution: { integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== } + engines: { node: '>=0.10.0' } + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range/5.0.1: + resolution: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } + engines: { node: '>=8.0' } + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex/3.0.2: + resolution: { integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== } + engines: { node: '>=0.10.0' } + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /toidentifier/1.0.0: + resolution: { integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== } + engines: { node: '>=0.6' } + dev: true + + /toposort/1.0.7: + resolution: { integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg== } + dev: true + + /toposort/2.0.2: + resolution: { integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== } + dev: true + + /tough-cookie/2.5.0: + resolution: { integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== } + engines: { node: '>=0.8' } + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: true + + /traverse/0.6.6: + resolution: { integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw== } + dev: true + + /trim-newlines/3.0.0: + resolution: { integrity: sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== } + engines: { node: '>=8' } + dev: true + + /trim-off-newlines/1.0.1: + resolution: { integrity: sha512-cklgulxoLavCJlZSWdKzEuKFRFwyRUS3h4tfvSo8uSGrtrPNcAHeKmftGuA684vonXdvKgdX6cMKF8SBjywN1w== } + engines: { node: '>=0.10.0' } + dev: true + + /tryer/1.0.1: + resolution: { integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== } + dev: true + + /ts-loader/6.2.2_typescript@3.9.9: + resolution: { integrity: sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== } + engines: { node: '>=8.6' } + peerDependencies: + typescript: '*' + dependencies: + chalk: 2.4.2 + enhanced-resolve: 4.5.0 + loader-utils: 1.4.2 + micromatch: 4.0.2 + semver: 6.3.0 + typescript: 3.9.9 + dev: true + + /ts-pnp/1.2.0_typescript@3.9.9: + resolution: { integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== } + engines: { node: '>=6' } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 3.9.9 + dev: true + + /tsconfig-paths/3.9.0: + resolution: { integrity: sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== } + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.5 + strip-bom: 3.0.0 + dev: true + + /tslib/1.14.1: + resolution: { integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== } + + /tslib/2.3.0: + resolution: { integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== } + dev: false + + /tslib/2.4.1: + resolution: { integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== } + dev: false + + /tslint/5.20.1_typescript@3.9.9: + resolution: { integrity: sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== } + engines: { node: '>=4.8.0' } + hasBin: true + peerDependencies: + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + dependencies: + '@babel/code-frame': 7.12.13 + builtin-modules: 1.1.1 + chalk: 2.4.2 + commander: 2.20.3 + diff: 4.0.2 + glob: 7.1.6 + js-yaml: 3.14.1 + minimatch: 3.0.4 + mkdirp: 0.5.5 + resolve: 1.20.0 + semver: 5.7.1 + tslib: 1.14.1 + tsutils: 2.29.0_typescript@3.9.9 + typescript: 3.9.9 + dev: true + + /tsutils/2.29.0_typescript@3.9.9: + resolution: { integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== } + peerDependencies: + typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' + dependencies: + tslib: 1.14.1 + typescript: 3.9.9 + dev: true + + /tsutils/3.21.0_typescript@3.9.9: + resolution: { integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== } + engines: { node: '>= 6' } + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 3.9.9 + dev: true + + /tty-browserify/0.0.0: + resolution: { integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== } + dev: true + + /tunnel-agent/0.6.0: + resolution: { integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: { integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== } + dev: true + + /type-check/0.3.2: + resolution: { integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-fest/0.11.0: + resolution: { integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== } + engines: { node: '>=8' } + dev: true + + /type-fest/0.18.1: + resolution: { integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== } + engines: { node: '>=10' } + dev: true + + /type-fest/0.6.0: + resolution: { integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== } + engines: { node: '>=8' } + dev: true + + /type-fest/0.8.1: + resolution: { integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== } + engines: { node: '>=8' } + dev: true + + /type-is/1.6.18: + resolution: { integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== } + engines: { node: '>= 0.6' } + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.29 + dev: true + + /typedarray/0.0.6: + resolution: { integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== } + dev: true + + /typescript/3.9.9: + resolution: { integrity: sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== } + engines: { node: '>=4.2.0' } + hasBin: true + dev: true + + /uglify-js/3.4.10: + resolution: { integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== } + engines: { node: '>=0.8.0' } + hasBin: true + dependencies: + commander: 2.19.0 + source-map: 0.6.1 + dev: true + + /unbox-primitive/1.0.0: + resolution: { integrity: sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== } + dependencies: + function-bind: 1.1.1 + has-bigints: 1.0.1 + has-symbols: 1.0.2 + which-boxed-primitive: 1.0.2 + dev: true + + /unicode-canonical-property-names-ecmascript/1.0.4: + resolution: { integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== } + engines: { node: '>=4' } + dev: true + + /unicode-match-property-ecmascript/1.0.4: + resolution: { integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== } + engines: { node: '>=4' } + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.1.0 + dev: true + + /unicode-match-property-value-ecmascript/1.2.0: + resolution: { integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== } + engines: { node: '>=4' } + dev: true + + /unicode-property-aliases-ecmascript/1.1.0: + resolution: { integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== } + engines: { node: '>=4' } + dev: true + + /unidecode/0.1.8: + resolution: { integrity: sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA== } + engines: { node: '>= 0.4.12' } + dev: true + + /union-value/1.0.1: + resolution: { integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== } + engines: { node: '>=0.10.0' } + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /uniq/1.0.1: + resolution: { integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== } + dev: true + + /uniqs/2.0.0: + resolution: { integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== } + dev: true + + /unique-filename/1.1.1: + resolution: { integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== } + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug/2.0.2: + resolution: { integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== } + dependencies: + imurmurhash: 0.1.4 + dev: true + + /universalify/0.1.2: + resolution: { integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== } + engines: { node: '>= 4.0.0' } + dev: true + + /universalify/2.0.0: + resolution: { integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== } + engines: { node: '>= 10.0.0' } + dev: true + + /unpipe/1.0.0: + resolution: { integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== } + engines: { node: '>= 0.8' } + dev: true + + /unquote/1.1.1: + resolution: { integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== } + dev: true + + /unset-value/1.0.0: + resolution: { integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== } + engines: { node: '>=0.10.0' } + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /upath/1.2.0: + resolution: { integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== } + engines: { node: '>=4' } + dev: true + + /upper-case/1.1.3: + resolution: { integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== } + dev: true + + /uri-js/4.4.1: + resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } + dependencies: + punycode: 2.1.1 + + /urix/0.1.0: + resolution: { integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== } + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-loader/2.3.0_ke5umg2s3o4akbat3qvdol7cby: + resolution: { integrity: sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== } + engines: { node: '>= 8.9.0' } + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 4.3.0_webpack@4.46.0 + loader-utils: 1.4.2 + mime: 2.5.2 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + + /url-loader/4.1.1: + resolution: { integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== } + engines: { node: '>= 10.13.0' } + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + loader-utils: 2.0.4 + mime-types: 2.1.29 + schema-utils: 3.1.1 + dev: false + + /url-parse/1.5.1: + resolution: { integrity: sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== } + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url-slug/2.0.0: + resolution: { integrity: sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew== } + dependencies: + unidecode: 0.1.8 + dev: true + + /url/0.11.0: + resolution: { integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== } + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + dev: true + + /use/3.1.1: + resolution: { integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== } + engines: { node: '>=0.10.0' } + dev: true + + /util-deprecate/1.0.2: + resolution: { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } + dev: true + + /util.promisify/1.0.0: + resolution: { integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== } + dependencies: + define-properties: 1.1.3 + object.getownpropertydescriptors: 2.1.2 + dev: true + + /util.promisify/1.0.1: + resolution: { integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== } + dependencies: + define-properties: 1.1.3 + es-abstract: 1.18.0 + has-symbols: 1.0.2 + object.getownpropertydescriptors: 2.1.2 + dev: true + + /util/0.10.3: + resolution: { integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== } + dependencies: + inherits: 2.0.1 + dev: true + + /util/0.11.1: + resolution: { integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== } + dependencies: + inherits: 2.0.3 + dev: true + + /utila/0.4.0: + resolution: { integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== } + dev: true + + /utils-merge/1.0.1: + resolution: { integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== } + engines: { node: '>= 0.4.0' } + dev: true + + /uuid/3.4.0: + resolution: { integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== } + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /v8-compile-cache/2.3.0: + resolution: { integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== } + dev: true + + /validate-npm-package-license/3.0.4: + resolution: { integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== } + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /vary/1.1.2: + resolution: { integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== } + engines: { node: '>= 0.8' } + dev: true + + /vendors/1.0.4: + resolution: { integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== } + dev: true + + /verror/1.10.0: + resolution: { integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== } + engines: { '0': node >=0.6.0 } + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.0 + dev: true + + /vite-plugin-svg-icons/0.6.2_vite@2.4.1: + resolution: { integrity: sha512-NyctAJPkbKEYlAfuCfGLck9l0lx3zXNKcKCuXFle8S1TmCH/Uqgftxm/PyKjyGoj1Jjwh1CkwY3KLu4C2RWMKQ== } + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.2 + etag: 1.8.1 + fs-extra: 10.1.0 + svg-baker: 1.7.0 + svgo: 2.3.0 + vite: 2.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-vue2/1.5.1_vite@2.4.1: + resolution: { integrity: sha512-z7TUaSL3f2XvQWU1YmpxBDyPWwIRwH/6O4RTqsZKTzPfRWpCT2r9Ap84C4+YS1MmbPlrYjgWplCIdJd7I0Vr+A== } + peerDependencies: + vite: ^2.0.0-beta.23 + dependencies: + '@babel/core': 7.14.3 + '@babel/parser': 7.14.3 + '@babel/plugin-transform-typescript': 7.14.3_@babel+core@7.14.3 + '@rollup/pluginutils': 4.1.0_rollup@2.48.0 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-preset-jsx': 1.2.4_@babel+core@7.14.3 + '@vue/component-compiler-utils': 3.2.0 + babel-preset-env: 1.7.0 + consolidate: 0.16.0 + debug: 4.3.2 + fs-extra: 9.1.0 + hash-sum: 2.0.0 + magic-string: 0.25.7 + prettier: 2.3.0 + querystring: 0.2.1 + rollup: 2.48.0 + slash: 3.0.0 + vite: 2.4.1 + vue-template-compiler: 2.6.14 + vue-template-es2015-compiler: 1.9.1 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /vite/2.4.1: + resolution: { integrity: sha512-4BpKRis9uxIqPfIEcJ18LTBsamqnDFxTx45CXwagHjNltHa6PFEvf8Pe6OpgIHb0OyWT30OXOSSQvdOaX4OBiQ== } + engines: { node: '>=12.0.0' } + hasBin: true + dependencies: + esbuild: 0.12.29 + postcss: 8.4.31 + resolve: 1.20.0 + rollup: 2.48.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vm-browserify/1.1.2: + resolution: { integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== } + dev: true + + /vue-class-component/7.2.6_vue@2.6.14: + resolution: { integrity: sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w== } + peerDependencies: + vue: ^2.0.0 + dependencies: + vue: 2.6.14 + dev: false + + /vue-eslint-parser/7.6.0_eslint@6.8.0: + resolution: { integrity: sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA== } + engines: { node: '>=8.10' } + peerDependencies: + eslint: '>=5.0.0' + dependencies: + debug: 4.3.2 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.4.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-grid-layout/2.3.12: + resolution: { integrity: sha512-x9l4KxfH0MeB4xImanrnnTihksq8LYk3f40hm1sdiTHF2bYM+Xhae6eQsvFWEFwbYq7RVNvB80qwis1vInB+WQ== } + dependencies: + '@interactjs/actions': 1.10.11 + '@interactjs/auto-start': 1.10.11 + '@interactjs/dev-tools': 1.10.11_6cfv4lzikfbo7rn4cjwgiucbha + '@interactjs/interactjs': 1.10.11 + '@interactjs/modifiers': 1.10.11 + element-resize-detector: 1.2.3 + transitivePeerDependencies: + - '@interactjs/core' + - '@interactjs/utils' + dev: false + + /vue-hot-reload-api/2.3.4: + resolution: { integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== } + dev: true + + /vue-i18n/8.24.1_vue@2.6.14: + resolution: { integrity: sha512-iqM+npjvI9SGOAYkw1Od/y4O74gpvn5WOHeb3K125TmDJssvR62tDMMLIasPmKNbePZ1BMZ6d5jOBsrB/cK8Lw== } + peerDependencies: + vue: ^2 + dependencies: + vue: 2.6.14 + dev: false + + /vue-loader/15.9.6_m6jvttnwtqqy6l4pi5vsxiehsy: + resolution: { integrity: sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg== } + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + cache-loader: '*' + css-loader: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + cache-loader: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@vue/component-compiler-utils': 3.2.0 + cache-loader: 4.1.0_webpack@4.46.0 + css-loader: 3.6.0_webpack@4.46.0 + hash-sum: 1.0.2 + loader-utils: 1.4.2 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.3 + vue-template-compiler: 2.6.14 + webpack: 4.46.0 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: true + + /vue-property-decorator/8.5.1_vue@2.6.14: + resolution: { integrity: sha512-O6OUN2OMsYTGPvgFtXeBU3jPnX5ffQ9V4I1WfxFQ6dqz6cOUbR3Usou7kgFpfiXDvV7dJQSFcJ5yUPgOtPPm1Q== } + peerDependencies: + vue: '*' + dependencies: + vue: 2.6.14 + vue-class-component: 7.2.6_vue@2.6.14 + dev: false + + /vue-router/3.5.1_vue@2.6.14: + resolution: { integrity: sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw== } + peerDependencies: + vue: ^2 + dependencies: + vue: 2.6.14 + dev: false + + /vue-style-loader/4.1.3: + resolution: { integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== } + dependencies: + hash-sum: 1.0.2 + loader-utils: 1.4.2 + dev: true + + /vue-template-compiler/2.6.14: + resolution: { integrity: sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== } + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-template-es2015-compiler/1.9.1: + resolution: { integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== } + dev: true + + /vue/2.6.14: + resolution: { integrity: sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== } + + /vue2-animate/1.0.4: + resolution: { integrity: sha512-m0/0scgYOe5k7VcjsH5n6vHyfbI+XyeTyG6cT2LaNxGsh2ub8s8ZG6N3i1+0bJieldNk/awsNBx1EG13IJ7jPQ== } + dev: false + + /vuedraggable/2.24.3: + resolution: { integrity: sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== } + dependencies: + sortablejs: 1.10.2 + dev: false + + /vuex/3.6.2_vue@2.6.14: + resolution: { integrity: sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== } + peerDependencies: + vue: ^2.0.0 + dependencies: + vue: 2.6.14 + dev: false + + /wangeditor/4.6.16: + resolution: { integrity: sha512-zWWxTghxVJJwZck+j4k+DqwGzTnsVtGiNe2wFfV1Zv1KsLPVe1A8eq63OaFDFiAwD0klj7I6Y1HkexLGwD1c3w== } + dependencies: + '@babel/runtime': 7.13.10 + '@babel/runtime-corejs3': 7.13.17 + tslib: 2.4.1 + dev: false + + /watchpack-chokidar2/2.0.1: + resolution: { integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== } + requiresBuild: true + dependencies: + chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /watchpack/1.7.5: + resolution: { integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== } + dependencies: + graceful-fs: 4.2.6 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.3 + watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /wbuf/1.7.3: + resolution: { integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== } + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth/1.0.1: + resolution: { integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== } + dependencies: + defaults: 1.0.3 + dev: true + + /webpack-bundle-analyzer/3.9.0: + resolution: { integrity: sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== } + engines: { node: '>= 6.14.4' } + hasBin: true + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + bfj: 6.1.2 + chalk: 2.4.2 + commander: 2.20.3 + ejs: 2.7.4 + express: 4.17.1 + filesize: 3.6.1 + gzip-size: 5.1.1 + lodash: 4.17.21 + mkdirp: 0.5.5 + opener: 1.5.2 + ws: 6.2.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /webpack-chain/6.5.1: + resolution: { integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== } + engines: { node: '>=8' } + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.0.1 + dev: true + + /webpack-dev-middleware/3.7.3_webpack@4.46.0: + resolution: { integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== } + engines: { node: '>= 6' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + memory-fs: 0.4.1 + mime: 2.5.2 + mkdirp: 0.5.5 + range-parser: 1.2.1 + webpack: 4.46.0 + webpack-log: 2.0.0 + dev: true + + /webpack-dev-server/3.11.2_webpack@4.46.0: + resolution: { integrity: sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== } + engines: { node: '>= 6.11.5' } + hasBin: true + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + ansi-html: 0.0.7 + bonjour: 3.5.0 + chokidar: 2.1.8_supports-color@6.1.0 + compression: 1.7.4_supports-color@6.1.0 + connect-history-api-fallback: 1.6.0 + debug: 4.3.2_supports-color@6.1.0 + del: 4.1.1 + express: 4.17.1_supports-color@6.1.0 + html-entities: 1.4.0 + http-proxy-middleware: 0.19.1_xwktanctkdp2ue56r3exixdqpa + import-local: 2.0.0 + internal-ip: 4.3.0 + ip: 1.1.5 + is-absolute-url: 3.0.3 + killable: 1.0.1 + loglevel: 1.7.1 + opn: 5.5.0 + p-retry: 3.0.1 + portfinder: 1.0.28_supports-color@6.1.0 + schema-utils: 1.0.0 + selfsigned: 1.10.8 + semver: 6.3.0 + serve-index: 1.9.1_supports-color@6.1.0 + sockjs: 0.3.21 + sockjs-client: 1.5.0_supports-color@6.1.0 + spdy: 4.0.2_supports-color@6.1.0 + strip-ansi: 3.0.1 + supports-color: 6.1.0 + url: 0.11.0 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-log: 2.0.0 + ws: 6.2.1 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /webpack-log/2.0.0: + resolution: { integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== } + engines: { node: '>= 6' } + dependencies: + ansi-colors: 3.2.4 + uuid: 3.4.0 + dev: true + + /webpack-merge/4.2.2: + resolution: { integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== } + dependencies: + lodash: 4.17.21 + dev: true + + /webpack-sources/1.4.3: + resolution: { integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== } + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack/4.46.0: + resolution: { integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== } + engines: { node: '>=6.11.5' } + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.2 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.2 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.5 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.46.0 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /websocket-driver/0.7.4: + resolution: { integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== } + engines: { node: '>=0.8.0' } + dependencies: + http-parser-js: 0.5.3 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions/0.1.4: + resolution: { integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== } + engines: { node: '>=0.8.0' } + dev: true + + /which-boxed-primitive/1.0.2: + resolution: { integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== } + dependencies: + is-bigint: 1.0.1 + is-boolean-object: 1.1.0 + is-number-object: 1.0.4 + is-string: 1.0.5 + is-symbol: 1.0.3 + dev: true + + /which-module/2.0.0: + resolution: { integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== } + dev: true + + /which/1.3.1: + resolution: { integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } + engines: { node: '>= 8' } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: { integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== } + engines: { node: '>=0.10.0' } + dev: true + + /worker-farm/1.7.0: + resolution: { integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== } + dependencies: + errno: 0.1.8 + dev: true + + /worker-rpc/0.1.1: + resolution: { integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== } + dependencies: + microevent.ts: 0.1.1 + dev: true + + /wrap-ansi/3.0.1: + resolution: { integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== } + engines: { node: '>=4' } + dependencies: + string-width: 2.1.1 + strip-ansi: 4.0.0 + dev: true + + /wrap-ansi/5.1.0: + resolution: { integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== } + engines: { node: '>=6' } + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + + /wrap-ansi/6.2.0: + resolution: { integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== } + engines: { node: '>=8' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.2 + strip-ansi: 6.0.0 + dev: true + + /wrap-ansi/7.0.0: + resolution: { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.2 + strip-ansi: 6.0.0 + dev: true + + /wrappy/1.0.2: + resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } + dev: true + + /write/1.0.3: + resolution: { integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== } + engines: { node: '>=4' } + dependencies: + mkdirp: 0.5.5 + dev: true + + /ws/6.2.1: + resolution: { integrity: sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: true + + /xtend/4.0.2: + resolution: { integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== } + engines: { node: '>=0.4' } + dev: true + + /y18n/4.0.1: + resolution: { integrity: sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== } + dev: true + + /y18n/5.0.5: + resolution: { integrity: sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== } + engines: { node: '>=10' } + dev: true + + /yallist/2.1.2: + resolution: { integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== } + dev: true + + /yallist/3.1.1: + resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } + dev: true + + /yallist/4.0.0: + resolution: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } + dev: true + + /yaml/1.10.2: + resolution: { integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== } + engines: { node: '>= 6' } + dev: true + + /yargs-parser/13.1.2: + resolution: { integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== } + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/18.1.3: + resolution: { integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== } + engines: { node: '>=6' } + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/20.2.7: + resolution: { integrity: sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== } + engines: { node: '>=10' } + dev: true + + /yargs/13.3.2: + resolution: { integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== } + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.1 + yargs-parser: 13.1.2 + dev: true + + /yargs/15.4.1: + resolution: { integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== } + engines: { node: '>=8' } + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.2 + which-module: 2.0.0 + y18n: 4.0.1 + yargs-parser: 18.1.3 + dev: true + + /yargs/16.2.0: + resolution: { integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== } + engines: { node: '>=10' } + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.2 + y18n: 5.0.5 + yargs-parser: 20.2.7 + dev: true + + /yocto-queue/0.1.0: + resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: '>=10' } + dev: true + + /yorkie/2.0.0: + resolution: { integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== } + engines: { node: '>=4' } + requiresBuild: true + dependencies: + execa: 0.8.0 + is-ci: 1.2.1 + normalize-path: 1.0.0 + strip-indent: 2.0.0 + dev: true + + /yup/0.27.0: + resolution: { integrity: sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ== } + dependencies: + '@babel/runtime': 7.13.10 + fn-name: 2.0.1 + lodash: 4.17.21 + property-expr: 1.5.1 + synchronous-promise: 2.0.15 + toposort: 2.0.2 + dev: true + + /zrender/5.3.1: + resolution: { integrity: sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw== } + dependencies: + tslib: 2.3.0 + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..130e976 --- /dev/null +++ b/public/index.html @@ -0,0 +1,28 @@ + + + + + + + + 多云集中纳管系统 + + + + + +
+
+
+
+
+
+
+
+
+
+ + + diff --git a/script/index.js b/script/index.js new file mode 100644 index 0000000..9b79c2f --- /dev/null +++ b/script/index.js @@ -0,0 +1,12 @@ +const exec = require('child_process').exec +const params = process.argv[2] +const str = `git subtree ${params || 'pull'} --prefix=src/common http://haijun@58.210.154.140:8888/web/cmp-common.git master --squash` +exec(str, function (err, stdout, stderr) { + if (err) { + console.log('======执行失败=======') + console.log(err) + } else { + console.log('======执行成功=======') + console.log(stdout) + } +}) diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ad870fb --- /dev/null +++ b/src/App.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/assets/copy.png b/src/assets/copy.png new file mode 100644 index 0000000..520dafd Binary files /dev/null and b/src/assets/copy.png differ diff --git a/src/assets/download.png b/src/assets/download.png new file mode 100644 index 0000000..9dfbff3 Binary files /dev/null and b/src/assets/download.png differ diff --git a/src/assets/setting.png b/src/assets/setting.png new file mode 100644 index 0000000..94bda37 Binary files /dev/null and b/src/assets/setting.png differ diff --git a/src/common/components/TimeSelect.vue b/src/common/components/TimeSelect.vue new file mode 100644 index 0000000..ab08fff --- /dev/null +++ b/src/common/components/TimeSelect.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/common/components/icon-select/elementIcons.js b/src/common/components/icon-select/elementIcons.js new file mode 100644 index 0000000..b32ab26 --- /dev/null +++ b/src/common/components/icon-select/elementIcons.js @@ -0,0 +1,283 @@ +const elementIcons = [ + 'platform-eleme', + 'eleme', + 'delete-solid', + 'delete', + 's-tools', + 'setting', + 'user-solid', + 'user', + 'phone', + 'phone-outline', + 'more', + 'more-outline', + 'star-on', + 'star-off', + 's-goods', + 'goods', + 'warning', + 'warning-outline', + 'question', + 'info', + 'remove', + 'circle-plus', + 'success', + 'error', + 'zoom-in', + 'zoom-out', + 'remove-outline', + 'circle-plus-outline', + 'circle-check', + 'circle-close', + 's-help', + 'help', + 'minus', + 'plus', + 'check', + 'close', + 'picture', + 'picture-outline', + 'picture-outline-round', + 'upload', + 'upload2', + 'download', + 'camera-solid', + 'camera', + 'video-camera-solid', + 'video-camera', + 'message-solid', + 'bell', + 's-cooperation', + 's-order', + 's-platform', + 's-fold', + 's-unfold', + 's-operation', + 's-promotion', + 's-home', + 's-release', + 's-ticket', + 's-management', + 's-open', + 's-shop', + 's-marketing', + 's-flag', + 's-comment', + 's-finance', + 's-claim', + 's-custom', + 's-opportunity', + 's-data', + 's-check', + 's-grid', + 'menu', + 'share', + 'd-caret', + 'caret-left', + 'caret-right', + 'caret-bottom', + 'caret-top', + 'bottom-left', + 'bottom-right', + 'back', + 'right', + 'bottom', + 'top', + 'top-left', + 'top-right', + 'arrow-left', + 'arrow-right', + 'arrow-down', + 'arrow-up', + 'd-arrow-left', + 'd-arrow-right', + 'video-pause', + 'video-play', + 'refresh', + 'refresh-right', + 'refresh-left', + 'finished', + 'sort', + 'sort-up', + 'sort-down', + 'rank', + 'view', + 'c-scale-to-original', + 'date', + 'edit', + 'edit-outline', + 'folder', + 'folder-opened', + 'folder-add', + 'folder-remove', + 'folder-delete', + 'folder-checked', + 'tickets', + 'document-remove', + 'document-delete', + 'document-copy', + 'document-checked', + 'document', + 'document-add', + 'printer', + 'paperclip', + 'takeaway-box', + 'search', + 'monitor', + 'attract', + 'mobile', + 'scissors', + 'umbrella', + 'headset', + 'brush', + 'mouse', + 'coordinate', + 'magic-stick', + 'reading', + 'data-line', + 'data-board', + 'pie-chart', + 'data-analysis', + 'collection-tag', + 'film', + 'suitcase', + 'suitcase-1', + 'receiving', + 'collection', + 'files', + 'notebook-1', + 'notebook-2', + 'toilet-paper', + 'office-building', + 'school', + 'table-lamp', + 'house', + 'no-smoking', + 'smoking', + 'shopping-cart-full', + 'shopping-cart-1', + 'shopping-cart-2', + 'shopping-bag-1', + 'shopping-bag-2', + 'sold-out', + 'sell', + 'present', + 'box', + 'bank-card', + 'money', + 'coin', + 'wallet', + 'discount', + 'price-tag', + 'news', + 'guide', + 'male', + 'female', + 'thumb', + 'cpu', + 'link', + 'connection', + 'open', + 'turn-off', + 'set-up', + 'chat-round', + 'chat-line-round', + 'chat-square', + 'chat-dot-round', + 'chat-dot-square', + 'chat-line-square', + 'message', + 'postcard', + 'position', + 'turn-off-microphone', + 'microphone', + 'close-notification', + 'bangzhu', + 'time', + 'odometer', + 'crop', + 'aim', + 'switch-button', + 'full-screen', + 'copy-document', + 'mic', + 'stopwatch', + 'medal-1', + 'medal', + 'trophy', + 'trophy-1', + 'first-aid-kit', + 'discover', + 'place', + 'location', + 'location-outline', + 'location-information', + 'add-location', + 'delete-location', + 'map-location', + 'alarm-clock', + 'timer', + 'watch-1', + 'watch', + 'lock', + 'unlock', + 'key', + 'service', + 'mobile-phone', + 'bicycle', + 'truck', + 'ship', + 'basketball', + 'football', + 'soccer', + 'baseball', + 'wind-power', + 'light-rain', + 'lightning', + 'heavy-rain', + 'sunrise', + 'sunrise-1', + 'sunset', + 'sunny', + 'cloudy', + 'partly-cloudy', + 'cloudy-and-sunny', + 'moon', + 'moon-night', + 'dish', + 'dish-1', + 'food', + 'chicken', + 'fork-spoon', + 'knife-fork', + 'burger', + 'tableware', + 'sugar', + 'dessert', + 'ice-cream', + 'hot-water', + 'water-cup', + 'coffee-cup', + 'cold-drink', + 'goblet', + 'goblet-full', + 'goblet-square', + 'goblet-square-full', + 'refrigerator', + 'grape', + 'watermelon', + 'cherry', + 'apple', + 'pear', + 'orange', + 'coffee', + 'ice-tea', + 'ice-drink', + 'milk-tea', + 'potato-strips', + 'lollipop', + 'ice-cream-square', + 'ice-cream-round' +] + +export default elementIcons diff --git a/src/common/components/icon-select/index.vue b/src/common/components/icon-select/index.vue new file mode 100644 index 0000000..4802ff1 --- /dev/null +++ b/src/common/components/icon-select/index.vue @@ -0,0 +1,35 @@ + + diff --git a/src/common/components/icon-select/svgIcons.js b/src/common/components/icon-select/svgIcons.js new file mode 100644 index 0000000..c96eb30 --- /dev/null +++ b/src/common/components/icon-select/svgIcons.js @@ -0,0 +1,45 @@ +// webpack +// const req = require.context('@/icons/svg', false, /\.svg$/) +// const requireAll = requireContext => requireContext.keys() + +// const re = /\.\/(.*)\.svg/; + +// const svgIcons = requireAll(req).map(i => { +// return i.match(re)[1] +// }) +// vite +// const req = import.meta.globEager('/src/icons/svg/*.svg') +// const re = /\/svg\/(.*)\.svg/ +// const svgIcons = Object.keys(req).map(i => { +// return i.match(re)[1] +// }) + +export default [ + 'svg-about', + 'svg-basic-resource', + 'svg-bill', + 'svg-business', + 'svg-compute-resource', + 'svg-db', + 'svg-disabled', + 'svg-dot', + 'svg-middle', + 'svg-network-resource', + 'svg-operate', + 'svg-ops-analysis', + 'svg-order', + 'svg-permission', + 'svg-port', + 'svg-product', + 'svg-repository', + 'svg-resource-interface', + 'svg-resource-manage', + 'svg-resource-monitor', + 'svg-resource-ops', + 'svg-screen', + 'svg-security', + 'svg-service-ops', + 'svg-setting', + 'svg-storage-resource', + 'svg-task-platform' +] diff --git a/src/common/components/image-cropper/index.vue b/src/common/components/image-cropper/index.vue new file mode 100644 index 0000000..f7535cd --- /dev/null +++ b/src/common/components/image-cropper/index.vue @@ -0,0 +1,1442 @@ + + + + + diff --git a/src/common/components/image-cropper/utils/data2blob.js b/src/common/components/image-cropper/utils/data2blob.js new file mode 100644 index 0000000..222c710 --- /dev/null +++ b/src/common/components/image-cropper/utils/data2blob.js @@ -0,0 +1,20 @@ +/** + * database64文件格式转换为2进制 + * + * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了 + * @param {[String]} mime [description] + * @return {[blob]} [description] + */ +/* eslint-disable*/ +export default function (data, mime) { + data = data.split(',')[1] + data = window.atob(data) + const ia = new Uint8Array(data.length) + for (let i = 0; i < data.length; i++) { + ia[i] = data.charCodeAt(i) + } + // canvas.toDataURL 返回的默认格式就是 image/png + return new Blob([ia], { + type: mime + }) +} diff --git a/src/common/components/image-cropper/utils/effectRipple.js b/src/common/components/image-cropper/utils/effectRipple.js new file mode 100644 index 0000000..6bbfcea --- /dev/null +++ b/src/common/components/image-cropper/utils/effectRipple.js @@ -0,0 +1,43 @@ +/** + * 点击波纹效果 + * + * @param {[event]} e [description] + * @param {[Object]} arg_opts [description] + * @return {[bollean]} [description] + */ +/* eslint-disable*/ +export default function (e, arg_opts) { + const opts = Object.assign( + { + ele: e.target, // 波纹作用元素 + type: 'hit', // hit点击位置扩散center中心点扩展 + bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, + arg_opts + ), + target = opts.ele + if (target) { + let rect = target.getBoundingClientRect(), + ripple = target.querySelector('.e-ripple') + if (!ripple) { + ripple = document.createElement('span') + ripple.className = 'e-ripple' + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px' + target.appendChild(ripple) + } else { + ripple.className = 'e-ripple' + } + switch (opts.type) { + case 'center': + ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px' + ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px' + break + default: + ripple.style.top = e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop + 'px' + ripple.style.left = e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft + 'px' + } + ripple.style.backgroundColor = opts.bgc + ripple.className = 'e-ripple z-active' + return false + } +} diff --git a/src/common/components/image-cropper/utils/language.js b/src/common/components/image-cropper/utils/language.js new file mode 100644 index 0000000..cea0682 --- /dev/null +++ b/src/common/components/image-cropper/utils/language.js @@ -0,0 +1,365 @@ +export default { + zh: { + hint: '点击,或拖动图片至此处', + loading: '正在上传……', + noSupported: '浏览器不支持该功能,请使用IE10以上或其他现在浏览器!', + success: '上传成功', + fail: '图片上传失败', + preview: '预览', + btn: { + off: '取消', + close: '关闭', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '仅限图片格式', + outOfSize: '单文件大小不能超过 ', + lowestPx: '图片最低像素为(宽*高):' + } + }, + 'zh-tw': { + hint: '點擊,或拖動圖片至此處', + loading: '正在上傳……', + noSupported: '瀏覽器不支持該功能,請使用IE10以上或其他現代瀏覽器!', + success: '上傳成功', + fail: '圖片上傳失敗', + preview: '頭像預覽', + btn: { + off: '取消', + close: '關閉', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '僅限圖片格式', + outOfSize: '單文件大小不能超過 ', + lowestPx: '圖片最低像素為(寬*高):' + } + }, + en: { + hint: 'Click or drag the file here to upload', + loading: 'Uploading…', + noSupported: 'Browser is not supported, please use IE10+ or other browsers', + success: 'Upload success', + fail: 'Upload failed', + preview: 'Preview', + btn: { + off: 'Cancel', + close: 'Close', + back: 'Back', + save: 'Save' + }, + error: { + onlyImg: 'Image only', + outOfSize: 'Image exceeds size limit: ', + lowestPx: "Image's size is too low. Expected at least: " + } + }, + ro: { + hint: 'Atinge sau trage fișierul aici', + loading: 'Se încarcă', + noSupported: 'Browser-ul tău nu suportă acest feature. Te rugăm încearcă cu alt browser.', + success: 'S-a încărcat cu succes', + fail: 'A apărut o problemă la încărcare', + preview: 'Previzualizează', + + btn: { + off: 'Anulează', + close: 'Închide', + back: 'Înapoi', + save: 'Salvează' + }, + + error: { + onlyImg: 'Doar imagini', + outOfSize: 'Imaginea depășește limita de: ', + loewstPx: 'Imaginea este prea mică; Minim: ' + } + }, + ru: { + hint: 'Нажмите, или перетащите файл в это окно', + loading: 'Загружаю……', + noSupported: 'Ваш браузер не поддерживается, пожалуйста, используйте IE10 + или другие браузеры', + success: 'Загрузка выполнена успешно', + fail: 'Ошибка загрузки', + preview: 'Предпросмотр', + btn: { + off: 'Отменить', + close: 'Закрыть', + back: 'Назад', + save: 'Сохранить' + }, + error: { + onlyImg: 'Только изображения', + outOfSize: 'Изображение превышает предельный размер: ', + lowestPx: 'Минимальный размер изображения: ' + } + }, + 'pt-br': { + hint: 'Clique ou arraste o arquivo aqui para carregar', + loading: 'Carregando…', + noSupported: 'Browser não suportado, use o IE10+ ou outro browser', + success: 'Sucesso ao carregar imagem', + fail: 'Falha ao carregar imagem', + preview: 'Pré-visualizar', + btn: { + off: 'Cancelar', + close: 'Fechar', + back: 'Voltar', + save: 'Salvar' + }, + error: { + onlyImg: 'Apenas imagens', + outOfSize: 'A imagem excede o limite de tamanho: ', + lowestPx: 'O tamanho da imagem é muito pequeno. Tamanho mínimo: ' + } + }, + fr: { + hint: 'Cliquez ou glissez le fichier ici.', + loading: 'Téléchargement…', + noSupported: "Votre navigateur n'est pas supporté. Utilisez IE10 + ou un autre navigateur s'il vous plaît.", + success: 'Téléchargement réussit', + fail: 'Téléchargement echoué', + preview: 'Aperçu', + btn: { + off: 'Annuler', + close: 'Fermer', + back: 'Retour', + save: 'Enregistrer' + }, + error: { + onlyImg: 'Image uniquement', + outOfSize: "L'image sélectionnée dépasse la taille maximum: ", + lowestPx: "L'image sélectionnée est trop petite. Dimensions attendues: " + } + }, + nl: { + hint: 'Klik hier of sleep een afbeelding in dit vlak', + loading: 'Uploaden…', + noSupported: 'Je browser wordt helaas niet ondersteund. Gebruik IE10+ of een andere browser.', + success: 'Upload succesvol', + fail: 'Upload mislukt', + preview: 'Voorbeeld', + btn: { + off: 'Annuleren', + close: 'Sluiten', + back: 'Terug', + save: 'Opslaan' + }, + error: { + onlyImg: 'Alleen afbeeldingen', + outOfSize: 'De afbeelding is groter dan: ', + lowestPx: 'De afbeelding is te klein! Minimale afmetingen: ' + } + }, + tr: { + hint: 'Tıkla veya yüklemek istediğini buraya sürükle', + loading: 'Yükleniyor…', + noSupported: 'Tarayıcı desteklenmiyor, lütfen IE10+ veya farklı tarayıcı kullanın', + success: 'Yükleme başarılı', + fail: 'Yüklemede hata oluştu', + preview: 'Önizle', + btn: { + off: 'İptal', + close: 'Kapat', + back: 'Geri', + save: 'Kaydet' + }, + error: { + onlyImg: 'Sadece resim', + outOfSize: 'Resim yükleme limitini aşıyor: ', + lowestPx: 'Resmin boyutu çok küçük. En az olması gereken: ' + } + }, + 'es-MX': { + hint: 'Selecciona o arrastra una imagen', + loading: 'Subiendo...', + noSupported: 'Tu navegador no es soportado, por favor usa IE10+ u otros navegadores más recientes', + success: 'Subido exitosamente', + fail: 'Sucedió un error', + preview: 'Vista previa', + btn: { + off: 'Cancelar', + close: 'Cerrar', + back: 'Atrás', + save: 'Guardar' + }, + error: { + onlyImg: 'Únicamente imágenes', + outOfSize: 'La imagen excede el tamaño maximo:', + lowestPx: 'La imagen es demasiado pequeña. Se espera por lo menos:' + } + }, + de: { + hint: 'Klick hier oder zieh eine Datei hier rein zum Hochladen', + loading: 'Hochladen…', + noSupported: 'Browser wird nicht unterstützt, bitte verwende IE10+ oder andere Browser', + success: 'Upload erfolgreich', + fail: 'Upload fehlgeschlagen', + preview: 'Vorschau', + btn: { + off: 'Abbrechen', + close: 'Schließen', + back: 'Zurück', + save: 'Speichern' + }, + error: { + onlyImg: 'Nur Bilder', + outOfSize: 'Das Bild ist zu groß: ', + lowestPx: 'Das Bild ist zu klein. Mindestens: ' + } + }, + ja: { + hint: 'クリック・ドラッグしてファイルをアップロード', + loading: 'アップロード中...', + noSupported: 'このブラウザは対応されていません。IE10+かその他の主要ブラウザをお使いください。', + success: 'アップロード成功', + fail: 'アップロード失敗', + preview: 'プレビュー', + btn: { + off: 'キャンセル', + close: '閉じる', + back: '戻る', + save: '保存' + }, + error: { + onlyImg: '画像のみ', + outOfSize: '画像サイズが上限を超えています。上限: ', + lowestPx: '画像が小さすぎます。最小サイズ: ' + } + }, + ua: { + hint: 'Натисніть, або перетягніть файл в це вікно', + loading: 'Завантажую……', + noSupported: 'Ваш браузер не підтримується, будь ласка скористайтесь IE10 + або іншими браузерами', + success: 'Завантаження виконано успішно', + fail: 'Помилка завантаження', + preview: 'Попередній перегляд', + btn: { + off: 'Відмінити', + close: 'Закрити', + back: 'Назад', + save: 'Зберегти' + }, + error: { + onlyImg: 'Тільки зображення', + outOfSize: 'Зображення перевищує граничний розмір: ', + lowestPx: 'Мінімальний розмір зображення: ' + } + }, + it: { + hint: 'Clicca o trascina qui il file per caricarlo', + loading: 'Caricamento del file…', + noSupported: 'Browser non supportato, per favore usa IE10+ o un altro browser', + success: 'Caricamento completato', + fail: 'Caricamento fallito', + preview: 'Anteprima', + btn: { + off: 'Annulla', + close: 'Chiudi', + back: 'Indietro', + save: 'Salva' + }, + error: { + onlyImg: 'Sono accettate solo immagini', + outOfSize: "L'immagine eccede i limiti di dimensione: ", + lowestPx: "L'immagine è troppo piccola. Il requisito minimo è: " + } + }, + ar: { + hint: 'اضغط أو اسحب الملف هنا للتحميل', + loading: 'جاري التحميل...', + noSupported: 'المتصفح غير مدعوم ، يرجى استخدام IE10 + أو متصفح أخر', + success: 'تم التحميل بنجاح', + fail: 'فشل التحميل', + preview: 'معاينه', + btn: { + off: 'إلغاء', + close: 'إغلاق', + back: 'رجوع', + save: 'حفظ' + }, + error: { + onlyImg: 'صور فقط', + outOfSize: 'تتجاوز الصوره الحجم المحدد: ', + lowestPx: 'حجم الصورة صغير جدا. من المتوقع على الأقل: ' + } + }, + ug: { + hint: 'مەزكۇر دائىرىنى چىكىپ رەسىم تاللاڭ ياكى رەسىمنى سۆرەپ ئەكىرىڭ', + loading: 'يوللىنىۋاتىدۇ...', + noSupported: 'تور كۆرگۈچ بۇ ئىقتىدارنى قوللىمايدۇ ، يۇقىرى نەشىردىكى تور كۆرگۈچنى ئىشلىتىڭ', + success: 'غەلبىلىك بولدى', + fail: 'مەغلۇب بولدى', + preview: 'ئۈنۈم رەسىم', + btn: { + off: 'بولدى قىلىش', + close: 'تاقاش', + back: 'ئالدىنقى قەدەم', + save: 'ساقلاش' + }, + error: { + onlyImg: 'پەقەت رەسىم فورماتىنىلا قوللايدۇ', + outOfSize: 'رەسىم چوڭ - كىچىكلىكى چەكتىن ئىشىپ كەتتى', + lowestPx: 'رەسىمنىڭ ئەڭ كىچىك ئۆلچىمى :' + } + }, + th: { + hint: 'คลิ๊กหรือลากรูปมาที่นี่', + loading: 'กำลังอัพโหลด…', + noSupported: 'เบราเซอร์ไม่รองรับ, กรุณาใช้ IE เวอร์ชั่น 10 ขึ้นไป หรือใช้เบราเซอร์ตัวอื่น', + success: 'อัพโหลดสำเร็จ', + fail: 'อัพโหลดล้มเหลว', + preview: 'ตัวอย่าง', + btn: { + off: 'ยกเลิก', + close: 'ปิด', + back: 'กลับ', + save: 'บันทึก' + }, + error: { + onlyImg: 'ไฟล์ภาพเท่านั้น', + outOfSize: 'ไฟล์ใหญ่เกินกำหนด: ', + lowestPx: 'ไฟล์เล็กเกินไป. อย่างน้อยต้องมีขนาด: ' + } + }, + mm: { + hint: 'ဖိုင်ကို ဤနေရာတွင် နှိပ်၍ (သို့) ဆွဲထည့်၍ တင်ပါ', + loading: 'တင်နေသည်…', + noSupported: 'ဤဘရောက်ဇာကို အထောက်အပံ့ မပေးပါ၊ ကျေးဇူးပြု၍ IE10+ သို့မဟုတ် အခြား ဘရောက်ဇာ ကို အသုံးပြုပါ', + success: 'ဖိုင်တင်နေမှု မပြီးမြောက်ပါ', + fail: 'ဖိုင်တင်နေမှု မအောင်မြင်ပါ', + preview: 'အစမ်းကြည့်', + btn: { + off: 'မလုပ်တော့ပါ', + close: 'ပိတ်မည်', + back: 'နောက်သို့', + save: 'သိမ်းမည်' + }, + error: { + onlyImg: 'ဓာတ်ပုံ သီးသန့်သာ', + outOfSize: 'ဓာတ်ပုံဆိုဒ် ကြီးလွန်းသည် ။ အများဆုံး ဆိုဒ် : ', + lowestPx: 'ဓာတ်ပုံဆိုဒ် သေးလွန်းသည်။ အနည်းဆုံး ဆိုဒ် : ' + } + }, + se: { + hint: 'Klicka eller dra en fil hit för att ladda upp den', + loading: 'Laddar upp…', + noSupported: 'Din webbläsare stöds inte, vänligen använd IE10+ eller andra webbläsare', + success: 'Uppladdning lyckades', + fail: 'Uppladdning misslyckades', + preview: 'Förhandsgranska', + btn: { + off: 'Avbryt', + close: 'Stäng', + back: 'Tillbaka', + save: 'Spara' + }, + error: { + onlyImg: 'Endast bilder', + outOfSize: 'Bilden är större än max-gränsen: ', + lowestPx: 'Bilden är för liten. Minimum är: ' + } + } +} diff --git a/src/common/components/image-cropper/utils/mimes.js b/src/common/components/image-cropper/utils/mimes.js new file mode 100644 index 0000000..15d3bce --- /dev/null +++ b/src/common/components/image-cropper/utils/mimes.js @@ -0,0 +1,7 @@ +export default { + jpg: 'image/jpeg', + png: 'image/png', + gif: 'image/gif', + svg: 'image/svg+xml', + psd: 'image/photoshop' +} diff --git a/src/common/components/import-data/index.vue b/src/common/components/import-data/index.vue new file mode 100644 index 0000000..648409e --- /dev/null +++ b/src/common/components/import-data/index.vue @@ -0,0 +1,104 @@ + + diff --git a/src/common/components/index.js b/src/common/components/index.js new file mode 100644 index 0000000..3b89b27 --- /dev/null +++ b/src/common/components/index.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import SkuTable from './sku-table/index.vue' +import WsUploadFile from './upload-file/index.vue' +const components = { + SkuTable, + WsUploadFile +} +Object.keys(components).forEach((key) => { + Vue.component(key, components[key]) +}) diff --git a/src/common/components/sku-table/index.vue b/src/common/components/sku-table/index.vue new file mode 100644 index 0000000..41c4519 --- /dev/null +++ b/src/common/components/sku-table/index.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/common/components/sku-table/utils.ts b/src/common/components/sku-table/utils.ts new file mode 100644 index 0000000..3a83b76 --- /dev/null +++ b/src/common/components/sku-table/utils.ts @@ -0,0 +1,32 @@ +export function modeUnitFilter(value: string): string { + const map: any = { + Hour: '小时', + Month: '月', + Year: '年' + } + return map[value] +} +export function getPrice(sku: any, mode: string): string | number { + const { spec, billPolicy, billable } = sku + // 不开启计费 + if (!billable) return 0 + const key = `${mode.toLowerCase()}Price` + // 规格计费 + if (billPolicy !== 'agility') return sku[key] + const basicPrice = JSON.parse(sku.basicPrice) + // 没有specName说明没有规格设置 + const flag = spec.every((item: any) => !item.specName || item.specValue) + // 无值直接返回 + if (!flag) return '/' + // 获取数值map + const countMap: any = {} + spec.forEach((item: any) => { + countMap[item.specName] = item.specValue + }) + let totalPrice = 0 + basicPrice.forEach((item: any) => { + const { specName } = item + totalPrice += item[key] * (countMap[specName] || 1) + }) + return totalPrice +} diff --git a/src/common/components/upload-file/index.vue b/src/common/components/upload-file/index.vue new file mode 100644 index 0000000..29b7d85 --- /dev/null +++ b/src/common/components/upload-file/index.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/common/components/utils/Export2Excel.js b/src/common/components/utils/Export2Excel.js new file mode 100644 index 0000000..e0a7622 --- /dev/null +++ b/src/common/components/utils/Export2Excel.js @@ -0,0 +1,218 @@ +/* eslint-disable */ +import { saveAs } from 'file-saver' +import XLSX from 'xlsx' + +function generateArray(table) { + var out = [] + var rows = table.querySelectorAll('tr') + var ranges = [] + for (var R = 0; R < rows.length; ++R) { + var outRow = [] + var row = rows[R] + var columns = row.querySelectorAll('td') + for (var C = 0; C < columns.length; ++C) { + var cell = columns[C] + var colspan = cell.getAttribute('colspan') + var rowspan = cell.getAttribute('rowspan') + var cellValue = cell.innerText + if (cellValue !== '' && cellValue == +cellValue) cellValue = +cellValue + + //Skip ranges + ranges.forEach(function (range) { + if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { + for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null) + } + }) + + //Handle Row Span + if (rowspan || colspan) { + rowspan = rowspan || 1 + colspan = colspan || 1 + ranges.push({ + s: { + r: R, + c: outRow.length + }, + e: { + r: R + rowspan - 1, + c: outRow.length + colspan - 1 + } + }) + } + + //Handle Value + outRow.push(cellValue !== '' ? cellValue : null) + + //Handle Colspan + if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null) + } + out.push(outRow) + } + return [out, ranges] +} + +function datenum(v, date1904) { + if (date1904) v += 1462 + var epoch = Date.parse(v) + return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000) +} + +function sheet_from_array_of_arrays(data, opts) { + var ws = {} + var range = { + s: { + c: 10000000, + r: 10000000 + }, + e: { + c: 0, + r: 0 + } + } + for (var R = 0; R != data.length; ++R) { + for (var C = 0; C != data[R].length; ++C) { + if (range.s.r > R) range.s.r = R + if (range.s.c > C) range.s.c = C + if (range.e.r < R) range.e.r = R + if (range.e.c < C) range.e.c = C + var cell = { + v: data[R][C] + } + if (cell.v == null) continue + var cell_ref = XLSX.utils.encode_cell({ + c: C, + r: R + }) + + if (typeof cell.v === 'number') cell.t = 'n' + else if (typeof cell.v === 'boolean') cell.t = 'b' + else if (cell.v instanceof Date) { + cell.t = 'n' + cell.z = XLSX.SSF._table[14] + cell.v = datenum(cell.v) + } else cell.t = 's' + + ws[cell_ref] = cell + } + } + if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range) + return ws +} + +function Workbook() { + if (!(this instanceof Workbook)) return new Workbook() + this.SheetNames = [] + this.Sheets = {} +} + +function s2ab(s) { + var buf = new ArrayBuffer(s.length) + var view = new Uint8Array(buf) + for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff + return buf +} + +export function export_table_to_excel(id) { + var theTable = document.getElementById(id) + var oo = generateArray(theTable) + var ranges = oo[1] + + /* original data */ + var data = oo[0] + var ws_name = 'SheetJS' + + var wb = new Workbook(), + ws = sheet_from_array_of_arrays(data) + + /* add ranges to worksheet */ + // ws['!cols'] = ['apple', 'banan']; + ws['!merges'] = ranges + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name) + wb.Sheets[ws_name] = ws + + var wbout = XLSX.write(wb, { + bookType: 'xlsx', + bookSST: false, + type: 'binary' + }) + + saveAs( + new Blob([s2ab(wbout)], { + type: 'application/octet-stream' + }), + 'test.xlsx' + ) +} + +export function exportJsonToExcel({ multiHeader = [], header, data, filename, merges = [], autoWidth = true, bookType = 'xlsx' } = {}) { + /* original data */ + filename = filename || 'excel-list' + data = [...data] + data.unshift(header) + + for (let i = multiHeader.length - 1; i > -1; i--) { + data.unshift(multiHeader[i]) + } + + var ws_name = 'SheetJS' + var wb = new Workbook(), + ws = sheet_from_array_of_arrays(data) + + if (merges.length > 0) { + if (!ws['!merges']) ws['!merges'] = [] + merges.forEach((item) => { + ws['!merges'].push(XLSX.utils.decode_range(item)) + }) + } + + if (autoWidth) { + /*设置worksheet每列的最大宽度*/ + const colWidth = data.map((row) => + row.map((val) => { + /*先判断是否为null/undefined*/ + if (val == null) { + return { + wch: 10 + } + } else if (val.toString().charCodeAt(0) > 255) { + /*再判断是否为中文*/ + return { + wch: val.toString().length * 2 + } + } else { + return { + wch: val.toString().length + } + } + }) + ) + /*以第一行为初始值*/ + let result = colWidth[0] + for (let i = 1; i < colWidth.length; i++) { + for (let j = 0; j < colWidth[i].length; j++) { + if (result[j]['wch'] < colWidth[i][j]['wch']) { + result[j]['wch'] = colWidth[i][j]['wch'] + } + } + } + ws['!cols'] = result + } + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name) + wb.Sheets[ws_name] = ws + + var wbout = XLSX.write(wb, { + bookType: bookType, + bookSST: false, + type: 'binary' + }) + saveAs( + new Blob([s2ab(wbout)], { + type: 'application/octet-stream' + }), + `${filename}.${bookType}` + ) +} diff --git a/src/common/components/utils/request.js b/src/common/components/utils/request.js new file mode 100644 index 0000000..34ce04d --- /dev/null +++ b/src/common/components/utils/request.js @@ -0,0 +1,102 @@ +/** + * Created by Zhang Haijun on 2017/8/24. + * axios#request(config) + * axios#get(url[, config]) + * axios#delete(url[, config]) + * axios#head(url[, config]) + * axios#options(url[, config]) + * axios#post(url[, data[, config]]) + * axios#put(url[, data[, config]]) + * axios#patch(url[, data[, config]]) + */ +import axios from 'axios' +import qs from 'qs' + +const codeMessage = { + 200: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +const axiosInstance = axios.create({ + baseURL: '/api', + headers: { 'Content-Type': 'application/x-www-form-urlencoded', BsmAjaxHeader: true }, + timeout: 20000, + paramsSerializer: (params) => { + return qs.stringify(params, { arrayFormat: 'indices' }) + } +}) +// 请求完成回调 +const finishCallback = function () {} +// 报错处理 +const handleError = function (response) { + if (!response) return // 容错处理 + const errorText = codeMessage[response.status] || response.statusText + // Notification({ + // type: 'error', + // title: `请求错误 ${response.status}: ${response.config.url}`, + // message: errorText + // }) + const error = new Error(errorText) + error.name = response.status + error.response = response + throw error +} +axiosInstance.interceptors.request.use( + (config) => { + const { + headers: { options = {} } + } = config + if (config.method === 'get') { + // 清除get缓存 + config.url = `${config.url}?t=${new Date().getTime()}` + } + config.headers.token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiIxMjE0NTQ2NzgyIiwiY2F0YWxvZyI6Ik1hbmFnZXIiLCJuYW1lIjoi6LaF57qn566h55CG5ZGYIiwiZXhwIjoxNjIzODI5OTA1LCJ1dWlkIjoxLCJhY2NvdW50IjoiYWRtaW4ifQ.H1TLrKni0z4xp3M55SUbUyLImgELqrZhCYrPXoKmucY' + delete config.headers.options + config.options = options + return config + }, + (error) => { + return Promise.reject(error) + } +) +axiosInstance.interceptors.response.use( + (data) => { + // const requestKey = getRequestIdentify(data.config); + // removePending(requestKey); + finishCallback() + const responseData = data.data + const { options } = data.config + if (!responseData.success) { + switch (responseData.status) { + case '402': + location.href = '/#/license' + break + case '401': + case '509': + break + default: + } + if (!options.ignoreError) { + } + } + return responseData + }, + (error) => { + finishCallback() + handleError(error.response) + return Promise.reject(error) + } +) +export default axiosInstance diff --git a/src/common/components/utils/resolvePath.js b/src/common/components/utils/resolvePath.js new file mode 100644 index 0000000..f608808 --- /dev/null +++ b/src/common/components/utils/resolvePath.js @@ -0,0 +1,13 @@ +/** + * Created by HaijunZhang on 2018/12/10. + */ +import path from 'path' +export function isExternalLink(path) { + return /^(http:|https:|mailto:|tel:)\/\//.test(path) +} +export function resolvePath(basePath, routePath) { + if (isExternalLink(routePath)) { + return routePath + } + return path.resolve(basePath, routePath) +} diff --git a/src/common/components/utils/tools.js b/src/common/components/utils/tools.js new file mode 100644 index 0000000..d684c7d --- /dev/null +++ b/src/common/components/utils/tools.js @@ -0,0 +1,39 @@ +/** + * Created by Zhang Haijun on 2021/2/2. + */ +// 查询参数封装优化 +export function handleSearchParam(params) { + // 设置参数 + const objParams = {} + function setParams(sign, key, value) { + if (objParams[sign]) { + objParams[sign][key] = value + } else { + objParams[sign] = { + [key]: value + } + } + } + // 将参数处理为对象 + for (const a in params) { + const value = params[a] + // 对参数进行处理,去除空参数 + if (value === '' || value === undefined || value === null) continue + // 对key值进行处理 + const [key, sign = 'EQ'] = a.split(':') + // 将sign全部转换为大写 + const signs = sign.toLocaleUpperCase() + if (signs === 'RANGE') { + const [first, second] = value + setParams('GET', key, first) + setParams('LET', key, second) + continue + } + setParams(signs, key, value) + } + const result = [] + for (const a in objParams) { + result.push({ param: objParams[a], sign: a }) + } + return JSON.stringify(result) +} diff --git a/src/common/css/common-var.scss b/src/common/css/common-var.scss new file mode 100644 index 0000000..f9e3ee1 --- /dev/null +++ b/src/common/css/common-var.scss @@ -0,0 +1,4 @@ +/* Color +-------------------------- */ + +$--color-primary: #1e54d5; diff --git a/src/common/css/common.scss b/src/common/css/common.scss new file mode 100644 index 0000000..b2ad1d2 --- /dev/null +++ b/src/common/css/common.scss @@ -0,0 +1,44 @@ +.buy-btn { + position: fixed; + top: 58px; + right: 20px; +} + +.tip { + font-size: 12px; + color: #999; +} + +.el-message-box__message { + word-break: break-all; +} + +.viewer-container.viewer-backdrop { + z-index: 99999999999999 !important; +} + +.w { + width: 200px !important; +} + +.el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: #409eff; + background-color: #d5e8fc; + border-color: #409eff; +} + +.el-radio-button__inner { + min-width: 80px; +} + +.el-drawer.rtl { + overflow: auto; +} + +.tab-label-padding { + padding: 0 10px; +} + +.full-height { + height: 100%; +} diff --git a/src/common/css/element-variables.scss b/src/common/css/element-variables.scss new file mode 100644 index 0000000..02d3218 --- /dev/null +++ b/src/common/css/element-variables.scss @@ -0,0 +1,8 @@ +/* 改变主题色变量 */ + +@import './common-var'; + +/* 改变 icon 字体路径变量,必需 */ + +$--font-path: '~element-ui/lib/theme-chalk/fonts'; +@import '~element-ui/packages/theme-chalk/src/index'; diff --git a/src/common/css/font.scss b/src/common/css/font.scss new file mode 100644 index 0000000..5eb876f --- /dev/null +++ b/src/common/css/font.scss @@ -0,0 +1,23 @@ +$font-size: 16px; +$small-font-size: 14px; +.font-big { + font-size: $font-size; + .el-menu-item, + .el-submenu__title, + ul.header-menu li, + .el-tabs__item { + font-size: $font-size; + .iconfont { + font-size: $font-size; + } + } + .el-table--mini, + .el-table--small, + .el-table__expand-icon, + .app-levelbar, + .el-button--small, + .el-dropdown-link, + .common-detail .detail-body .basic-info .attr { + font-size: $font-size; + } +} diff --git a/src/common/css/hack.scss b/src/common/css/hack.scss new file mode 100644 index 0000000..f03df45 --- /dev/null +++ b/src/common/css/hack.scss @@ -0,0 +1,9 @@ +@media screen and(-ms-high-contrast:active), (-ms-high-contrast: none) { + .el-table__header, + .el-table__body { + width: 100% !important; + } + /* .basic-form-item{ + height: 32.76px; + } */ +} diff --git a/src/common/css/index.scss b/src/common/css/index.scss new file mode 100644 index 0000000..02629f0 --- /dev/null +++ b/src/common/css/index.scss @@ -0,0 +1,4 @@ +@import './lib/index'; +@import './hack.scss'; +@import './font.scss'; +@import './common.scss'; diff --git a/src/common/css/lib/button.scss b/src/common/css/lib/button.scss new file mode 100644 index 0000000..8acc7e9 --- /dev/null +++ b/src/common/css/lib/button.scss @@ -0,0 +1,29 @@ +.el-button--text { + padding: 0 !important; +} + +.el-button.el-button--text [class*='el-icon-'] + span { + margin-left: 2px; +} + +.el-button--ghost { + color: #666; + background-color: #fff; + border-color: #d9d9d9; +} + +.el-button--ghost:focus, +.el-button--ghost:hover { + color: #2b85e4; + background-color: transparent; + border-color: #2b85e4; +} + +.el-button--ghost.is-disabled, +.el-button--ghost.is-disabled:active, +.el-button--ghost.is-disabled:focus, +.el-button--ghost.is-disabled:hover { + color: #bbb; + background-color: #f7f7f7; + border-color: #d9d9d9; +} diff --git a/src/common/css/lib/common.scss b/src/common/css/lib/common.scss new file mode 100644 index 0000000..e12f9fe --- /dev/null +++ b/src/common/css/lib/common.scss @@ -0,0 +1,807 @@ +html, +body, +#app { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 14px; + overflow: hidden !important; + font-family: Microsoft YaHei, Hiragino Sans GB; +} + +.app-wrapper { + position: relative; + width: 100%; + height: 100%; +} + +.wrapper { + box-shadow: none !important; +} + +.wrapper > .el-card__body { + padding: 15px; +} + +.wrapper-container { + padding: 8px; +} + +.wrapper-sm { + padding: 15px; +} + +.search-container { + position: relative; + padding: 15px !important; + border: 1px solid #ddd; + margin-bottom: 15px; +} + +.search-container > .legend { + color: rgba(18, 19, 20, 0.69); + background: #fff; + position: absolute; + text-align: center; + width: 78px; + top: -10px; + left: 15px; + font-size: 14px; +} + +.search-content > .search-item { + width: 20%; +} + +.pagination-container { + margin-top: 10px; + text-align: right; +} + +.iconfont { + font-size: 13px; +} + +.panel { + background-color: #fff; + margin-bottom: 15px; + border: 1px solid #dee5e7; +} + +.panel .panel-heading { + background-color: #edf1f2; + padding: 10px 15px; + border-bottom: 1px solid transparent; +} + +.panel .panel-body { + padding: 15px; +} + +/*边距共有样式*/ + +.text-center { + text-align: center; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.p-none { + padding: 0 !important; +} + +.m-xxs { + margin: 2px 4px; +} + +.m-xs { + margin: 5px; +} + +.m-sm { + margin: 10px; +} + +.m { + margin: 15px; +} + +.m-md { + margin: 20px; +} + +.m-lg { + margin: 30px; +} + +.m-xl { + margin: 50px; +} + +.m-n { + margin: 0 !important; +} + +.m-l-none { + margin-left: 0 !important; +} + +.m-l-xs { + margin-left: 5px; +} + +.m-l-sm { + margin-left: 10px !important; +} + +.m-l { + margin-left: 15px; +} + +.m-l-md { + margin-left: 20px; +} + +.m-l-lg { + margin-left: 30px; +} + +.m-l-xl { + margin-left: 40px; +} + +.m-l-xxl { + margin-left: 50px; +} + +.m-l-n-xxs { + margin-left: -1px; +} + +.m-l-n-xs { + margin-left: -5px; +} + +.m-l-n-sm { + margin-left: -10px; +} + +.m-l-n { + margin-left: -15px; +} + +.m-l-n-md { + margin-left: -20px; +} + +.m-l-n-lg { + margin-left: -30px; +} + +.m-l-n-xl { + margin-left: -40px; +} + +.m-l-n-xxl { + margin-left: -50px; +} + +.m-t-none { + margin-top: 0 !important; +} + +.m-t-xxs { + margin-top: 1px; +} + +.m-t-xs { + margin-top: 5px !important; +} + +.m-t-sm { + margin-top: 10px !important; +} + +.m-t { + margin-top: 15px; +} + +.m-t-md { + margin-top: 20px; +} + +.m-t-lg { + margin-top: 30px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-xxl { + margin-top: 50px; +} + +.m-t-n-xxs { + margin-top: -1px; +} + +.m-t-n-xs { + margin-top: -5px; +} + +.m-t-n-7 { + margin-top: -7px; +} + +.m-t-n-sm { + margin-top: -10px; +} + +.m-t-n { + margin-top: -15px; +} + +.m-t-n-md { + margin-top: -20px; +} + +.m-t-n-lg { + margin-top: -30px; +} + +.m-t-n-xl { + margin-top: -40px; +} + +.m-t-n-xxl { + margin-top: -50px; +} + +.m-t-n-xxxl { + margin-top: -60px; +} + +.m-r-none { + margin-right: 0 !important; +} + +.m-r-xxs { + margin-right: 1px; +} + +.m-r-xs { + margin-right: 5px; +} + +.m-r-sm { + margin-right: 10px !important; +} + +.m-r { + margin-right: 15px !important; +} + +.m-r-md { + margin-right: 20px; +} + +.m-r-lg { + margin-right: 30px; +} + +.m-r-xl { + margin-right: 40px; +} + +.m-r-xxl { + margin-right: 50px; +} + +.m-r-n-xxs { + margin-right: -1px; +} + +.m-r-n-xs { + margin-right: -5px; +} + +.m-r-n-sm { + margin-right: -10px; +} + +.m-r-n { + margin-right: -15px; +} + +.m-r-n-md { + margin-right: -20px; +} + +.m-r-n-lg { + margin-right: -30px; +} + +.m-r-n-xl { + margin-right: -40px; +} + +.m-r-n-xxl { + margin-right: -50px; +} + +.m-b-none { + margin-bottom: 0 !important; +} + +.m-b-xxs { + margin-bottom: 1px; +} + +.m-b-xs { + margin-bottom: 5px; +} + +.m-b-sm { + margin-bottom: 10px !important; +} + +.m-b { + margin-bottom: 15px !important; +} + +.m-b-md { + margin-bottom: 20px; +} + +.m-b-lg { + margin-bottom: 30px; +} + +.m-b-xl { + margin-bottom: 40px; +} + +.m-b-xxl { + margin-bottom: 50px; +} + +.m-b-n-xxs { + margin-bottom: -1px; +} + +.m-b-n-xs { + margin-bottom: -5px; +} + +.m-b-n-sm { + margin-bottom: -10px; +} + +.m-b-n { + margin-bottom: -15px; +} + +.m-b-n-md { + margin-bottom: -20px; +} + +.m-b-n-lg { + margin-bottom: -30px; +} + +.m-b-n-xl { + margin-bottom: -40px; +} + +.m-b-n-xxl { + margin-bottom: -50px; +} + +/*颜色共有样式*/ + +.btn-info { + color: #ffffff !important; + background-color: #497edf; + border-color: #497edf; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff !important; + background-color: #2059c1; + border-color: #2059c1; +} + +.btn-success { + color: #ffffff !important; + background-color: #27c24c; + border-color: #27c24c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff !important; + background-color: #23ad44; + border-color: #20a03f; +} + +.btn-danger { + color: #ffffff !important; + background-color: #f05050; + border-color: #f05050; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff !important; + background-color: #ee3939; + border-color: #ed2a2a; +} + +.text-info { + color: #00aeef !important; +} + +.text-success { + color: #27c24c !important; +} + +.text-warning { + color: #fad733 !important; +} + +.text-danger { + color: #f05050; +} + +.text-white { + color: #fff !important; +} + +.text-left { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +.text-right { + text-align: right !important; +} + +/*宽度样式*/ + +.w-xxs { + width: 60px; +} + +.w-xs { + width: 90px; +} + +.w-110 { + width: 110px; +} + +.w-ss { + width: 120px; +} + +.w-sm { + width: 150px; +} + +.w { + width: 200px; +} + +.w-md { + width: 240px; +} + +.w-lg { + width: 280px !important; +} + +.w-xl { + width: 320px; +} + +.w-xxl { + width: 360px; +} + +.w-full { + width: 100% !important; +} + +.w-auto { + width: auto; +} + +.upload-file-btn { + position: relative; + cursor: pointer; +} + +.upload-file-btn input[type='file'] { + width: 100%; + height: 100%; + font-size: 300px; + opacity: 0; + filter: alpha(opacity=0); + cursor: pointer; + left: 0; + right: 0; + bottom: 0; + top: 0; + position: absolute; + padding: 0px; + margin: 0px; + overflow: hidden; +} + +/*详情表格*/ + +.detail-box { + margin-top: 10px; + margin-bottom: 10px; +} + +.detail-title { + margin-bottom: 15px; + text-indent: 8px; + border-left: 3px solid #88b7e0; + font-size: 14px; + font-weight: 600; +} + +.detail-href { + color: $--color-primary !important; + cursor: pointer; + text-decoration: none !important; +} + +.detail-table { + width: 100%; + border-collapse: collapse; +} + +.detail-table td.title { + color: #000; + width: 85px; + font-size: 12px; + font-weight: bold; +} + +.detail-table td, +.detail-table th { + padding: 6px 8px; + border: 1px solid #ddd; + min-width: 85px; + width: 250px; + word-break: break-all; + white-space: pre-wrap; + /*border: none;*/ +} + +.border-top-none { + border-top: none !important; +} + +a { + color: inherit; + cursor: pointer; + text-decoration: none; +} + +.bounce-enter-active, +.bounce-leave-active, +.bounceDown-enter-active, +.bounceDown-leave-active, +.bounceIn, +.bounceInDown, +.bounceInLeft, +.bounceInRight, +.bounceInUp, +.bounceLeft-enter-active, +.bounceLeft-leave-active, +.bounceOut, +.bounceOutDown, +.bounceOutLeft, +.bounceOutRight, +.bounceOutUp, +.bounceRight-enter-active, +.bounceRight-leave-active, +.bounceUp-enter-active, +.bounceUp-leave-active, +.fade-enter-active, +.fade-leave-active, +.fadeDown-enter-active, +.fadeDown-leave-active, +.fadeDownBig-enter-active, +.fadeDownBig-leave-active, +.fadeIn, +.fadeInDown, +.fadeInDownBig, +.fadeInLeft, +.fadeInLeftBig, +.fadeInRight, +.fadeInRightBig, +.fadeInUp, +.fadeInUpBig, +.fadeLeft-enter-active, +.fadeLeft-leave-active, +.fadeLeftBig-enter-active, +.fadeLeftBig-leave-active, +.fadeOut, +.fadeOutDown, +.fadeOutDownBig, +.fadeOutLeft, +.fadeOutLeftBig, +.fadeOutRight, +.fadeOutRightBig, +.fadeOutUp, +.fadeOutUpBig, +.fadeRight-enter-active, +.fadeRight-leave-active, +.fadeRightBig-enter-active, +.fadeRightBig-leave-active, +.fadeUp-enter-active, +.fadeUp-leave-active, +.fadeUpBig-enter-active, +.fadeUpBig-leave-active, +.rotateDownLeft-enter-active, +.rotateDownLeft-leave-active, +.rotateDownRight-enter-active, +.rotateDownRight-leave-active, +.rotateInDownLeft, +.rotateInDownRight, +.rotateInUpLeft, +.rotateInUpRight, +.rotateOutDownLeft, +.rotateOutDownRight, +.rotateOutUpLeft, +.rotateOutUpRight, +.rotateUpLeft-enter-active, +.rotateUpLeft-leave-active, +.rotateUpRight-enter-active, +.rotateUpRight-leave-active, +.slide-enter-active, +.slide-leave-active, +.slideDown-enter-active, +.slideDown-leave-active, +.slideIn, +.slideInDown, +.slideInLeft, +.slideInRight, +.slideInUp, +.slideLeft-enter-active, +.slideLeft-leave-active, +.slideOut, +.slideOutDown, +.slideOutLeft, +.slideOutRight, +.slideOutUp, +.slideRight-enter-active, +.slideRight-leave-active, +.slideUp-enter-active, +.slideUp-leave-active, +.zoom-enter-active, +.zoom-leave-active, +.zoomDown-enter-active, +.zoomDown-leave-active, +.zoomIn, +.zoomInDown, +.zoomInLeft, +.zoomInRight, +.zoomInUp, +.zoomLeft-enter-active, +.zoomLeft-leave-active, +.zoomOut, +.zoomOutDown, +.zoomOutLeft, +.zoomOutRight, +.zoomOutUp, +.zoomRight-enter-active, +.zoomRight-leave-active, +.zoomUp-enter-active, +.zoomUp-leave-active { + animation-duration: 0.6s !important; + animation-fill-mode: both; +} + +.cur-point { + cursor: pointer !important; +} + +/*无数据*/ + +.no-data { + text-align: center; + min-height: 200px; + line-height: 200px; +} + +.no-data .icon-zanwushuju { + font-size: 26px; + color: #d2cccc; +} + +/*.custom-dialog .el-dialog{*/ + +/*width: 80%;*/ + +/*height: 100%;*/ + +/*position: absolute;*/ + +/*right: 0;*/ + +/*}*/ + +.text-ellipsis { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-muted { + color: #98a6ad; +} + +.custom-scrollbar .el-scrollbar__wrap { + overflow-x: hidden !important; +} + +.action-divider { + margin: 0 8px; + display: inline-block; + height: 1em; + width: 1px; + vertical-align: middle; + position: relative; + top: -0.06em; + font-size: 14px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + background: #e8e8e8; +} + +.dialog-sm { + width: 300px; +} + +.dialog-md { + width: 800px; +} + +.dialog-lg { + width: 950px; +} + +:-ms-input-placeholder { + /* Internet Explorer 10+ */ + color: #e9d6cf !important; +} diff --git a/src/common/css/lib/components/index.scss b/src/common/css/lib/components/index.scss new file mode 100644 index 0000000..321000d --- /dev/null +++ b/src/common/css/lib/components/index.scss @@ -0,0 +1,2 @@ +@import './theme.scss'; +@import './table.scss'; diff --git a/src/common/css/lib/components/sidebar.scss b/src/common/css/lib/components/sidebar.scss new file mode 100644 index 0000000..ba54eb6 --- /dev/null +++ b/src/common/css/lib/components/sidebar.scss @@ -0,0 +1,130 @@ +.sidebar-container { + z-index: 3; + width: 180px !important; + transition: width 0.18s; + .scrollbar-wrapper { + height: calc(100vh - 50px); + .el-scrollbar__wrap { + overflow-x: hidden; + } + } + .sidebar-menu { + width: 180px; + height: calc(100vh - 50px); + border: 0; + } + .sidebar-menu::-webkit-scrollbar { + display: none; + } + .el-submenu__title > i, + .el-menu-item > i { + margin-right: 6px; + } + .el-submenu.is-opened .el-submenu__title { + color: #fff !important; + & > i { + color: #fff !important; + } + } + .el-menu-item.is-active i { + color: #fff !important; + } + .el-submenu .el-menu-item { + min-width: 180px !important; + background: #15171d !important; + &.is-active { + background: #1890ff !important; + } + } + .menu-wrapper .el-menu-item { + &.is-active { + background: #1890ff !important; + } + } + .el-menu--collapse { + width: 64px; + overflow: inherit; + } + .logo { + height: 50px; + position: relative; + line-height: 50px; + transition: all 0.3s; + background: #21242e; + overflow: hidden; + text-align: center; + img { + display: inline-block; + vertical-align: middle; + height: 32px; + } + .short-logo { + display: none; + } + h1 { + color: #fff; + display: inline-block; + vertical-align: middle; + font-size: 18px; + margin: 0 0 0 8px; + font-family: 'Myriad Pro', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: 600; + } + } +} +.hideSidebar { + .sidebar-container { + width: 64px !important; + .el-menu--collapse { + .el-submenu { + overflow: hidden; + & > .el-submenu__title { + & > span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + .el-submenu__icon-arrow { + display: none; + } + } + } + } + .logo { + img { + display: none; + } + .short-logo { + display: inline-block; + } + } + } +} +.top-menu { + float: left; +} +// 顶部布局 +.el-menu--horizontal { + border: none !important; + & > .menu-wrapper { + float: left; + } + .el-menu-item > i, + .el-submenu__title > i { + margin-right: 6px; + } + .el-menu-item { + float: left; + height: 60px; + line-height: 60px; + margin: 0; + //border-bottom: 2px solid transparent; + color: #909399; + &.is-active { + //border-bottom: 2px solid #409eff; + color: #303133; + } + } +} diff --git a/src/common/css/lib/components/table.scss b/src/common/css/lib/components/table.scss new file mode 100644 index 0000000..195aeec --- /dev/null +++ b/src/common/css/lib/components/table.scss @@ -0,0 +1,22 @@ +.table-container { + .custom-header { + background: #f5f7fa !important; + color: #333; + border-bottom: 1px solid #dcdfe6 !important; + } + .el-table--enable-row-hover .el-table__body tr:hover > td { + background-color: #eaf3fd; + } + .gutter { + background: #f5f7fa !important; + color: #333; + border-bottom: 1px solid #dcdfe6 !important; + } + .pagination-container { + margin-top: 10px; + text-align: right; + .el-pagination__jump { + margin-left: 0; + } + } +} diff --git a/src/common/css/lib/components/theme.scss b/src/common/css/lib/components/theme.scss new file mode 100644 index 0000000..26d17ed --- /dev/null +++ b/src/common/css/lib/components/theme.scss @@ -0,0 +1,49 @@ +.theme-container { + width: 280px; + padding: 0 !important; + top: 30px !important; + .popper__arrow { + display: none !important; + } + .el-card__header { + padding: 10px 20px; + } +} +.theme-setting { + .icon-huanfu { + font-size: 18px; + cursor: pointer; + } +} +.theme-cell { + height: 30px; + position: relative; + cursor: pointer; + margin-bottom: 5px; + span { + height: 100%; + width: 100%; + position: absolute; + background-color: rgba(32, 43, 54, 0.5); + text-align: center; + display: inherit; + .icon-ok { + position: relative; + top: 6px; + display: inline-block; + font-weight: 400; + font-size: 17px; + line-height: 1; + color: #fff; + } + } + b { + display: inline-block; + float: left; + width: 50%; + height: 20px; + } + b.t-header { + height: 10px; + } +} diff --git a/src/common/css/lib/element-ui.scss b/src/common/css/lib/element-ui.scss new file mode 100644 index 0000000..3b63b6c --- /dev/null +++ b/src/common/css/lib/element-ui.scss @@ -0,0 +1,130 @@ +@import './button.scss'; +.el-select { + width: 100%; +} + +.el-notification__content { + word-break: break-word; +} + +.el-cascader { + width: 100%; +} + +.el-form-item { + margin-bottom: 15px; +} + +.el-button--mini, +.el-button--mini.is-round { + padding: 4px 15px !important; +} + +.el-form-item--mini.el-form-item, +.el-form-item--small.el-form-item { + margin-bottom: 18px; +} + +.el-table .cell { + white-space: nowrap; +} + +.el-card { + box-shadow: none; + border-radius: 0 !important; +} + +.el-tabs--border-card { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +.el-card__header { + padding: 10px 20px !important; +} + +.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: rgb(236 245 255) !important; + color: rgb(64 158 255); +} + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + -webkit-transition: color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + transition: color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + color: #666 !important; + font-weight: normal !important; +} + +.el-progress-bar__inner { + max-width: 100%; +} + +.el-progress__text { + font-size: 12px !important; +} + +.el-dropdown-link { + cursor: pointer; + color: $--color-primary; + font-size: 12px; +} + +.el-pagination button, +.el-pagination span:not([class*='suffix']) { + font-size: 12px; +} + +.el-pagination__sizes .el-input .el-input__inner { + font-size: 12px; +} + +.el-pager li { + font-size: 12px; +} + +.el-input--small { + font-size: 13px; +} + +.el-tabs__content { + position: static !important; +} + +//menu +.el-submenu .el-menu-item { + height: 48px; + line-height: 48px; +} + +.el-menu-item, +.el-submenu__title { + height: 48px; + line-height: 48px; +} + +.el-dialog { + .el-dialog--middle { + width: 60%; + } + .el-dialog__header { + display: flex; + align-items: center; + padding: 14px 20px; + font-weight: bold; + border-bottom: 1px solid #e0e0e0; + .el-dialog__title { + flex: 1; + color: #010033; + font-size: 14px; + } + .el-dialog__headerbtn { + position: static; + } + } + .el-dialog__footer { + padding: 14px 20px; + text-align: right; + border-top: 1px solid #e0e0e0; + } +} diff --git a/src/common/css/lib/index.scss b/src/common/css/lib/index.scss new file mode 100644 index 0000000..7b99646 --- /dev/null +++ b/src/common/css/lib/index.scss @@ -0,0 +1,3 @@ +@import './common.scss'; +@import './element-ui.scss'; +@import './components/index.scss'; diff --git a/src/common/directive/index.js b/src/common/directive/index.js new file mode 100644 index 0000000..1cf833c --- /dev/null +++ b/src/common/directive/index.js @@ -0,0 +1,12 @@ +/** + * Created by Zhang Haijun on 2018/1/25. + */ +/* global $ */ +import Vue from 'vue' +import store from '@/store' +export const permission = Vue.directive('permission', function (el, binding) { + const buttons = store.state.permission.buttons + if (!buttons.includes(binding.value)) { + el.parentNode && el.parentNode.removeChild(el) + } +}) diff --git a/src/common/hooks/useGlobalWebsocket.ts b/src/common/hooks/useGlobalWebsocket.ts new file mode 100644 index 0000000..99b0402 --- /dev/null +++ b/src/common/hooks/useGlobalWebsocket.ts @@ -0,0 +1,3 @@ +export default function (onmessage: { (): void }, context: any) { + context.root.$store.state.app.$webSocket.onmessage = onmessage +} diff --git a/src/common/hooks/useSelection.js b/src/common/hooks/useSelection.js new file mode 100644 index 0000000..0ee2d54 --- /dev/null +++ b/src/common/hooks/useSelection.js @@ -0,0 +1,11 @@ +import { ref } from '@vue/composition-api' +export default function () { + const selectionIds = ref([]) + function handleSelectionChange(selections) { + selectionIds.value = selections.map((item) => item.id) + } + return { + selectionIds, + handleSelectionChange + } +} diff --git a/src/common/hooks/useTable.ts b/src/common/hooks/useTable.ts new file mode 100644 index 0000000..8ba2c9c --- /dev/null +++ b/src/common/hooks/useTable.ts @@ -0,0 +1,87 @@ +import { ref, toRefs, reactive } from '@vue/composition-api' +import { MessageBox, Message } from 'element-ui' +import { handleSearchParam } from 'cmp-element/utils' + +interface IRemoveService { + (id: number): Promise +} +interface IConfigs { + getService: { + (params: Base.IListParams): Promise + } + removeService?: IRemoveService + listFormat?: { + (data: any): any[] + } + afterGetList?: { + (): void + } + rows?: number + params?: any + initParams?: any + deleteTipKey?: string +} +interface IRecord { + id: number + name: string +} +export function useDelete(removeService: IRemoveService, getData: { (): void }, deleteTipKey = 'name') { + function handleDelete(record: any) { + MessageBox.confirm(`您确定要删除【${record[deleteTipKey]}】吗?`, '提示', { + confirmButtonClass: 'el-button--danger', + type: 'warning' + }) + .then(async () => { + const res = await removeService(record.id) + if (res.success) { + Message.success(res.message) + getData() + } + }) + .catch((e) => {}) + } + return { + handleDelete + } +} +export default function (configs: IConfigs) { + const { getService, removeService, listFormat, rows = 10, params = {}, afterGetList, initParams, deleteTipKey = 'name' } = configs + const loading = ref(false) + const state: Base.IListState = reactive({ + list: [], + total: 0, + params: { + page: 1, + rows, + ...params + } + }) + if (initParams) { + state.params.params = handleSearchParam(initParams) + } + async function getList() { + loading.value = true + try { + const data = await getService(state.params) + loading.value = false + if (data.success) { + if (listFormat) { + state.list = listFormat(data.data.rows) + } else { + state.list = data.data.rows + } + state.total = data.data.total + afterGetList && afterGetList() + } + } catch (e) { + loading.value = false + } + } + const { handleDelete } = useDelete(removeService as IRemoveService, getList, deleteTipKey) + return { + loading, + ...toRefs(state), + getList, + handleDelete + } +} diff --git a/src/common/hooks/useWebsocket.ts b/src/common/hooks/useWebsocket.ts new file mode 100644 index 0000000..68100a2 --- /dev/null +++ b/src/common/hooks/useWebsocket.ts @@ -0,0 +1,22 @@ +import { onUnmounted, ref } from '@vue/composition-api' +import WebSocket from 'cmp-socket' +import { getToken } from 'utils/auth' +export default function (onmessage: { (): void }) { + const protocol = location.protocol === 'http:' ? 'ws' : 'wss' + let webSocket = new WebSocket({ + url: `${protocol}://${location.host}/api/sms/messageService`, + pingMsg: 'HeartBeat', + reConnectNum: 5, + params: getToken() + }) + if (onmessage && typeof onmessage === 'function') { + webSocket.onmessage = onmessage + } + onUnmounted(() => { + webSocket.Destroy() + webSocket = null + }) + return { + webSocket + } +} diff --git a/src/common/interface/index.ts b/src/common/interface/index.ts new file mode 100644 index 0000000..426fd53 --- /dev/null +++ b/src/common/interface/index.ts @@ -0,0 +1,22 @@ +export interface IListParams { + page: number + rows: number + simple?: boolean + params?: string +} + +export interface IAjaxData { + success: boolean + failed: boolean + solution: string + message: string + errorMsg: string + data: any + status: string +} + +export interface IDialogConfig { + visible: boolean + id?: number + vendorId?: number +} diff --git a/src/common/mixins/getGlobalSocket.js b/src/common/mixins/getGlobalSocket.js new file mode 100644 index 0000000..cc9f32b --- /dev/null +++ b/src/common/mixins/getGlobalSocket.js @@ -0,0 +1,10 @@ +export default { + computed: { + $webSocket() { + return this.$store.state.app.$webSocket + } + }, + created() { + this.$webSocket.onmessage = this.onmessage + } +} diff --git a/src/common/mixins/selection.js b/src/common/mixins/selection.js new file mode 100644 index 0000000..7b0e1b3 --- /dev/null +++ b/src/common/mixins/selection.js @@ -0,0 +1,12 @@ +export default { + data() { + return { + selectionIds: [] + } + }, + methods: { + handleSelectionChange(selections) { + this.selectionIds = selections.map((item) => item.id) + } + } +} diff --git a/src/common/mixins/webSocket.js b/src/common/mixins/webSocket.js new file mode 100644 index 0000000..09ee953 --- /dev/null +++ b/src/common/mixins/webSocket.js @@ -0,0 +1,29 @@ +import WebSocket from 'cmp-socket' +import { getToken } from 'utils/auth' +export default { + data() { + return { + webSocket: '' + } + }, + created() { + const protocol = location.protocol === 'http:' ? 'ws' : 'wss' + this.webSocket = new WebSocket({ + url: `${protocol}://${location.host}/api/sms/messageService`, + commonFun: this.messageCommonFun, + pingMsg: 'HeartBeat', + reConnectNum: 5, + params: getToken() + }) + if (this.onmessage && typeof this.onmessage === 'function') { + this.webSocket.onmessage = this.onmessage + } + }, + destroyed() { + this.webSocket.Destroy() + this.webSocket = null + }, + methods: { + messageCommonFun() {} + } +} diff --git a/src/common/types/shims-ajax.d.ts b/src/common/types/shims-ajax.d.ts new file mode 100644 index 0000000..413445a --- /dev/null +++ b/src/common/types/shims-ajax.d.ts @@ -0,0 +1,21 @@ +import {} from 'axios' +declare module 'axios' { + export interface AxiosInstance { + (config: AxiosRequestConfig): AxiosPromise + (url: string, config?: AxiosRequestConfig): AxiosPromise + defaults: AxiosRequestConfig + interceptors: { + request: AxiosInterceptorManager + response: AxiosInterceptorManager + } + getUri(config?: AxiosRequestConfig): string + request>(config: AxiosRequestConfig): Promise + get>(url: string, config?: AxiosRequestConfig): Promise + delete>(url: string, config?: AxiosRequestConfig): Promise + head>(url: string, config?: AxiosRequestConfig): Promise + options>(url: string, config?: AxiosRequestConfig): Promise + post>(url: string, data?: any, config?: AxiosRequestConfig): Promise + put>(url: string, data?: any, config?: AxiosRequestConfig): Promise + patch>(url: string, data?: any, config?: AxiosRequestConfig): Promise + } +} diff --git a/src/common/types/shims-global.d.ts b/src/common/types/shims-global.d.ts new file mode 100644 index 0000000..eefd756 --- /dev/null +++ b/src/common/types/shims-global.d.ts @@ -0,0 +1,54 @@ +declare module Base { + // ajax请求返回数据格式 + interface IResponseData { + success: boolean + failed: boolean + solution: string + message: string + errorMsg: string + data: T + status: string + } + // list接口返回数据格式 + interface IListData { + page: number + pages: number + total: number + rows: T[] + } + interface IResponseList extends IResponseData { + data: IListData + } + // 列表查询传参 + interface IListParams { + page?: number + rows?: number + simple?: boolean + params?: string + sorter?: string + } + // 模态框打开 + interface IDialog { + visible: boolean + record: T + } + // 搜索配置 + interface ISearchConfig { + label?: string + value: string + type: string + initValue?: string | number + sign?: string + data?: T[] + disabled?: boolean + onChange?: { + (val: string, listQuery: any): void + } + } + // 列表 + type IListState = { + list: T[] + total: number + params: IListParams + } +} diff --git a/src/common/types/shims-tsx.d.ts b/src/common/types/shims-tsx.d.ts new file mode 100644 index 0000000..c656c68 --- /dev/null +++ b/src/common/types/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from 'vue' + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any + } + } +} diff --git a/src/common/types/shims-vue.d.ts b/src/common/types/shims-vue.d.ts new file mode 100644 index 0000000..cb609c2 --- /dev/null +++ b/src/common/types/shims-vue.d.ts @@ -0,0 +1,10 @@ +import Vue from 'vue' + +declare module '*.vue' { + export default Vue +} +declare module 'vue/types/vue' { + interface Vue { + $tools: any + } +} diff --git a/src/common/types/shims.tools.d.ts b/src/common/types/shims.tools.d.ts new file mode 100644 index 0000000..a67a3d0 --- /dev/null +++ b/src/common/types/shims.tools.d.ts @@ -0,0 +1,8 @@ +declare module 'cmp-basic' +declare module 'cmp-echarts' +declare module 'cmp-element' +declare module 'cmp-socket' +declare module 'cmp-element/utils' +declare module 'vite-plugin-svg-icons' +declare module 'services' +declare module 'v-viewer/src/component.vue' diff --git a/src/common/utils/auth.js b/src/common/utils/auth.js new file mode 100644 index 0000000..5e2f118 --- /dev/null +++ b/src/common/utils/auth.js @@ -0,0 +1,17 @@ +/** + * Created by HaijunZhang on 2018/11/16. + */ +import Cookies from 'js-cookie' +import { tokenKey } from '@/config' + +export function getToken() { + return Cookies.get(tokenKey) +} + +export function setToken(token) { + return Cookies.set(tokenKey, token) +} + +export function removeToken() { + return Cookies.remove(tokenKey) +} diff --git a/src/common/utils/autoImport.ts b/src/common/utils/autoImport.ts new file mode 100644 index 0000000..6bbf23f --- /dev/null +++ b/src/common/utils/autoImport.ts @@ -0,0 +1,30 @@ +// 同步加载 +export function getModules(files: any) { + // 当files为方法时为webapock,为对象时为vite + const isWebpack = typeof files === 'function' + // 路径包含compoennts的是内置组件不向外暴露 + const modules = (isWebpack ? files.keys() : Object.keys(files)) + .filter((item: string) => !item.includes('components')) + .reduce((modules: any, modulePath: string) => { + // set './app.vue' => 'app' + const moduleName = modulePath.replace(/^\.\S*\/(.*)\.\w+$/, '$1') + const value = isWebpack ? files(modulePath) : files[modulePath] + modules[moduleName] = value.default + return modules + }, {}) + return modules +} +// 异步加载 +export function getAsyncModules(files: any, asyncImport: any) { + // 当files为方法时为webapock,为对象时为vite + const isWebpack = typeof files === 'function' + const modules = (isWebpack ? files.keys() : Object.keys(files)) + .filter((item: string) => !item.includes('components')) + .reduce((modules: any, modulePath: string) => { + // set './app.vue' => 'app' + const moduleName = modulePath.replace(/^\.\S*\/(.*)\.\w+$/, '$1') + modules[moduleName] = isWebpack ? asyncImport(modulePath) : files[moduleName] + return modules + }, {}) + return modules +} diff --git a/src/common/utils/crypto.js b/src/common/utils/crypto.js new file mode 100644 index 0000000..01e841a --- /dev/null +++ b/src/common/utils/crypto.js @@ -0,0 +1,48 @@ +/** + * Created by HaijunZhang on 2018/11/19. + */ +import CryptoJS from 'crypto-js' + +const defaultKey = CryptoJS.enc.Utf8.parse(decryptByBase64('Qm9jbG91ZENNUFY1ODchIQ==')) +const iv = CryptoJS.enc.Utf8.parse(decryptByBase64('QmV5b25kQ01QVjU4NyEhIQ==')) +const options = { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 +} + +// 加密方法 +export function encrypt(word, key = defaultKey) { + if (typeof word === 'object') { + word = JSON.stringify(word) + } + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, options) + return encrypted.toString() +} + +// 解密方法 +export function decrypt(word, key = defaultKey) { + const decrypt = CryptoJS.AES.decrypt(word, key, options) + return decrypt.toString(CryptoJS.enc.Utf8) +} + +// base64解码 +function decryptByBase64(word) { + const base64string = CryptoJS.enc.Base64.parse(word) + return CryptoJS.enc.Utf8.stringify(base64string) +} + +// base64编码 +function encryptByBase64(word) { + const src = CryptoJS.enc.Utf8.parse(word) + const base64string = CryptoJS.enc.Base64.stringify(src) + return base64string +} + +export default { + encrypt, + decrypt, + encryptByBase64, + decryptByBase64 +} diff --git a/src/common/utils/day.js b/src/common/utils/day.js new file mode 100644 index 0000000..8a9ee0a --- /dev/null +++ b/src/common/utils/day.js @@ -0,0 +1,5 @@ +import dayjs from 'dayjs' +import 'dayjs/locale/zh-cn' +dayjs.locale('zh-cn') + +export default dayjs diff --git a/src/common/utils/index.js b/src/common/utils/index.js new file mode 100644 index 0000000..3d36cfb --- /dev/null +++ b/src/common/utils/index.js @@ -0,0 +1,89 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import Clipboard from 'clipboard' +import { getToken } from 'utils/auth' +import dayjs from './day' + +export function wrapperParams(data) { + return data + // return { params: JSON.stringify(data) } +} +export const formatEqParams = (params) => { + return { page: 1, rows: 9999, params: JSON.stringify([{ param: params, sign: 'EQ' }]) } +} +export const copyText = (text, event, successCallback, errorCallback) => { + const clipboard = new Clipboard(event.target, { + text: () => text + }) + clipboard.on('success', () => { + successCallback && successCallback() + clipboard.destroy() + }) + clipboard.on('error', () => { + errorCallback && errorCallback() + clipboard.destroy() + }) + clipboard.onClick(event) +} +// export const downloadFile = (url, params = {}) => { +// request +// .get(url, { +// // headers: { 'Content-Type': params.fileFormat }, +// responseType: 'blob', +// // params: wrapperParams(params), +// options: { +// isBlob: true +// } +// }) +// .then(data => { +// var ele = document.createElement('a') // 创建下载链接 +// ele.download = 'filename' // 设置下载的名称 +// ele.style.display = 'none' // 隐藏的可下载链接 +// // 字符内容转变成blob地址 +// const blob = new Blob([data]) +// ele.href = URL.createObjectURL(blob) +// // 绑定点击时间 +// document.body.appendChild(ele) +// ele.click() +// // 然后移除 +// document.body.removeChild(ele) +// }) +// } +export const downloadFile = (url, params = {}) => { + let str = '' + Object.keys(params).forEach((item) => { + str += `&${item}=${params[item]}` + }) + window.location.href = encodeURI(`/api${url}?token=${getToken()}${str}`) +} +export const getQuery = (hash) => { + const queryArr = hash.split('?') + if (queryArr.length === 1) { + return {} + } + const query = {} + queryArr[1].split('&').forEach((item) => { + const [key, value] = item.split('=') + query[key] = value + }) + return query +} +// ip比较大小 +export const compareIp = (ip1, ip2) => { + const ip1Arr = ip1.split('.') + const ip2Arr = ip2.split('.') + let flag + for (let i = 0; i < 4; i++) { + if (Number(ip1Arr[i]) > Number(ip2Arr[i])) { + flag = 0 + break + } else if (Number(ip1Arr[i]) < Number(ip2Arr[i])) { + flag = 1 + } + } + return flag +} +export function makeTimeStamp() { + return dayjs().format('YYYYMMDDHHmmss') +} diff --git a/src/common/utils/request.js b/src/common/utils/request.js new file mode 100644 index 0000000..df1a63f --- /dev/null +++ b/src/common/utils/request.js @@ -0,0 +1,119 @@ +/** + * Created by Zhang Haijun on 2017/8/24. + * axios#request(config) + * axios#get(url[, config]) + * axios#delete(url[, config]) + * axios#head(url[, config]) + * axios#options(url[, config]) + * axios#post(url[, data[, config]]) + * axios#put(url[, data[, config]]) + * axios#patch(url[, data[, config]]) + */ +import axios from 'axios' +import NProgress from 'nprogress' +import qs from 'qs' +import 'nprogress/nprogress.css' +import { Notification, MessageBox } from 'element-ui' +import { getToken } from 'utils/auth' +import store from '@/store' + +const codeMessage = { + 200: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +const axiosInstance = axios.create({ + baseURL: '/api', + headers: { 'Content-Type': 'application/json', BsmAjaxHeader: true }, + timeout: 20000, + paramsSerializer: (params) => { + return qs.stringify(params, { arrayFormat: 'indices' }) + } +}) +// 请求完成回调 +const finishCallback = function () { + NProgress.done() +} +// 报错处理 +const handleError = function (response) { + if (!response) return // 容错处理 + const errorText = codeMessage[response.status] || response.statusText + Notification({ + type: 'error', + title: `请求错误 ${response.status}: ${response.config.url}`, + message: errorText + }) + const error = new Error(errorText) + error.name = response.status + error.response = response + throw error +} +axiosInstance.interceptors.request.use( + (config) => { + const { + headers, + headers: { options = {} } + } = config + NProgress.start() + if (config.method === 'get') { + // 清除get缓存 + config.url = `${config.url}?t=${new Date().getTime()}` + } else if (headers['Content-Type'] === 'application/x-www-form-urlencoded') { + config.data = qs.stringify(config.data || {}) + } + config.headers.token = getToken() + delete config.headers.options + config.options = options + return config + }, + (error) => { + return Promise.reject(error) + } +) +axiosInstance.interceptors.response.use( + (data) => { + // const requestKey = getRequestIdentify(data.config); + // removePending(requestKey); + finishCallback() + const responseData = data.data + const { options } = data.config + if (!responseData.success) { + switch (responseData.status) { + case '402': + // store.dispatch('permission/ResetRoutes') + // location.href = '/#/license' + break + case '401': + case '509': + store.dispatch('permission/ResetRoutes') + break + default: + } + if (!options.ignoreError) { + Notification({ + message: responseData.message || responseData.data, + type: 'error' + }) + } + } + return responseData + }, + (error) => { + finishCallback() + handleError(error.response) + return Promise.reject(error) + } +) +export default axiosInstance diff --git a/src/common/utils/resolvePath.js b/src/common/utils/resolvePath.js new file mode 100644 index 0000000..d4b4680 --- /dev/null +++ b/src/common/utils/resolvePath.js @@ -0,0 +1,21 @@ +/** + * Created by HaijunZhang on 2018/12/10. + */ +// import path from 'path'; +import { startsWith } from 'lodash-es' +export function isExternalLink(path) { + return /^(http:|https:|mailto:|tel:)\/\//.test(path) +} +export function resolvePath(basePath, routePath) { + if (isExternalLink(routePath)) { + return routePath + } + // return path.resolve(basePath, routePath); + const basePathArr = basePath.split('/') + const routePathArr = routePath.split('/') + if (startsWith(routePath, '/')) { + return routePath + } + const res = [...basePathArr, ...routePathArr].filter((item) => item) + return `/${res.join('/')}` +} diff --git a/src/common/utils/uploadFile.js b/src/common/utils/uploadFile.js new file mode 100644 index 0000000..3185dfc --- /dev/null +++ b/src/common/utils/uploadFile.js @@ -0,0 +1,88 @@ +// websocket文件上传 +import { getToken } from './auth' +export default function uploadFile(item, callback, errorCallBack) { + const protocol = location.protocol === 'http:' ? 'ws' : 'wss' + item.isReady = true + const socket = new WebSocket(`${protocol}://${location.host}/api/sms/uploadService`, getToken()) + let i = 0 + let startSize = 0, + endSize = 0 + const paragraph = 4 * 1024 * 1024 // 以4MB为一个分片 + const count = parseInt(item.file.size / paragraph) + 1 + socket.onopen = function () { + item.isUploading = true + socket.send( + JSON.stringify({ + filename: item.file.name, + upload: 'file' + }) + ) + // 取消上传 + item.cancel = function () { + item.progress = 0 + socket.send( + JSON.stringify({ + UPLOAD_CANCEL: 'UPLOAD_CANCEL' + }) + ) + item.isUploading = false + } + } + socket.onmessage = function (event) { + const sendFile = function () { + if (startSize < item.file.size) { + let blob + endSize += paragraph + if (item.file.webkitSlice) { + blob = item.file.webkitSlice(startSize, endSize) + } else if (item.file.mozSlice) { + blob = item.file.mozSlice(startSize, endSize) + } else { + blob = item.file.slice(startSize, endSize) + } + const reader = new FileReader() + reader.readAsArrayBuffer(blob) + + reader.onload = function loaded(evt) { + const result = evt.target.result + i++ + const isok = (i / count) * 100 + item.progress = parseInt(isok) + startSize = endSize + socket.send(result) + } + } else { + item.progress = 100 + socket.send( + JSON.stringify({ + sendover: 'sendover' + }) + ) + } + } + item.isUploading = true + item.isCancel = false + const obj = JSON.parse(event.data) + if (obj.category == 'UPLOAD_ACK') { + item.filePath = obj.content + sendFile() + } else if (obj.category == 'UPLOAD') { + if (obj.content == 'SAVE_FAILURE') { + item.isUploading = false + errorCallBack(item) + } else if (obj.content == 'SAVE_SUCCESS') { + sendFile() + } else if (obj.content == 'TRUE') { + callback(item) + item.isReady = true + item.isSuccess = true + item.isUploading = false + socket.close() + } + } else if (obj.category == 'UPLOAD_CANCEL') { + item.progress = 0 + item.isCancel = true + socket.close() + } + } +} diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..c41ea91 --- /dev/null +++ b/src/config.js @@ -0,0 +1,16 @@ +/** + * 启用缓存加载速度会变快,但是数据安全性和实时性降低 + */ +// 是否启用权限本地缓存 +export const enablePermissionStorage = false +// 本地缓存的菜单key值 +export const menuKey = 'cmcMenuData' +// 是否启用用户本地缓存 +export const enableUserStorage = false +// 本地缓存的用户key值 +export const userKey = 'cmcUserData' +// 本地存储的cookie kye值 +export const tokenKey = 'CMC_TOKEN' +// 最大缓存组件实例数 +export const cacheViewMax = 15 +export const baseUrl = '/sms-web' diff --git a/src/errorLog.js b/src/errorLog.js new file mode 100644 index 0000000..8730584 --- /dev/null +++ b/src/errorLog.js @@ -0,0 +1,29 @@ +/** + * Created by HaijunZhang on 2019/10/21. + */ +import Vue from 'vue' +import store from './store' +import request from 'utils/request' + +const { host, hash } = location +const sendLog = (msg, vm, info, level) => { + request.post('http://10.20.51.92:7001/log', { + service: 'CMC', + level, + username: store.state.app.userData.username, + host, + view: hash, + msg: `${msg}`, + info + }) +} +if (process.env.NODE_ENV === 'development') { + Vue.config.errorHandler = function (err, vm, info) { + console.error(err, vm, info) + // sendLog(err, vm, info, 'error') + } + Vue.config.warnHandler = function (msg, vm, info) { + console.warn(msg, vm, info) + // sendLog(msg, vm, info, 'warning') + } +} diff --git a/src/filters/common.js b/src/filters/common.js new file mode 100644 index 0000000..f64cfd5 --- /dev/null +++ b/src/filters/common.js @@ -0,0 +1,40 @@ +export function numberFilter(value, digit) { + return value.toFixed(digit) +} + +// 正反编译 +export function booleanFilter(value) { + const obj = { + true: '是', + false: '否', + 1: '是', + 0: '否', + YES: '是', + NO: '否' + } + return obj[value] || value +} + +export function sexFilter(value) { + const obj = { + true: '男', + false: '女' + } + return obj[value] +} + +export function generalStatusFilter(value, type) { + const cnUserData = { + NORMAL: '正常', + ABNORMAL: '已冻结', + EXPIRED: '已过期', + LOGOUT: '已注销' + } + const colorMap = { + ABNORMAL: 'danger', + NORMAL: 'success', + EXPIRED: 'warning', + LOGOUT: 'primary' + } + return type == 'color' ? colorMap[value] : cnUserData[value] +} diff --git a/src/icons/index.js b/src/icons/index.js new file mode 100644 index 0000000..09c1f17 --- /dev/null +++ b/src/icons/index.js @@ -0,0 +1,3 @@ +const req = require.context('./svg', false, /\.svg$/) +const requireAll = (requireContext) => requireContext.keys().map(requireContext) +requireAll(req) diff --git a/src/icons/svg/svg-about.svg b/src/icons/svg/svg-about.svg new file mode 100644 index 0000000..06e0426 --- /dev/null +++ b/src/icons/svg/svg-about.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-basic-resource.svg b/src/icons/svg/svg-basic-resource.svg new file mode 100644 index 0000000..89ebe8b --- /dev/null +++ b/src/icons/svg/svg-basic-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-bill.svg b/src/icons/svg/svg-bill.svg new file mode 100644 index 0000000..1f1e243 --- /dev/null +++ b/src/icons/svg/svg-bill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-business.svg b/src/icons/svg/svg-business.svg new file mode 100644 index 0000000..96a259c --- /dev/null +++ b/src/icons/svg/svg-business.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-compute-resource.svg b/src/icons/svg/svg-compute-resource.svg new file mode 100644 index 0000000..4314add --- /dev/null +++ b/src/icons/svg/svg-compute-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-copy.svg b/src/icons/svg/svg-copy.svg new file mode 100644 index 0000000..ce5f78a --- /dev/null +++ b/src/icons/svg/svg-copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-db.svg b/src/icons/svg/svg-db.svg new file mode 100644 index 0000000..51a8173 --- /dev/null +++ b/src/icons/svg/svg-db.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-disabled.svg b/src/icons/svg/svg-disabled.svg new file mode 100644 index 0000000..d74839d --- /dev/null +++ b/src/icons/svg/svg-disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-dot.svg b/src/icons/svg/svg-dot.svg new file mode 100644 index 0000000..1b8463f --- /dev/null +++ b/src/icons/svg/svg-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-host.svg b/src/icons/svg/svg-host.svg new file mode 100644 index 0000000..ad6146b --- /dev/null +++ b/src/icons/svg/svg-host.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-image.svg b/src/icons/svg/svg-image.svg new file mode 100644 index 0000000..ddc41bd --- /dev/null +++ b/src/icons/svg/svg-image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-middle.svg b/src/icons/svg/svg-middle.svg new file mode 100644 index 0000000..1cb263b --- /dev/null +++ b/src/icons/svg/svg-middle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-network-resource.svg b/src/icons/svg/svg-network-resource.svg new file mode 100644 index 0000000..f452779 --- /dev/null +++ b/src/icons/svg/svg-network-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-operate.svg b/src/icons/svg/svg-operate.svg new file mode 100644 index 0000000..bb6f80c --- /dev/null +++ b/src/icons/svg/svg-operate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-ops-analysis.svg b/src/icons/svg/svg-ops-analysis.svg new file mode 100644 index 0000000..26c4eb0 --- /dev/null +++ b/src/icons/svg/svg-ops-analysis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-order.svg b/src/icons/svg/svg-order.svg new file mode 100644 index 0000000..a67b375 --- /dev/null +++ b/src/icons/svg/svg-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-permission.svg b/src/icons/svg/svg-permission.svg new file mode 100644 index 0000000..67182a7 --- /dev/null +++ b/src/icons/svg/svg-permission.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-port.svg b/src/icons/svg/svg-port.svg new file mode 100644 index 0000000..b8b5a98 --- /dev/null +++ b/src/icons/svg/svg-port.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-product.svg b/src/icons/svg/svg-product.svg new file mode 100644 index 0000000..b2fc579 --- /dev/null +++ b/src/icons/svg/svg-product.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-repository.svg b/src/icons/svg/svg-repository.svg new file mode 100644 index 0000000..043a59e --- /dev/null +++ b/src/icons/svg/svg-repository.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-resource-interface.svg b/src/icons/svg/svg-resource-interface.svg new file mode 100644 index 0000000..a440486 --- /dev/null +++ b/src/icons/svg/svg-resource-interface.svg @@ -0,0 +1 @@ +画板 1 \ No newline at end of file diff --git a/src/icons/svg/svg-resource-manage.svg b/src/icons/svg/svg-resource-manage.svg new file mode 100644 index 0000000..b636fb0 --- /dev/null +++ b/src/icons/svg/svg-resource-manage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-resource-monitor.svg b/src/icons/svg/svg-resource-monitor.svg new file mode 100644 index 0000000..de2fd08 --- /dev/null +++ b/src/icons/svg/svg-resource-monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-resource-ops.svg b/src/icons/svg/svg-resource-ops.svg new file mode 100644 index 0000000..7631e8d --- /dev/null +++ b/src/icons/svg/svg-resource-ops.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-screen.svg b/src/icons/svg/svg-screen.svg new file mode 100644 index 0000000..1a18939 --- /dev/null +++ b/src/icons/svg/svg-screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-security.svg b/src/icons/svg/svg-security.svg new file mode 100644 index 0000000..649f460 --- /dev/null +++ b/src/icons/svg/svg-security.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-service-ops.svg b/src/icons/svg/svg-service-ops.svg new file mode 100644 index 0000000..cd5d63c --- /dev/null +++ b/src/icons/svg/svg-service-ops.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-setting.svg b/src/icons/svg/svg-setting.svg new file mode 100644 index 0000000..c32d709 --- /dev/null +++ b/src/icons/svg/svg-setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-storage-resource.svg b/src/icons/svg/svg-storage-resource.svg new file mode 100644 index 0000000..f8a773e --- /dev/null +++ b/src/icons/svg/svg-storage-resource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-task-platform.svg b/src/icons/svg/svg-task-platform.svg new file mode 100644 index 0000000..9e3d0bc --- /dev/null +++ b/src/icons/svg/svg-task-platform.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/svg-vm.svg b/src/icons/svg/svg-vm.svg new file mode 100644 index 0000000..e97a9ec --- /dev/null +++ b/src/icons/svg/svg-vm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lang/en.js b/src/lang/en.js new file mode 100644 index 0000000..b25ff61 --- /dev/null +++ b/src/lang/en.js @@ -0,0 +1,12 @@ +export default { + lang: { + en: 'English', + zh: 'Chinese' + }, + operate: { + search: 'Search', + create: 'Create', + edit: 'Edit', + delete: 'Delete' + } +} diff --git a/src/lang/index.js b/src/lang/index.js new file mode 100644 index 0000000..f291bab --- /dev/null +++ b/src/lang/index.js @@ -0,0 +1,29 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang +import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang +import enLocale from './en' +import zhLocale from './zh' + +Vue.use(VueI18n) + +const messages = { + en: { + ...enLocale, + ...elementEnLocale + }, + zh: { + ...zhLocale, + ...elementZhLocale + } +} +export function getLanguage() { + const chooseLanguage = localStorage.getItem('language') + return chooseLanguage || 'zh' +} +const i18n = new VueI18n({ + locale: getLanguage(), + messages +}) + +export default i18n diff --git a/src/lang/zh.js b/src/lang/zh.js new file mode 100644 index 0000000..3435403 --- /dev/null +++ b/src/lang/zh.js @@ -0,0 +1,12 @@ +export default { + lang: { + en: '英文', + zh: '中文' + }, + operate: { + search: '搜索', + create: '新增', + edit: '编辑', + delete: '删除' + } +} diff --git a/src/layouts/app.vue b/src/layouts/app.vue new file mode 100644 index 0000000..a16aaec --- /dev/null +++ b/src/layouts/app.vue @@ -0,0 +1,18 @@ + + diff --git a/src/layouts/components/Header.vue b/src/layouts/components/Header.vue new file mode 100644 index 0000000..14439bc --- /dev/null +++ b/src/layouts/components/Header.vue @@ -0,0 +1,79 @@ +/** * Created by HaijunZhang on 2019/12/18. */ + + + + + diff --git a/src/layouts/components/LevelBar.vue b/src/layouts/components/LevelBar.vue new file mode 100644 index 0000000..aa693a6 --- /dev/null +++ b/src/layouts/components/LevelBar.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/layouts/components/SiteMessage.vue b/src/layouts/components/SiteMessage.vue new file mode 100644 index 0000000..44a6b87 --- /dev/null +++ b/src/layouts/components/SiteMessage.vue @@ -0,0 +1,157 @@ + + + diff --git a/src/layouts/components/SystemTip.vue b/src/layouts/components/SystemTip.vue new file mode 100644 index 0000000..db81ece --- /dev/null +++ b/src/layouts/components/SystemTip.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/layouts/components/TagsView/ScrollPanel.vue b/src/layouts/components/TagsView/ScrollPanel.vue new file mode 100644 index 0000000..ef125cd --- /dev/null +++ b/src/layouts/components/TagsView/ScrollPanel.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/layouts/components/TagsView/SelectRound.vue b/src/layouts/components/TagsView/SelectRound.vue new file mode 100644 index 0000000..85bf575 --- /dev/null +++ b/src/layouts/components/TagsView/SelectRound.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/layouts/components/TagsView/index.vue b/src/layouts/components/TagsView/index.vue new file mode 100644 index 0000000..5afb464 --- /dev/null +++ b/src/layouts/components/TagsView/index.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/src/layouts/components/TagsView/index_backup.vue b/src/layouts/components/TagsView/index_backup.vue new file mode 100644 index 0000000..38fce2b --- /dev/null +++ b/src/layouts/components/TagsView/index_backup.vue @@ -0,0 +1,260 @@ + + + + + + + diff --git a/src/layouts/components/ThirdMenu.vue b/src/layouts/components/ThirdMenu.vue new file mode 100644 index 0000000..a465d8a --- /dev/null +++ b/src/layouts/components/ThirdMenu.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/layouts/components/headerMenu.vue b/src/layouts/components/headerMenu.vue new file mode 100644 index 0000000..149e4aa --- /dev/null +++ b/src/layouts/components/headerMenu.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/layouts/components/langSelect.vue b/src/layouts/components/langSelect.vue new file mode 100644 index 0000000..88cef69 --- /dev/null +++ b/src/layouts/components/langSelect.vue @@ -0,0 +1,34 @@ + + + + diff --git a/src/layouts/components/lockScreen.vue b/src/layouts/components/lockScreen.vue new file mode 100644 index 0000000..a8d2901 --- /dev/null +++ b/src/layouts/components/lockScreen.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/layouts/components/personal/InfoDialog.vue b/src/layouts/components/personal/InfoDialog.vue new file mode 100644 index 0000000..8ad6a25 --- /dev/null +++ b/src/layouts/components/personal/InfoDialog.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/layouts/components/personal/index.vue b/src/layouts/components/personal/index.vue new file mode 100644 index 0000000..0e4dc86 --- /dev/null +++ b/src/layouts/components/personal/index.vue @@ -0,0 +1,175 @@ + + + diff --git a/src/layouts/components/process.vue b/src/layouts/components/process.vue new file mode 100644 index 0000000..f138fa0 --- /dev/null +++ b/src/layouts/components/process.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/layouts/components/rightContent.vue b/src/layouts/components/rightContent.vue new file mode 100644 index 0000000..cc235a2 --- /dev/null +++ b/src/layouts/components/rightContent.vue @@ -0,0 +1,38 @@ +/** * Created by HaijunZhang on 2019/12/18. */ + + + + + diff --git a/src/layouts/components/sidebar/Link.vue b/src/layouts/components/sidebar/Link.vue new file mode 100644 index 0000000..42845d3 --- /dev/null +++ b/src/layouts/components/sidebar/Link.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/layouts/components/sidebar/MenuItem.vue b/src/layouts/components/sidebar/MenuItem.vue new file mode 100644 index 0000000..7af8c61 --- /dev/null +++ b/src/layouts/components/sidebar/MenuItem.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/layouts/components/sidebar/OperateBtn.vue b/src/layouts/components/sidebar/OperateBtn.vue new file mode 100644 index 0000000..b6d0fa0 --- /dev/null +++ b/src/layouts/components/sidebar/OperateBtn.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/layouts/components/sidebar/baseMenu.vue b/src/layouts/components/sidebar/baseMenu.vue new file mode 100644 index 0000000..18bc81f --- /dev/null +++ b/src/layouts/components/sidebar/baseMenu.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/layouts/components/sidebar/sidebar.vue b/src/layouts/components/sidebar/sidebar.vue new file mode 100644 index 0000000..e3363bc --- /dev/null +++ b/src/layouts/components/sidebar/sidebar.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/layouts/components/sidebar/sidebarItem.vue b/src/layouts/components/sidebar/sidebarItem.vue new file mode 100644 index 0000000..310dba4 --- /dev/null +++ b/src/layouts/components/sidebar/sidebarItem.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/layouts/components/sidebar/theme.scss b/src/layouts/components/sidebar/theme.scss new file mode 100644 index 0000000..66e68eb --- /dev/null +++ b/src/layouts/components/sidebar/theme.scss @@ -0,0 +1,15 @@ +.sidebar-menu { + border: 0; + background: inherit; + ::v-deep { + .el-menu { + background: inherit; + } + .el-menu-item, + .el-menu-item i, + .el-submenu__title, + .el-submenu__title i { + color: inherit; + } + } +} diff --git a/src/layouts/home.vue b/src/layouts/home.vue new file mode 100644 index 0000000..69c9766 --- /dev/null +++ b/src/layouts/home.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/layouts/redirect.vue b/src/layouts/redirect.vue new file mode 100644 index 0000000..ec4b6b7 --- /dev/null +++ b/src/layouts/redirect.vue @@ -0,0 +1,13 @@ + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..70b8942 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,70 @@ +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import './public-path' +import Vue from 'vue' +import router from './router/index' +import store from './store' +import startPermission from './permission' +import './errorLog' +import './common/components/index' +import ElementUI from 'element-ui' +import '@/common/css/element-variables.scss' +// @ts-ignore +import App from './App.vue' +import 'vue2-animate/dist/vue2-animate.min.css' +import CmpEcharts from 'cmp-echarts' +import 'cmp-echarts/lib/cmp-echarts.css' +import './common/directive' +// import i18n from './lang' // internationalization +import CmpElement from 'cmp-element' +import 'cmp-element/lib/cmp-element.css' +import './icons' +import VueCompositionAPI from '@vue/composition-api' +import rules from '@/validate/index' +import actions from './shared/action' + +Vue.use(ElementUI, { size: 'small' }) +Vue.use(VueCompositionAPI) +Vue.use(CmpElement, { rules }) +Vue.use(CmpEcharts) +Vue.config.productionTip = false + +let instance: any = null +function render(props: any = {}) { + const { mainRouter = router, container, appPath = '' } = props + instance = new Vue({ + data: { + mainRouter + }, + router, + store, + render: (h) => h(App) + }).$mount(container ? container.querySelector('#app') : '#app') + store.commit('SET_APP_PATH', appPath) +} +if (!(window as any).__POWERED_BY_QIANKUN__) { + console.log('独立运行子应用') + startPermission() + render() +} +export async function bootstrap() { + console.log('sms app bootstraped') +} + +export async function mount(props: any) { + console.log('sms app mounted') + render(props) + actions.init(props, (state: any) => { + const { permissions, userData } = state + userData && store.commit('SET_USERDATA', userData) + if (!store.getters.addRoutes && permissions) { + store.dispatch('permission/GenerateRoutes') + } + }) +} + +export async function unmount() { + instance.$destroy() + instance.$el.innerHTML = '' + instance = null +} diff --git a/src/main.vite.ts b/src/main.vite.ts new file mode 100644 index 0000000..3a1a407 --- /dev/null +++ b/src/main.vite.ts @@ -0,0 +1,68 @@ +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import './public-path' +import Vue from 'vue' +import router from './router/index' +import store from './store' +import startPermission from './permission' +import './errorLog' +import './common/components/index' +import ElementUI from 'element-ui' +import 'element-ui/lib/theme-chalk/index.css' +// @ts-ignore +import App from './App.vue' +import 'vue2-animate/dist/vue2-animate.min.css' +import CmpEcharts from 'cmp-echarts' +import 'cmp-echarts/lib/cmp-echarts.css' +import './filters/common' +import './common/directive' +import i18n from './lang' // internationalization +import CmpElement from 'cmp-element' +import 'cmp-element/lib/cmp-element.css' +import 'vite-plugin-svg-icons/register' +import actions from './shared/action' +import VueCompositionAPI from '@vue/composition-api' + +Vue.use(ElementUI, { size: 'small', i18n: (key: any, value: any) => i18n.t(key, value) }) +Vue.use(VueCompositionAPI) +Vue.use(CmpElement) +Vue.use(CmpEcharts) +Vue.config.productionTip = false +Vue.config.devtools = true +let instance: any = null +function render(props: any = {}) { + const { appPath = '', container } = props + instance = new Vue({ + router, + store, + render: (h) => h(App) + }).$mount(container ? container.querySelector('#app') : '#app') + store.commit('SET_APP_PATH', appPath) +} +if (!(window as any).__POWERED_BY_QIANKUN__) { + console.log('独立运行子应用') + startPermission() + render() +} + +export async function bootstrap() { + console.log('cmp app bootstraped') +} + +export async function mount(props: any) { + console.log('cmp app mounted') + render(props) + actions.init(props, (state: any) => { + const { permissions, userData } = state + userData && store.commit('SET_USERDATA', userData) + if (!store.getters.addRoutes && permissions) { + store.dispatch('permission/GenerateRoutes') + } + }) +} + +export async function unmount() { + instance.$destroy() + instance.$el.innerHTML = '' + instance = null +} diff --git a/src/mock/common.js b/src/mock/common.js new file mode 100644 index 0000000..5544288 --- /dev/null +++ b/src/mock/common.js @@ -0,0 +1,26 @@ +/** + * Created by Zhang Haijun on 2018/3/20. + */ +import Mock from 'mockjs' +const commonData = { + success: true, + message: '查询成功', + data: [] +} +export default { + getList(template, count = 10, total = 50) { + const list = [] + for (let i = 0; i < count; i++) { + list.push(Mock.mock(template)) + } + commonData.data = { + rows: list, + total: total + } + return commonData + }, + getDetail(template) { + commonData.data = Mock.mock(template) + return commonData + } +} diff --git a/src/mock/index.js b/src/mock/index.js new file mode 100644 index 0000000..6f86511 --- /dev/null +++ b/src/mock/index.js @@ -0,0 +1,4 @@ +import Mock from 'mockjs' +import taskApi from './task' +Mock.mock(/\/list$/, 'post', taskApi.getTaskList) +Mock.mock(/\/api\/task\/detail/, 'get', taskApi.getTaskDetail) diff --git a/src/mock/task.js b/src/mock/task.js new file mode 100644 index 0000000..93ac00c --- /dev/null +++ b/src/mock/task.js @@ -0,0 +1,28 @@ +/** + * Created by Zhang Haijun on 2018/3/20. + */ +import common from './common' + +export default { + getTaskList() { + const template = { + id: '@increment', + name: '@title', + creator: '@cname', + mender: '@cname', + gmtCreate: "@datetime('yyyy-MM-dd HH:mm:ss')", + gmtModify: "@datetime('yyyy-MM-dd HH:mm:ss')" + } + return common.getList(template) + }, + getTaskDetail() { + const template = { + id: '@increment', + name: '@title', + taskGroup: 'DEVICE_INIT', + graph: + '{"nodes":[{"catalog":"START","name":"开始节点","location":{"x":80,"y":140},"nodeId":1521013231471},{"catalog":"END","name":"结束节点","location":{"x":800,"y":140},"nodeId":1521013232191},{"catalog":"TASK","retryTime":3,"params":{"database":"MySQL","dbdriver":"com.mysql.jdbc.Driver","password":"onceas","scriptId":168,"groupId":[3],"category":"SQL","content":"select * from user","username":"root"},"timeout":600,"target":[{"url":"10.20.2.48:3306/bsm_dev"}],"intervals":10,"failover":false,"name":"test","location":{"x":400,"y":137},"sudo":false,"category":"DATABASE","nodeId":1521013242696,"identId":""}],"links":[{"nodeZid":1521013242696,"linetype":"Link","nodeAid":1521013231471},{"nodeZid":1521013232191,"linetype":"Link","nodeAid":1521013242696}]}' + } + return common.getDetail(template) + } +} diff --git a/src/models/depart.d.ts b/src/models/depart.d.ts new file mode 100644 index 0000000..df7f241 --- /dev/null +++ b/src/models/depart.d.ts @@ -0,0 +1,4 @@ +export interface IDepart { + id?: number + parentId?: number +} diff --git a/src/models/service.d.ts b/src/models/service.d.ts new file mode 100644 index 0000000..02d4db3 --- /dev/null +++ b/src/models/service.d.ts @@ -0,0 +1,19 @@ +export interface IService { + id?: number + code?: string + name?: string + status?: string + iconId?: number + catalogId?: number + checked?: boolean + billable?: boolean + billPolicy?: string + basicPrice?: string + vendorType?: string + discount?: number + templateId?: number | string + templateName?: string + icon?: string + isPublic?: boolean + flowList?: any +} diff --git a/src/models/sku.d.ts b/src/models/sku.d.ts new file mode 100644 index 0000000..6a05b24 --- /dev/null +++ b/src/models/sku.d.ts @@ -0,0 +1,6 @@ +export interface ISku { + id?: number + name: string + status: string + content: string +} diff --git a/src/models/sla.d.ts b/src/models/sla.d.ts new file mode 100644 index 0000000..af3b9a2 --- /dev/null +++ b/src/models/sla.d.ts @@ -0,0 +1,7 @@ +export interface ISla { + id?: number + name?: string + status?: string + content?: string + catalogId?: number +} diff --git a/src/models/tenant.d.ts b/src/models/tenant.d.ts new file mode 100644 index 0000000..a292783 --- /dev/null +++ b/src/models/tenant.d.ts @@ -0,0 +1,12 @@ +export interface ITenant { + id?: number + account: string + name: string + status: string + discount: number + groupCode: string + password: string + remark: string + departId: number | undefined + departIds: number[] | string +} diff --git a/src/models/user.d.ts b/src/models/user.d.ts new file mode 100644 index 0000000..8c082c3 --- /dev/null +++ b/src/models/user.d.ts @@ -0,0 +1,19 @@ +export interface IUser { + id?: number + account: string + name: string + status: string + isManager: boolean + sex: boolean + password: string + email: string + mobile: string + dingtalk: string + wechat: string + company: string + jobNumber: string + tenantId: number + remark: string + departId: number | undefined + departIds: number[] +} diff --git a/src/permission.js b/src/permission.js new file mode 100644 index 0000000..65ac0c8 --- /dev/null +++ b/src/permission.js @@ -0,0 +1,50 @@ +/** + * Created by HaijunZhang on 2018/11/12. + */ +import store from './store' +import router from './router' +import { getToken, setToken, removeToken } from 'utils/auth' +import { getQuery } from 'utils' + +const { token } = getQuery(location.hash) +if (token) { + setToken(token) +} + +export default function () { + const whiteList = ['/login', '/404', '/401', '/license', '/sso'] + router.beforeEach(async (to, from, next) => { + if (getToken()) { + // 判断用户是否处于登录状态 + if (to.path === '/login') { + // 如果已经登录重定向到主页 + await store.dispatch('permission/ResetRoutes', false) + next('/login') + } else { + // 为null的场景: 刷新页面或者新开窗口; + const addRoutes = store.getters.addRoutes + if (addRoutes) { + next() + } else { + try { + await store.dispatch('permission/GenerateRoutes') + store.dispatch('GetUserInfo') + next({ ...to, replace: true }) + } catch (error) { + // remove token and go to login page to re-login + await store.dispatch('permission/ResetRoutes', false) + next('/login') + } + } + } + } else { + // 用户没有登录 + if (whiteList.includes(to.path)) { + // 在白名单里直接跳转 + next() + } else { + next('/login') + } + } + }) +} diff --git a/src/public-path.js b/src/public-path.js new file mode 100644 index 0000000..dc46d41 --- /dev/null +++ b/src/public-path.js @@ -0,0 +1,4 @@ +if (window.__POWERED_BY_QIANKUN__) { + // eslint-disable-next-line no-undef + __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ +} diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..7b3f802 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,31 @@ +import Vue from 'vue' +import Router from 'vue-router' +import constantRouter from './module/constant' +import systemMap from './module/system' + +const originalReplace = Router.prototype.replace +Router.prototype.replace = function replace(location) { + return originalReplace.call(this, location).catch((err) => console.error(err)) +} + +Vue.use(Router) + +export const asyncRouterMap = { + Home: () => import('@/layouts/home.vue'), + App: () => import('@/layouts/app.vue'), + ...systemMap +} +const createRouter = () => + new Router({ + base: process.env.VUE_APP_BASEURL, + mode: 'history', + scrollBehavior: () => ({ y: 0 }), + routes: constantRouter + }) +const router = createRouter() + +export function resetRouter() { + const newRouter = createRouter() + router.matcher = newRouter.matcher // reset router +} +export default router diff --git a/src/router/module/constant.js b/src/router/module/constant.js new file mode 100644 index 0000000..a4759e3 --- /dev/null +++ b/src/router/module/constant.js @@ -0,0 +1,64 @@ +/** + * Created by HaijunZhang on 2018/11/12. + */ + +const main = [ + { + name: 'Login', + path: '/login', + component: () => import('views/login/login.vue') + }, + { + path: '/sso', + component: () => import('views/login/sso.vue') + }, + { + name: 'LockMe', + path: '/lockme', + component: () => import('views/login/lockme.vue') + }, + { + path: '/', + component: () => import('@/layouts/home.vue'), + redirect: '/resource_dashboard', + meta: { + title: '主页', + noTag: true + }, + name: 'Home', + children: [ + { + name: 'Redirect', + path: 'redirect', + meta: { noTag: true }, + component: () => import('@/layouts/redirect.vue') + } + ] + }, + { + path: '/resource_dashboard', + meta: { + title: '资源概览', + noTag: true + }, + component: () => import('views/configs/setting_dashboard/index.vue') + }, + { + path: '/404', + name: '404', + meta: { + title: '404', + noTag: true + }, + component: () => import('@/views/errorPage/404.vue') + }, + { + path: '/401', + meta: { + title: '401', + noTag: true + }, + component: () => import('@/views/errorPage/401.vue') + } +] +export default main diff --git a/src/router/module/system.js b/src/router/module/system.js new file mode 100644 index 0000000..e674af3 --- /dev/null +++ b/src/router/module/system.js @@ -0,0 +1,28 @@ +const system = { + SystemDepart: () => import('views/permisson/department.vue'), + SystemManager: () => import('views/permisson/manager/index.vue'), + TenantManager: () => import('views/permisson/tenant/index.vue'), + SystemRole: () => import('views/permisson/role.vue'), + SystemPermission: () => import('views/permisson/auth/index.vue'), + NameRule: () => import('views/configs/namerule.vue'), + AuditLog: () => import('views/log/audit.vue'), + SystemDictionary: () => import('views/configs/dictionary.vue'), + SystemMonitor: () => import('views/monitor/index.vue'), + SystemAbout: () => import('views/about/index.vue'), + SettingDashboard: () => import('views/configs/setting_dashboard/index.vue'), + SystemPageSetting: () => import('views/configs/setting/page/index.vue'), + SystemInterfaceSetting: () => import('views/configs/setting/interface/index.vue'), + SystemGeneralSetting: () => import('views/configs/setting/general.vue'), + SystemSecuritySetting: () => import('views/configs/setting/security/index.vue'), + SystemEnviroment: () => import('views/configs/enviroment.vue'), + BusinessSetting: () => import('views/configs/business/index.vue'), + ProjectAdmin: () => import('views/configs/project/index.vue'), + Tag: () => import('views/configs/tag.vue'), + PlatformTask: () => import('views/configs/PlatformTask.vue'), + Migration: () => import('views/configs/migration/index.vue'), + Notice: () => import('views/configs/notice/index.vue'), + PluginManager: () => import('views/permisson/plugins/index.vue'), + PluginManagerConfig: () => import('views/permisson/plugins/configIndex.vue'), + SettingMonitor: () => import('views/configs/setting/monitor/index.vue') +} +export default system diff --git a/src/services/platform/index.js b/src/services/platform/index.js new file mode 100644 index 0000000..70fcd5c --- /dev/null +++ b/src/services/platform/index.js @@ -0,0 +1,3228 @@ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +// volume +const volumeUrl = '/ims/v1/volumes' +export function getVolume(params, url) { + return request.get(url || volumeUrl, { + params + }) +} + +// 公有云账单 +export function billList(params) { + return request.get('/cos/v1/pc/bills', { params }) +} + +export function exportBill(id) { + downloadFile(`/cos/v1/pc/bills/${id}/download`) +} + +export function exportBillTemplate(params) { + downloadFile('/cos/v1/pc/bills/import/template', params) +} + +export function getBillInstance(params) { + return request.patch(`/cos/v1/pc/bills/${params.propertyId}/columns`, wrapperParams(params)) +} + +export function getBillingDetails(params, id) { + return request.get(`/cos/v1/pc/bills/${id}`, { params }) +} + +export function removeBill(id) { + return request.delete(`/cos/v1/pc/bills/${id}`) +} + +export function mergeBill(params) { + return request.post('/cos/v1/pc/bills/combine', wrapperParams(params)) +} + +// 虚拟机 + +export function createVolume(params, url) { + return request.post(url || volumeUrl, wrapperParams(params)) +} + +export function modifyVolume(params) { + return request.put(`${volumeUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVolume(id) { + return request.delete(`${volumeUrl}/${id}`) +} + +export function detailVolume(id) { + return request.get(`${volumeUrl}/${id}`) +} + +export function patchVolume(action, params) { + return request.patch(`${volumeUrl}/${params.id ? params.id : params.resId}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function conditionVoleme(obj) { + const params = { condition: JSON.stringify(obj) } + return request.get(`${volumeUrl}/condition`, { params }) +} + +export function removeVolumes(params) { + return request.delete(`${volumeUrl}`, { data: params }) +} + +export function getVolumeVms(params) { + return request.get(`${volumeUrl}/${params.id}/vms`, { + params: wrapperParams(params) + }) +} + +const dmsVolumeUrl = '/dms/v1/storages/volumes' +export function getDmsVolume(params) { + return request.get(dmsVolumeUrl, { + params + }) +} + +export function createDmsVolume(params) { + return request.post(dmsVolumeUrl, wrapperParams(params)) +} + +export function modifyDmsVolume(params) { + return request.put(`${dmsVolumeUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDmsVolume(id) { + return request.delete(`${dmsVolumeUrl}/${id}`) +} + +export function detailDmsVolume(id) { + return request.get(`${dmsVolumeUrl}/${id}`) +} + +// vpc +const vpcUrl = '/ims/v1/vpcs' +export function getVpc(params) { + return request.get(vpcUrl, { params }) +} + +export function createVpc(params) { + return request.post(vpcUrl, wrapperParams(params)) +} + +export function modifyVpc(params) { + return request.put(`${vpcUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVpc(id) { + return request.delete(`${vpcUrl}/${id}`) +} + +export function removeVpcs(params) { + return request.delete(`${vpcUrl}`, { params: wrapperParams(params) }) +} + +export function detailVpc(id) { + return request.get(`${vpcUrl}/${id}`) +} +export function createVpcCidr(id, params) { + return request.put(`${vpcUrl}/${id}/add/address/space`, wrapperParams(params)) +} +export function removeVpcCidr(id, params) { + return request.put(`${vpcUrl}/${id}/remove/address/space`, wrapperParams(params)) +} +export function createVpcDns(id, params) { + return request.put(`${vpcUrl}/${id}/dns/server`, wrapperParams(params)) +} +export function createVpcDdos(params) { + return request.post(`${vpcUrl}/${params.id}/ddos`, params) +} + +export function removeVpcDdos(params) { + return request.delete(`${vpcUrl}/${params.id}/ddos`) +} + +// 区域 +const regionZoneUrl = '/ims/v1/regions' +export function getRegion(params) { + return request.get(regionZoneUrl, { params }) +} +export function getRegionCondition(params) { + return request.get(`${regionZoneUrl}/condition`, { params: { condition: JSON.stringify(params) } }) +} + +export function getZone(params) { + return request.get(`${regionZoneUrl}/zones`, { + params: wrapperParams(params) + }) +} + +// 同步记录 +const syncLogUrl = '/cos/v1/vendors/records' +export function getLogSync(params) { + return request.get(syncLogUrl, { params }) +} + +// 字典 +const dictUrl = '/sms/v1/dictionaries' +export function getDict(params) { + return request.get(dictUrl, { params }) +} + +export function createDict(params) { + return request.post(dictUrl, wrapperParams(params)) +} + +export function modifyDict(params) { + return request.put(`${dictUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDict(id) { + return request.delete(`${dictUrl}/${id}`) +} + +export function detailDict(id) { + return request.get(`${dictUrl}/${id}`) +} + +export function getDictChildren(params) { + return request.get(`${dictUrl}/children`, { params }) +} + +export function getDictChildrenTree(params) { + return request.get(`${dictUrl}/children/tree`, { + params: wrapperParams(params) + }) +} + +// 镜像 +const imageUrl = '/ims/v1/images' +export function getImage(params) { + return request.get(imageUrl, { + params + }) +} + +export function createImage(params) { + return request.post(imageUrl, wrapperParams(params)) +} + +export function modifyImage(params) { + return request.put(`${imageUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeImage(id) { + return request.delete(`${imageUrl}/${id}`) +} + +export function removeTcImage(id, params) { + return request.delete(`${imageUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailImage(id) { + return request.get(`${imageUrl}/${id}`) +} + +export function conditionImage(obj) { + const params = { condition: JSON.stringify(obj) } + return request.get(`${imageUrl}/condition`, { params }) +} + +export function removeImages(params) { + return request.delete(imageUrl, { data: wrapperParams(params) }) +} + +// 批量更新 复制镜像 +export function allModifyImage(params) { + return request.put(imageUrl, wrapperParams(params)) +} + +// 更新镜像到期时间 +export function updateImageTime(params) { + return request.patch(`${imageUrl}/${params.resId}`, { + action: 'updateExpriedTime', + ...wrapperParams(params) + }) +} + +// 批量删除 根据某种需求删除镜像 +export function removeAllImage(params) { + return request.delete(imageUrl, wrapperParams(params)) +} + +// 镜像共享 +export function shareImage(params) { + return request.patch(`${imageUrl}/${params.imageId}`, { + action: 'shareImage', + ...wrapperParams(params) + }) +} + +export function shareSyncImage(params) { + return request.patch(`${imageUrl}/${params.imageId}`, { + action: 'syncImages', + ...wrapperParams(params) + }) +} + +export function patchImage(action, params) { + return request.patch(`${imageUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +// 查询镜像使用的存储卷 +export function volumeImage(id) { + return request.get(`${imageUrl}/${id}/volumes`) +} + +const rspUrl = '/ims/v1/rsps' +export function getSchedulerPolicy(params) { + return request.get(rspUrl, { + params + }) +} + +export function createSchedulerPolicy(params) { + return request.post(rspUrl, wrapperParams(params)) +} + +export function modifySchedulerPolicy(params) { + return request.put(`${rspUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSchedulerPolicy(id) { + return request.delete(`${rspUrl}/${id}`) +} + +export function detailSchedulerPolicy(id) { + return request.get(`${rspUrl}/${id}`) +} + +export function bindCluster(params) { + return request.patch(`${rspUrl}/${params.id}/clusters`, wrapperParams(params)) +} + +export function setPolicy(params) { + return request.patch(`/ims/v1/pool/groups/${params.id}`, params) +} + +// 弹性伸缩 +const autoUrl = '/ims/v1/autoscaling' +export function getAuto(params) { + return request.get(autoUrl, { + params + }) +} + +export function createAuto(params) { + return request.post(autoUrl, wrapperParams(params)) +} + +export function modifyAuto(params) { + return request.put(`${autoUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeAuto(id) { + return request.delete(`${autoUrl}/${id}`) +} + +export function removeTcAuto(id, params) { + return request.delete(`${autoUrl}/${id}`, { params: JSON.stringify(params) }) +} + +export function detailAuto(id) { + return request.get(`${autoUrl}/${id}`) +} + +export function conditionAuto(params) { + return request.get(`${autoUrl}/condition`, { params }) +} + +export function removeAutos(params) { + return request.delete(autoUrl, { params: wrapperParams(params) }) +} + +export function patchAuto(params) { + return request.patch(`${autoUrl}/${params.id}`, wrapperParams(params)) +} + +// 伸缩配置 +const autoSettingUrl = '/ims/v1/autoscaling/config' +export function getAutoConfig(params) { + return request.get(autoSettingUrl, { + params + }) +} + +export function createAutoConfig(params) { + return request.post(autoSettingUrl, wrapperParams(params)) +} + +export function modifyAutoConfig(params) { + return request.put(`${autoSettingUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeAutoConfig(id) { + return request.delete(`${autoSettingUrl}/${id}`) +} + +export function removeTcAutoConfig(id, params) { + return request.delete(`${autoSettingUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailAutoConfig(id) { + return request.get(`${autoSettingUrl}/${id}`) +} + +export function conditionAutoConfig(params) { + return request.get(`${autoSettingUrl}/condition`, { params }) +} + +export function removeAutoConfigs(params) { + return request.delete(autoSettingUrl, { params: wrapperParams(params) }) +} + +// 报警任务 +const alarmTaskUrl = '/ims/v1/autoscaling/alarmtask' +export function getAlarmTask(params) { + return request.get(alarmTaskUrl, { + params + }) +} + +export function createAlarmTask(params) { + return request.post(alarmTaskUrl, wrapperParams(params)) +} + +export function modifyAlarmTask(params) { + return request.put(`${alarmTaskUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeAlarmTask(id) { + return request.delete(`${alarmTaskUrl}/${id}`) +} + +export function removeTcAlarmTask(id, params) { + return request.delete(`${alarmTaskUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailAlarmTask(id) { + return request.get(`${alarmTaskUrl}/${id}`) +} + +export function conditionAlarmTask(params) { + return request.get(`${alarmTaskUrl}/condition`, { params }) +} + +export function removeAlarmTasks(params) { + return request.delete(alarmTaskUrl, { params: wrapperParams(params) }) +} + +// 定时任务 +const timedTaskUrl = '/ims/v1/autoscaling/timedtask' +export function getTimedTask(params) { + return request.get(timedTaskUrl, { + params + }) +} + +export function createTimedTask(params) { + return request.post(timedTaskUrl, wrapperParams(params)) +} + +export function modifyTimedTask(params) { + return request.put(`${timedTaskUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeTimedTask(id) { + return request.delete(`${timedTaskUrl}/${id}`) +} + +export function removeTcTimedTask(id, params) { + return request.delete(`${timedTaskUrl}/${id}`, { + params: JSON.stringify(params) + }) +} + +export function detailTimedTask(id) { + return request.get(`${timedTaskUrl}/${id}`) +} + +export function conditionTimedTask(params) { + return request.get(`${timedTaskUrl}/condition`, { params }) +} + +export function removeTimedTasks(params) { + return request.delete(timedTaskUrl, { params: wrapperParams(params) }) +} + +// 安全组 +const sgroupsUrl = '/ims/v1/sgroups' +export function getGroup(params) { + return request.get(sgroupsUrl, { + params + }) +} + +export function createGroup(params) { + return request.post(sgroupsUrl, wrapperParams(params)) +} + +export function modifyGroup(params) { + return request.put(`${sgroupsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeGroup(id) { + return request.delete(`${sgroupsUrl}/${id}`) +} + +export function detailGroup(id) { + return request.get(`${sgroupsUrl}/${id}`) +} + +export function removeGroups(params) { + return request.delete(sgroupsUrl, { data: params }) +} + +export function patchGroups(action, params) { + return request.patch(`${sgroupsUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +// 安全组规则 +const sgroupsRuleUrl = '/ims/v1/sgroups/rules' +export function getGroupRule(params) { + return request.get(sgroupsRuleUrl, { + params + }) +} + +export function createGroupRule(params) { + return request.post(sgroupsRuleUrl, wrapperParams(params)) +} +export function modifyGroupRule(params) { + return request.put(`${sgroupsRuleUrl}/${params.id}`, wrapperParams(params)) +} +export function removeGroupRule(id) { + return request.delete(`${sgroupsRuleUrl}/${id}`) +} + +export function detailGroupRule(id) { + return request.get(`${sgroupsRuleUrl}/${id}`) +} + +export function removeGroupRules(params) { + return request.delete(sgroupsRuleUrl, { data: params }) +} + +// spec +const specUrl = '/ims/v1/specs' +export function getSpec(params) { + return request.get(specUrl, { + params + }) +} + +export function createSpec(params) { + return request.post(specUrl, wrapperParams(params)) +} + +export function modifySpec(params) { + return request.put(`${specUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSpec(id) { + return request.delete(`${specUrl}/${id}`) +} + +export function detailSpec(id) { + return request.get(`${specUrl}/${id}`) +} + +// 子网 +const subnetUrl = '/ims/v1/subnets' +export function getSubnet(params) { + return request.get(subnetUrl, { + params + }) +} + +export function createSubnet(params) { + return request.post(subnetUrl, wrapperParams(params)) +} + +export function modifySubnet(params) { + return request.put(`${subnetUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSubnet(id) { + return request.delete(`${subnetUrl}/${id}`) +} + +export function detailSubnet(id) { + return request.get(`${subnetUrl}/${id}`) +} + +export function conditionSubnet(params) { + return request.get(`${subnetUrl}/condition`, { params }) +} + +// 查询路由连接的子网 +export function getRouterSubnet(params) { + return request.get('/ims/v1/routers/subnets', { params }) +} + +export function removeSubnets(params) { + return request.delete(subnetUrl, { data: params }) +} + +// vdc +const vdcUrl = '/ims/v1/vdcs' +export function getVdc(params) { + return request.get(vdcUrl, { + params + }) +} + +export function createVdc(params) { + return request.post(vdcUrl, wrapperParams(params)) +} + +export function modifyVdc(params) { + return request.put(`${vdcUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVdc(id) { + return request.delete(`${vdcUrl}/${id}`) +} + +export function detailVdc(id) { + return request.get(`${vdcUrl}/${id}`) +} + +export function getVdcHost(params) { + return request.get(`${vdcUrl}/${params.id}/hosts`, { + params: wrapperParams(params) + }) +} + +// 网卡 +const networkcardUrl = '/ims/v1/nics' +export function getNetworkcard(params) { + return request.get(networkcardUrl, { + params + }) +} + +export function createNetworkcard(params) { + return request.post(networkcardUrl, wrapperParams(params)) +} + +export function modifyNetworkcard(params) { + return request.put(`${networkcardUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNetworkcard(id) { + return request.delete(`${networkcardUrl}/${id}`) +} + +export function detailNetworkcard(id) { + return request.get(`${networkcardUrl}/${id}`) +} + +// 挂载 +export function attachNetworkcard(params) { + return request.patch(`${networkcardUrl}/${params.id}/vms`, wrapperParams(params)) +} + +export function attachDeleteNetworkcard(params) { + return request.delete(`${networkcardUrl}/${params.id}/vms`, { + params: wrapperParams(params) + }) +} + +export function getUnbindCard(id) { + return request.get(`${networkcardUrl}/unBandList/${id}`) +} + +// 命名规则 +const nameRuleUrl = '/sms/v1/namings' +export function getNameRule(params) { + return request.get(nameRuleUrl, { + params + }) +} + +export function createNameRule(params) { + return request.post(nameRuleUrl, wrapperParams(params)) +} + +export function modifyNameRule(params) { + return request.put(`${nameRuleUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNameRule(id) { + return request.delete(`${nameRuleUrl}/${id}`) +} + +export function detailNameRule(id) { + return request.get(`${nameRuleUrl}/${id}`) +} + +// 标签 +const labelUrl = '/ims/v1/tags' +export function getLabel(params) { + return request.get(labelUrl, { + params + }) +} + +export function createLabel(params) { + return request.post(labelUrl, wrapperParams(params)) +} + +export function modifyLabel(params) { + return request.put(`${labelUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeLabel(id) { + return request.delete(`${labelUrl}/${id}`) +} + +export function detailLabel(id) { + return request.get(`${labelUrl}/${id}`) +} + +// 密钥 +const keyUrl = '/ims/v1/keypairs' +export function getKey(params) { + return request.get(keyUrl, { + params + }) +} + +export function createKey(params) { + return request.post(keyUrl, wrapperParams(params)) +} + +export function modifyKey(params) { + return request.put(`${keyUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeKey(id) { + return request.delete(`${keyUrl}/${id}`) +} + +export function detailKey(id) { + return request.get(`${keyUrl}/${id}`) +} + +export function existKey(params) { + return request.get(keyUrl, { params }) +} + +export function removeKeys(params) { + return request.delete(keyUrl, { data: params }) +} + +export function keyBindVm(params) { + return request.patch(`${keyUrl}/${params.keypairId}`, wrapperParams(params)) +} + +// 平台 +const cloudVendorUrl = '/ims/v1/vendors' +export function getCloudVendor(params, url) { + return request.get(`${url || cloudVendorUrl}`, { + params + }) +} + +export function getOverviewCloudVendor(params) { + return request.get('/sms/v1/vendors', { + params + }) +} + +export function getVendorType(params) { + return request.get('/sms/v1/vendors/condition', { + params + }) +} + +export function createCloudVendor(params, url) { + return request.post(`${url || cloudVendorUrl}`, wrapperParams(params)) +} + +export function modifyCloudVendor(params, url) { + return request.put(`${url || cloudVendorUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeCloudVendor(id, url) { + return request.delete(`${url || cloudVendorUrl}/${id}`) +} + +export function detailCloudVendor(id, url) { + return request.get(`${url || cloudVendorUrl}/${id}`) +} + +export function syncCloudVendor(id, url) { + return request.post(`${url || cloudVendorUrl}/${id}/sync`) +} + +export function getVendorHosts(params) { + return request.get(`/ims/v1/vendors/${params.id}/hosts`, { + params: wrapperParams(params) + }) +} + +export function getDictionaries(params) { + return request.get('/sms/v1/dictionaries/children', { + params + }) +} + +export function getDictionariesTree(params) { + return request.get('/sms/v1/dictionaries/children/tree', { + params + }) +} + +export function getVendorGroup(params) { + return request.get('/soc/v1/vendor/group', { + params + }) +} + +export function patchCloudVendor(params, url) { + return request.patch(`${url || cloudVendorUrl}/${params.id}/password`, { ...wrapperParams(params) }) +} + +export function patchCloudVendorExcessRatio(params) { + return request.patch(`${cloudVendorUrl}/${params.id}/excessRatio`, { ...wrapperParams(params) }) +} + +// 平台告警阈值 +export function alarmCloudVendor(params) { + return request.post(`${cloudVendorUrl}/${params.target}/alarms`, wrapperParams(params)) +} + +export function getAlarmCloudVendor(params) { + return request.get(`${cloudVendorUrl}/${params.id}/alarms`, { + params: wrapperParams(params) + }) +} + +export function capacityAlarmCloudVendor(params) { + return request.get(`${cloudVendorUrl}/${params.id}/capacity`, { + params: wrapperParams(params) + }) +} + +export function conditionCloudVendor(params) { + return request.get(`${cloudVendorUrl}/condition`, { params }) +} + +export function outAlarms(params) { + return request.get(cloudVendorUrl, wrapperParams(params)) +} + +export function removeAlarms(params) { + return request.delete(cloudVendorUrl, { params: wrapperParams(params) }) +} + +// 集群 +const clutersUrl = '/ims/v1/clusters' +export function getCluters(params) { + return request.get(clutersUrl, { + params + }) +} + +export function createCluters(params) { + return request.post(clutersUrl, wrapperParams(params)) +} + +export function modifyCluters(params) { + return request.put(`${clutersUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeCluters(id) { + return request.delete(`${clutersUrl}/${id}`) +} + +export function detailCluters(id) { + return request.get(`${clutersUrl}/${id}`) +} + +export function getCluterHosts(params) { + return request.get(`${clutersUrl}/${params.clusterId}/hosts`, { + params: wrapperParams(params) + }) +} + +export function getCluterTendency(params) { + return request.get(`${clutersUrl}/${params.id}/tendency`, { + params + }) +} + +// 集群移入移除主机 +export function cluterBindVm(params) { + return request.post(`${clutersUrl}/${params.id ? params.id : params.clusterId}/hosts`, wrapperParams(params)) +} + +export function cluterUnBindVm(params) { + return request.delete(`${clutersUrl}/${params.id ? params.id : params.clusterId}/hosts`, { data: wrapperParams(params) }) +} + +export function alarmCluter(params) { + return request.post(`${clutersUrl}/${params.target}/thresholds`, wrapperParams(params)) +} + +export function getAlarmCluter(params) { + return request.get(`${clutersUrl}/${params.id}/thresholds`, { + params: wrapperParams(params) + }) +} + +// 集群节点 +export function getClutersNodes(params) { + return request.get(`${clutersUrl}/hosts`, { params }) +} + +export function getClutersNodesDetail(id) { + return request.get(`${clutersUrl}/hosts/${id}`) +} + +// 数据中心 +const dcUrl = '/ims/v1/dcs' +export function getDc(params) { + return request.get(dcUrl, { + params + }) +} + +export function createDc(params) { + return request.post(dcUrl, wrapperParams(params)) +} + +export function modifyDc(params) { + return request.put(`${dcUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDc(id) { + return request.delete(`${dcUrl}/${id}`) +} + +export function detailDc(id) { + return request.get(`${dcUrl}/${id}`) +} +// vcenter虚机存储路径 +export function getFolders(params) { + return request.get('/ims/v1/folder', { + params: params + }) +} +// 硬盘类型 +const diskTypeUrl = '/ims/v1/volume/types' +export function getDiskType(params) { + return request.get(diskTypeUrl, { + params + }) +} + +export function createDiskType(params) { + return request.post(diskTypeUrl, wrapperParams(params)) +} + +export function modifyDiskType(params) { + return request.put(`${diskTypeUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDiskType(id) { + return request.delete(`${diskTypeUrl}/${id}`) +} + +export function detailDiskType(id) { + return request.get(`${diskTypeUrl}/${id}`) +} + +// 数据存储 +const datastoresUrl = '/ims/v1/datastores' +export function getDatastores(params) { + return request.get(datastoresUrl, { + params + }) +} + +export function createDatastores(params) { + return request.post(datastoresUrl, wrapperParams(params)) +} + +export function modifyDatastores(params) { + return request.put(`${datastoresUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDatastores(id) { + return request.delete(`${datastoresUrl}/${id}`) +} + +export function detailDatastores(id) { + return request.get(`${datastoresUrl}/${id}`) +} + +export function getDatastoresVm(params) { + return request.get(`${datastoresUrl}/${params.hostId}/hosts`, { + params: wrapperParams(params) + }) +} + +export function getDatastoresServer(params) { + return request.get(`${datastoresUrl}/${params.id}/vms`, { params }) +} + +export function getDatastoresHosts(params) { + return request.get(`${datastoresUrl}/${params.id}/hosts`, { params }) +} + +export function getDatastoresFiles(params) { + return request.post(`${datastoresUrl}/${params.id}/files`, params) +} + +export function getDatastoresHostsDelete(params) { + return request.delete(`${datastoresUrl}/${params.id}/hosts`, { params }) +} + +export function conditionDatastore(params) { + return request.get(`${datastoresUrl}/condition`, { params }) +} + +export function putDatastoresTags(params) { + return request.put('/ims/v1/datastores/tags', wrapperParams(params)) +} + +// 所属环境 +const environmentsUrl = '/sms/v1/environments' +export function getEnvironments(params) { + return request.get(environmentsUrl, { + params + }) +} + +export function createEnvironments(params) { + return request.post(environmentsUrl, wrapperParams(params)) +} + +export function modifyEnvironments(params) { + return request.put(`${environmentsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeEnvironments(id) { + return request.delete(`${environmentsUrl}/${id}`) +} + +export function detailEnvironments(id) { + return request.get(`${environmentsUrl}/${id}`) +} + +// 防火墙 +const firewallUrl = '/ims/v1/firewalls' +export function getFirewall(params) { + return request.get(firewallUrl, { + params + }) +} + +export function createFirewall(params) { + return request.post(firewallUrl, wrapperParams(params)) +} + +export function modifyFirewall(params) { + return request.put(`${firewallUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFirewall(id) { + return request.delete(`${firewallUrl}/${id}`) +} + +export function detailFirewall(id) { + return request.get(`${firewallUrl}/${id}`) +} + +export function removeFirewalls(params) { + return request.delete(firewallUrl, { params: wrapperParams(params) }) +} + +// 防火墙路由 +export function firewallRouter(params) { + return request.post(`${firewallUrl}/${params.id}/routers`, wrapperParams(params)) +} + +export function getFirewallRouter(params) { + return request.get(`${firewallUrl}/${params.id}/routers`, { params }) +} + +// 计算节点 +const nodelUrl = '/ims/v1/clusters/nodes' +export function getNode(params) { + return request.get(nodelUrl, { + params + }) +} + +export function createNode(params) { + return request.post(nodelUrl, wrapperParams(params)) +} + +export function modifyNode(params) { + return request.put(`${nodelUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNode(id) { + return request.delete(`${nodelUrl}/${id}`) +} + +export function detailNode(id) { + return request.get(`${nodelUrl}/${id}`) +} + +export function removeNodes(params) { + return request.delete(nodelUrl, { params: wrapperParams(params) }) +} + +export function conditionNode(params) { + return request.get(`${nodelUrl}/condition`, { params }) +} + +// 云堆栈 +const stackUrl = '/ims/v1/heat/stacks' +export function getStack(params) { + return request.get(stackUrl, { + params + }) +} + +export function createStack(params) { + return request.post(stackUrl, wrapperParams(params)) +} + +export function modifyStack(params) { + return request.put(`${stackUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeStack(id) { + return request.delete(`${stackUrl}/${id}`) +} + +export function detailStack(id) { + return request.get(`${stackUrl}/${id}`) +} + +export function removeStacks(params) { + return request.delete(stackUrl, { params: wrapperParams(params) }) +} + +export function conditionStack(params) { + return request.get(`${stackUrl}/condition`, { params }) +} + +export function patchStack(action, params) { + return request.patch(`${stackUrl}/${params.id}`, { + action: action + }) +} + +export function stackEvent(params) { + return request.get(`${stackUrl}/event`, { params }) +} + +// 云堆栈版本 +const stackVersionUrl = '/ims/v1/heat/stacks/versions' +export function getStackVersion(params) { + return request.get(stackVersionUrl, { + params + }) +} + +export function createStackVersion(params) { + return request.post(stackVersionUrl, wrapperParams(params)) +} + +export function modifyStackVersion(params) { + return request.put(`${stackVersionUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeStackVersion(id) { + return request.delete(`${stackVersionUrl}/${id}`) +} + +export function detailStackVersion(id) { + return request.get(`${stackVersionUrl}/${id}`) +} + +export function removeStackVersions(params) { + return request.delete(stackVersionUrl, { params: wrapperParams(params) }) +} + +export function conditionStackVersion(params) { + return request.get(`${stackVersionUrl}/condition`, { params }) +} + +// 防火墙规则 +const firewalRulelUrl = '/ims/v1/firewalls/rules' +export function getFirewallRule(params) { + return request.get(firewalRulelUrl, { + params + }) +} + +export function createFirewallRule(params) { + return request.post(firewalRulelUrl, wrapperParams(params)) +} + +export function modifyFirewallRule(params) { + return request.put(`${firewalRulelUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFirewallRule(id) { + return request.delete(`${firewalRulelUrl}/${id}`) +} + +export function detailFirewallRule(id) { + return request.get(`${firewalRulelUrl}/${id}`) +} + +export function removeFirewallRules(params) { + return request.delete(firewalRulelUrl, { data: wrapperParams(params) }) +} + +export function conditionFirewallRule(params) { + return request.get(`${firewalPolicyUrl}/condition`, { params }) +} + +// 防火墙策略 +const firewalPolicyUrl = '/ims/v1/firewalls/policies' +export function getFirewallPolicy(params) { + return request.get(firewalPolicyUrl, { + params + }) +} + +export function createFirewallPolicy(params) { + return request.post(firewalPolicyUrl, wrapperParams(params)) +} + +export function modifyFirewallPolicy(params) { + return request.put(`${firewalPolicyUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFirewallPolicy(id) { + return request.delete(`${firewalPolicyUrl}/${id}`) +} + +export function detailFirewallPolicy(id) { + return request.get(`${firewalPolicyUrl}/${id}`) +} + +export function removeFirewallPolicys(params) { + return request.delete(firewalPolicyUrl, { data: wrapperParams(params) }) +} + +export function conditionFirewallPolicy(params) { + return request.get(`${firewalPolicyUrl}/condition`, { params }) +} + +export function policyBindRule(params) { + return request.get(`${firewalPolicyUrl}/${params.policyId}/rules`, { + params + }) +} + +// 插入移除规则 +export function policyRule(params) { + return request.post(`${firewalPolicyUrl}/${params.id}/rules`, wrapperParams(params)) +} + +export function removePolicyRule(params) { + return request.delete(`${firewalPolicyUrl}/${params.id}/rules`, { + params: wrapperParams(params) + }) +} + +// QoS策略 +const qosPolicyUrl = 'ims/v1/qos/policys' +export function getQosPolicy(params) { + return request.get(qosPolicyUrl, { + params + }) +} + +export function createQosPolicy(params) { + return request.post(qosPolicyUrl, wrapperParams(params)) +} + +export function modifyQosPolicy(params) { + return request.put(`${qosPolicyUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeQosPolicy(id) { + return request.delete(`${qosPolicyUrl}/${id}`) +} + +export function detailQosPolicy(id) { + return request.get(`${qosPolicyUrl}/${id}`) +} + +export function removeQosPolicys(params) { + return request.delete(qosPolicyUrl, { data: wrapperParams(params) }) +} + +export function conditionQosPolicy(params) { + return request.get(`${qosPolicyUrl}/condition`, { params }) +} + +// QoS规则 +const qosRuleUrl = 'ims/v1/qos/rules' +export function getQosRule(params) { + return request.get(qosRuleUrl, { + params + }) +} + +export function createQosRule(params) { + return request.post(qosRuleUrl, wrapperParams(params)) +} + +export function modifyQosRule(params) { + return request.put(`${qosRuleUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeQosRule(id) { + return request.delete(`${qosRuleUrl}/${id}`) +} + +export function detailQosRule(id) { + return request.get(`${qosRuleUrl}/${id}`) +} + +export function removeQosRules(params) { + return request.delete(qosRuleUrl, { params: wrapperParams(params) }) +} + +export function conditionQosRule(params) { + return request.get(`${qosRuleUrl}/condition`, { params }) +} + +// 规格 +const flavorUrl = '/ims/v1/flavors' +export function getFlavor(params) { + return request.get(flavorUrl, { + params + }) +} + +export function createFlavor(params) { + return request.post(flavorUrl, wrapperParams(params)) +} + +export function modifyFlavor(params) { + return request.put(`${flavorUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFlavor(id) { + return request.delete(`${flavorUrl}/${id}`) +} + +export function detailFlavor(id) { + return request.get(`${flavorUrl}/${id}`) +} + +export function removeFlavors(params) { + return request.delete(flavorUrl, { data: params }) +} + +export function conditionFlavor(params) { + return request.get(`${flavorUrl}/condition`, { params }) +} + +export function modifyFlavors(params) { + return request.post(`${flavorUrl}/status/batch`, wrapperParams(params)) +} + +export function modifyAzureFlavor(params) { + return request.put(`${flavorUrl}/${params.id}/status`, wrapperParams(params)) +} + +// 阿里云red +const aliRdsUrl = '/ims/v1/rds/pc/instances' +export function getAliRds(params) { + return request.get(aliRdsUrl, { + params + }) +} + +export function patchAliRds(id) { + return request.patch(`${aliRdsUrl}/${id}`) +} + +export function removeAliRds(id) { + return request.delete(`${aliRdsUrl}/${id}`) +} + +export function detailAliRds(id) { + return request.get(`${aliRdsUrl}/${id}`) +} + +// 云硬盘备份 +const backUpUrl = '/ims/v1/backup/vaults' +export function getBackUp(params) { + return request.get(backUpUrl, { + params + }) +} + +export function createBackUp(params) { + return request.post(backUpUrl, wrapperParams(params)) +} + +export function modifyBackUp(params) { + return request.put(`${backUpUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeBackUp(id) { + return request.delete(`${backUpUrl}/${id}`) +} + +export function detailBackUp(id) { + return request.get(`${backUpUrl}/${id}`) +} + +export function conditionBackUp(params) { + return request.get(`${backUpUrl}/condition`, { params }) +} + +export function getBackUps(params) { + return request.get('/ims/v1/backups', { + params + }) +} + +export function detailBackUps(id) { + return request.get(`/ims/v1/backups/${id}`) +} + +export function removeBackUps(id) { + return request.delete(`/ims/v1/backups/${id}`) +} + +export function restoreBackUp(params) { + return request.post('/ims/v1/backups/restore', wrapperParams(params)) +} + +export function bindBackUp(params) { + return request.post(`${backUpUrl}/addResources`, wrapperParams(params)) +} + +export function backUp(params) { + return request.post(`${backUpUrl}/backup`, wrapperParams(params)) +} + +// 浮动IP +const floatIpUrl = '/ims/v1/floatips' +export function getFloatIp(params) { + return request.get(floatIpUrl, { + params + }) +} + +export function createFloatIp(params) { + return request.post(floatIpUrl, wrapperParams(params)) +} + +export function modifyFloatIp(params) { + return request.put(`${floatIpUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFloatIp(id) { + return request.delete(`${floatIpUrl}/${id}`) +} + +export function detailFloatIp(id) { + return request.get(`${floatIpUrl}/${id}`) +} + +export function removeFloatIps(params) { + return request.delete(floatIpUrl, { data: params }) +} + +export function conditionFloatIp(params) { + return request.get(`${floatIpUrl}/condition`, { params }) +} + +export function floatIpPorts(params) { + return request.post(`${floatIpUrl}/${params.id}/ports`, wrapperParams(params)) +} + +export function removeFloatIpPorts(params) { + return request.delete(`${floatIpUrl}/${params.id}/ports`, wrapperParams(params)) +} + +export function getFloatIpPorts(params) { + return request.get(`${floatIpUrl}/${params.id}/ports`, { + params: wrapperParams(params) + }) +} + +export function patchFloatIpPorts(params) { + return request.patch(`${floatIpUrl}/${params.id}`, wrapperParams(params)) +} + +// 浮动IP +const ipUrl = '/ims/v1/ips' +export function getIp(params) { + return request.get(ipUrl, { + params + }) +} +export function createIp(params) { + return request.post(ipUrl, wrapperParams(params)) +} +export function removeIp(id) { + return request.delete(`${ipUrl}/${id}`) +} + +export function detailIp(id) { + return request.get(`${ipUrl}/${id}`) +} +export function patchIps(action, params) { + return request.patch(`${ipUrl}`, { + action: action, + ...params + }) +} + +export function conditionIp(params) { + return request.get(`${ipUrl}/condition`, { params }) +} + +// IP池 +const ipPoolUrl = '/ims/v1/ip/pools' +export function getIpPool(params) { + return request.get(ipPoolUrl, { + params + }) +} + +export function createIpPool(params) { + return request.post(ipPoolUrl, wrapperParams(params)) +} + +export function modifyIpPool(params) { + return request.put(`${ipPoolUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeIpPool(id) { + return request.delete(`${ipPoolUrl}/${id}`) +} + +export function detailIpPool(id) { + return request.get(`${ipPoolUrl}/${id}`) +} + +export function conditionIpPool(params) { + return request.get(`${ipPoolUrl}/condition`, { params }) +} + +export function scanIp(params) { + return request.put('/ims/v1/ips', wrapperParams(params)) +} + +export function getDetailIp(params) { + return request.get(`${ipPoolUrl}/${params.id}/ips`, { params }) +} + +// 负载均衡 +const lbUrl = '/ims/v1/lbs' +export function getLb(params) { + return request.get(lbUrl, { + params + }) +} + +export function createLb(params) { + return request.post(lbUrl, wrapperParams(params)) +} + +export function modifyLb(params) { + return request.put(`${lbUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeLb(id) { + return request.delete(`${lbUrl}/${id}`) +} + +export function detailLb(id) { + return request.get(`${lbUrl}/${id}`) +} + +export function conditionLb(params) { + return request.get(`${lbUrl}/condition`, { params }) +} + +export function removeLbs(params) { + return request.delete(lbUrl, { data: wrapperParams(params) }) +} + +const lbLintenUrl = '/ims/v1/lb/listeners' +export function getLbListen(params) { + return request.get(lbLintenUrl, { + params + }) +} + +export function createLbListen(params) { + return request.post(lbLintenUrl, wrapperParams(params)) +} + +export function modifyLbListen(params) { + return request.put(`${lbLintenUrl}/${params.id || params.listener.id}`, wrapperParams(params)) +} + +export function removeLbListen(id) { + return request.delete(`${lbLintenUrl}/${id}`) +} + +export function detailLbListen(id) { + return request.get(`${lbLintenUrl}/${id}`) +} + +export function removeLbListens(params) { + return request.delete(lbLintenUrl, { data: wrapperParams(params) }) +} + +const lbLintenUserUrl = '/ims/v1/lb/members' +export function getLbListenUser(params) { + return request.get(lbLintenUserUrl, { + params + }) +} + +export function createLbListenUser(params) { + return request.post(lbLintenUserUrl, wrapperParams(params)) +} + +export function modifyLbListenUser(params) { + return request.put(`${lbLintenUserUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeLbListenUser(id) { + return request.delete(`${lbLintenUserUrl}/${id}`) +} + +export function detailLbListenUser(id) { + return request.get(`${lbLintenUserUrl}/${id}`) +} + +export function manageLbListenUser(params) { + return request.patch(`/ims/v1/lb/pools/${params.id ? params.id : params.poolId}/members`, wrapperParams(params)) +} + +// 网络 +const networkUrl = '/ims/v1/networks' +export function getNetwork(params) { + return request.get(networkUrl, { + params + }) +} + +export function createNetwork(params) { + return request.post(networkUrl, wrapperParams(params)) +} + +export function modifyNetwork(params) { + return request.put(`${networkUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeNetwork(id) { + return request.delete(`${networkUrl}/${id}`) +} + +export function detailNetwork(id) { + return request.get(`${networkUrl}/${id}`) +} + +export function removeNetworks(params) { + return request.delete(networkUrl, { data: wrapperParams(params) }) +} + +export function conditionNetwork(obj) { + const params = { condition: JSON.stringify(obj) } + return request.get(`${networkUrl}/condition`, { params }) +} + +export function networkTenant(params) { + return request.post(`${networkUrl}/${params.id}/tenants`, params) +} + +export function getNetworkTenant(params) { + return request.get(`${networkUrl}/${params.id}/tenants`, wrapperParams(params)) +} + +export function networkHosts(params) { + return request.get(`${networkUrl}/${params.id}/hosts`, { params }) +} + +export function networkVms(params) { + return request.get(`${networkUrl}/${params.id}/vms`, { params }) +} + +export function hostNetowrk(params) { + return request.get(`/ims/v1/hosts/${params.id}/networks`, { + params: wrapperParams(params), + type: 'Host' + }) +} + +// 标准交换机 +const networkSwitchsUrl = '/ims/v1/vswitches' +export function createSwitchs(params) { + return request.post(networkSwitchsUrl, wrapperParams(params)) +} + +export function modifySwitchs(params) { + return request.put(`${networkSwitchsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSwitchs(params) { + return request.delete(`${networkSwitchsUrl}/${params.id}`, { params }) +} + +export function detailSwitchs(id) { + return request.get(`${networkSwitchsUrl}/${id}`) +} + +export function patchSwitchs(params) { + return request.patch(`${networkSwitchsUrl}/${params.id}/hosts`, wrapperParams(params)) +} + +export function createHostSwitchs(params) { + return request.post('/ims/v1/hosts/switches', { ...wrapperParams(params), type: 'Vmware' }) +} + +// 端口组 +const pgsUrl = '/ims/v1/pgs' +export function getPgs(params) { + return request.get(pgsUrl, { + params + }) +} + +export function createPgs(params) { + return request.post(pgsUrl, wrapperParams(params)) +} + +export function modifyPgs(params) { + return request.put(`${pgsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removePgs(params) { + return request.delete(`${pgsUrl}/${params.id}`, { params }) +} + +export function detailPgs(id) { + return request.get(`${pgsUrl}/${id}`) +} + +export function removePgss(params) { + return request.delete(pgsUrl, { params: wrapperParams(params) }) +} + +export function conditionPgs(params) { + return request.get(`${pgsUrl}/condition`, { params }) +} + +export function getVcTask(params) { + console.log(params) + return request.get(`/ims/v1/task-message/${params.id}`, { params: params.params }) +} + +export function getAlarams(params) { + return request.get('/ims/v1/alarms', { + params + }) +} + +// 虚拟机 +const vmUrl = '/ims/v1/vms' +export function getVm(params) { + return request.get(vmUrl, { params }) +} + +export function getVmTop(params) { + return request.get('/cos/v1/reports/vms/top', { params: wrapperParams(params) }) +} + +export function checkStatus() { + return request.get('/cos/v1/reports/vms/top/status') +} + +export function handleRetry(params) { + return request.put('/cos/v1/reports/vms/top/reset', wrapperParams(params)) +} + +export function statementList(params) { + return request.get('/cos/v1/reports/vms', { params }) +} +export function configTemplates(params) { + return request.put('/cos/v1/reports/templates', wrapperParams(params)) +} +export function selfTemplates(params) { + return request.post('/cos/v1/reports/templates', wrapperParams(params)) +} +export function removeTemplate(id) { + return request.delete(`/cos/v1/reports/templates/${id}`) +} +export function selfTemplateList(params) { + return request.get('/cos/v1/reports/templates', { params }) +} +export function configTemplateDetail(id, params) { + return request.get(`/cos/v1/reports/templates/vm/${id}`, { params: wrapperParams(params) }) +} +export function getHistory(params) { + return request.get('/cos/v1/reports', { params }) +} +export function delHistory(id) { + return request.delete(`/cos/v1/reports/${id}`) +} +export function historyMonitor(id) { + return request.get(`/cos/v1/reports/vms/history/${id}`) +} + +// export function selfTemplates() { + +// } +// export function selfTemplates() { + +// } export function selfTemplates() { + +// } export function selfTemplates() { + +// } export function selfTemplates() { + +// } export function selfTemplates() { + +// } + +export function createVm(action, params) { + return request.post(vmUrl, { action: action, ...wrapperParams(params) }) +} + +export function syncVm() { + return request.post(`${vmUrl}/sync`) +} + +export function modifyVm(params) { + return request.put(`${vmUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVm(id) { + const params = { id: id } + return request.delete(`${vmUrl}/${id}`, params) +} + +export function detailVm(id) { + return request.get(`${vmUrl}/${id}`) +} + +export function conditionVm(obj) { + const params = { condition: JSON.stringify(obj) } + // if (obj.condition) { + // const { condition, ...others } = obj + // params = { condition: JSON.stringify(condition), ...others } + // } + return request.get(`${vmUrl}/condition`, { params }) +} + +export function removeVms(params) { + return request.delete(vmUrl, { data: params }) +} + +export function getVmChart(params) { + return request.get(`${vmUrl}/summary`, { params: wrapperParams(params) }) +} + +export function getVmNetworks(params) { + return request.get(`${vmUrl}/networks`, { params }) +} + +export function patchVm(action, params) { + return request.patch(vmUrl, { action: action, ...wrapperParams(params) }) +} + +export function modifyVmDisk(params) { + return request.put(`${vmUrl}/${params.id}/disks`, wrapperParams(params)) +} + +export function patchVms(action, params) { + return request.patch(vmUrl, { + action: action, + ids: params + }) +} + +export function patchVmId(action, params) { + return request.patch(`${vmUrl}/${params.id ? params.id : params.serverId}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function vmUsers(params) { + return request.post(`${vmUrl}/users`, wrapperParams(params)) +} + +export function vmTenants(params) { + return request.put(`${vmUrl}/tenant`, wrapperParams(params)) +} + +export function vmSnapshot(params) { + return request.post(`${vmUrl}/${params.serverId}/snapshots`, wrapperParams(params)) +} + +export function removeVmUsers(params) { + return request.delete(`${vmUrl}/users`, { + data: wrapperParams(params) + }) +} + +export function modifyVmAccounts(params) { + return request.put(`${vmUrl}/${params.id}/accounts`, wrapperParams(params)) +} + +export function modifyVmVcPassword(params) { + return request.put(`${vmUrl}/${params.id}/password`, wrapperParams(params)) +} + +export function modifyVmOpPassword(params) { + return request.patch(`${vmUrl}/${params.id}/password`, wrapperParams(params)) +} + +export function vmHotConfigEnable(params) { + return request.patch(`${vmUrl}/${params.id ? params.id : params.serverId}/pluggable`, wrapperParams(params)) +} + +export function vmVmtools(action, params) { + return request.patch(`${vmUrl}/${params.id}/vmtools`, { + action: action, + ...wrapperParams(params) + }) +} +export function beforeAccessResource(id, params) { + return request.get(`/nms/v1/resources/vm_access/${id}`, { + params: params + }) +} +export function accessResource(action, params) { + return request.patch(`/nms/v1/resources/vm_access/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function modifyVmTags(params) { + return request.put(`${vmUrl}/tags`, wrapperParams(params)) +} + +export function modifyTags(params) { + return request.post('/ims/v1/tags/resources', wrapperParams(params)) +} + +export function getVmConsole(id, params) { + return request.get(`${vmUrl}/${id}/console`, { + params: wrapperParams(params) + }) +} + +export function getVcConsole(id, params) { + return request.get(`${vmUrl}/${id}/console`, { params }) +} + +export function getVmTickets(params) { + return request.get(`${vmUrl}/${params.id}/tickets`, { + params: wrapperParams(params) + }) +} + +export function getVmStatistics(params) { + return request.get(`${vmUrl}/statistics`, { + params: wrapperParams(params) + }) +} + +export function vmTools(params) { + return request.patch(`${vmUrl}/${params.id}/vmtools`, { params }) +} + +// 虚拟机安全组 +export function vmJoinGroup(params) { + return request.post(`${vmUrl}/${params.id}/sgroups`, wrapperParams(params)) +} + +export function vmJoinGroupAction(action, params) { + return request.post(`${vmUrl}/${params.id}/sgroups`, { + action: action, + ...wrapperParams(params) + }) +} + +export function vmDeleteGroup(params) { + return request.delete(`${vmUrl}/${params.id}/sgroups`, { + params: wrapperParams(params) + }) +} + +export function getVmGroup(id, params) { + return request.get(`${vmUrl}/${id}/sgroups`, { params }) +} + +export function putGrouosVm(params) { + return request.put(`${vmUrl}/groups`, wrapperParams(params)) +} + +export function getVmTemplates(params) { + return request.get(`${vmUrl}/${params.vdcId}/templates`, { + params: wrapperParams(params) + }) +} + +export function createVmTemplate(params) { + return request.post(`${vmUrl}/${params.id}/templates`, wrapperParams(params)) +} + +export function vmAttachNetowrk(params) { + return request.post(`${vmUrl}/${params.id}/networks`, wrapperParams(params)) +} + +export function vmBaychMountNetowrk(params) { + return request.post(`${vmUrl}/networks`, wrapperParams(params)) +} + +export function getVmNetowrk(params) { + return request.get(`${vmUrl}/${params.id}/networks`, { + params: wrapperParams(params) + }) +} + +export function vmDeleteNetwork(params) { + return request.delete(`${vmUrl}/${params.id}/networks`, { + params: wrapperParams(params) + }) +} + +export function vmDeleteNetworkQos(params) { + return request.post(`${vmUrl}/${params.id}/networks/qos`, wrapperParams(params)) +} + +export function patchVmResize(action, params) { + return request.patch(`${vmUrl}/${params.id}/flavors`, { + action: action, + ...wrapperParams(params) + }) +} + +export function getVmFlavor(params) { + return request.get(`${vmUrl}/flavors`, { params }) +} + +export function getVmPorts(id, params) { + return request.get(`${vmUrl}/${id}/ports`, { params }) +} + +export function patchVmTime(action, params) { + return request.patch(`${vmUrl}/${params.id ? params.id : params.resId}/empiretime`, { action: action, ...wrapperParams(params) }) +} + +// 虚拟机密钥 +export function getVmKey(params) { + return request.get(`${vmUrl}/${params.id}/keypairs`, { params }) +} + +export function patchVmKey(action, params) { + return request.patch(`${vmUrl}/${params.id}/keypairs`, { + action: action, + ...wrapperParams(params) + }) +} + +export function vmSnapshots(params) { + return request.post('/ims/v1/vms/snapshots', wrapperParams(params)) +} + +export function patchVmVolumes(action, params) { + return request.patch(`${vmUrl}/${params.serverId}/volumes`, { + action: action, + ...wrapperParams(params) + }) +} + +export function getVmVolumes(action, params) { + return request.get(`${vmUrl}/${params.id}/volumes`, { + action: action, + params: wrapperParams(params) + }) +} + +// 主机 +const hostUrl = '/ims/v1/hosts' +export function getHost(params) { + return request.get(hostUrl, { + params + }) +} + +export function createHost(params, type) { + return request.post(hostUrl, { ...wrapperParams(params), type: type || 'Host' }) +} + +export function createVcHost(params) { + return request.post(hostUrl, { ...params }) +} + +export function createPhost(params) { + return request.post(hostUrl, params) +} + +export function modifyHost(params, type) { + return request.put(`${hostUrl}/${params.id}`, { ...wrapperParams(params), type: type || 'Host' }) +} + +export function removeHost(id, type) { + return request.delete(`${hostUrl}/${id}`, { params: { type: type || 'Host' } }) +} + +export function removeHosts(params, type) { + return request.delete(`${hostUrl}`, { params: wrapperParams(params), type: type || 'Host' }) +} + +export function detailHost(id, type) { + return request.get(`${hostUrl}/${id}`, { type: type || 'Host' }) +} + +export function conditionHost(params) { + return request.get(`${hostUrl}/condition`, { params }) +} + +export function patchHost(action, params, type) { + return request.patch(`${hostUrl}/${params.id}`, { + action: action, + type: type || 'Host', + ...wrapperParams(params) + }) +} + +export function patchHosts(action, params) { + return request.patch(hostUrl, { action: action, ...wrapperParams(params) }) +} + +export function createAlarmHost(params) { + return request.post(`${hostUrl}/${params.id ? params.id : params.target}/thresholds`, { ...wrapperParams(params), type: 'Vmware' }) +} + +export function getAlarmHost(params) { + return request.get(`${hostUrl}/${params.id}/thresholds`, { + params: wrapperParams(params), + type: 'Vmware' + }) +} + +export function putCluterHost(params) { + return request.put(`/ims/v1/clusters/${params.id ? params.id : params.hostId}/hosts`, wrapperParams(params)) +} + +export function putHostGroups(params) { + return request.put(`/ims/v1/hosts/${params.id}/groups`, { ...wrapperParams(params), type: 'Host' }) +} + +export function getHostMetrics(params) { + const { type } = params + const obj = { + params: params, + type: type + } + return request.get(`${hostUrl}/${params.id}/metrics`, { params }) +} +export function getClusterMetrics(params) { + return request.get(`/ims/v1/clusters/${params.id}/metrics`, { + params: wrapperParams(params) + }) +} + +export function putHostTags(params) { + return request.put('/ims/v1/hosts/tags', { ...wrapperParams(params), type: 'Vmware' }) +} + +// 快照 +const snapshotUrl = '/ims/v1/snapshots' +export function getSnapshot(params) { + return request.get(snapshotUrl, { + params + }) +} + +export function createSnapshot(params) { + return request.post(snapshotUrl, wrapperParams(params)) +} + +export function modifySnapshot(params) { + return request.put(`${snapshotUrl}/${params.id}`, params) +} + +export function removeSnapshot(id) { + return request.delete(`${snapshotUrl}/${id}`) +} + +export function detailSnapshot(id) { + return request.get(`${snapshotUrl}/${id}`) +} + +export function removeSnapshots(params) { + return request.delete(`${snapshotUrl}`, { data: params }) +} + +export function conditionSnapshot(params) { + return request.get(`${snapshotUrl}/condition`, { params }) +} + +export function patchSnapshot(action, params) { + return request.patch(`${snapshotUrl}/${params.id ? params.id : params.resId}`, { action: action, ...wrapperParams(params) }) +} + +export function getSnapshotTree(params) { + return request.get(`${snapshotUrl}/tree`, { + params + }) +} + +// 机房 +const roomUrl = '/ims/v1/rooms' +export function getRoom(params) { + return request.get(roomUrl, { + params + }) +} + +export function createRoom(params) { + return request.post(roomUrl, wrapperParams(params)) +} + +export function modifyRoom(params) { + return request.put(`${roomUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRoom(id) { + return request.delete(`${roomUrl}/${id}`) +} + +export function detailRoom(id) { + return request.get(`${roomUrl}/${id}`) +} + +// 机柜 +const rackUrl = '/ims/v1/racks' +export function getRack(params) { + return request.get(rackUrl, { + params + }) +} + +export function createRack(params) { + return request.post(rackUrl, wrapperParams(params)) +} + +export function modifyRack(params) { + return request.put(`${rackUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRack(id) { + return request.delete(`${rackUrl}/${id}`) +} + +export function detailRack(id) { + return request.get(`${rackUrl}/${id}`) +} + +export function patchRack() { + return request.patch(`${rackUrl}`, { + action: 'sync' + }) +} + +// 路由 +const routerUrl = '/ims/v1/routers' +export function getRouter(params) { + return request.get(routerUrl, { + params + }) +} + +export function createRouter(params) { + return request.post(routerUrl, wrapperParams(params)) +} + +export function modifyRouter(params) { + return request.put(`${routerUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRouter(id) { + return request.delete(`${routerUrl}/${id}`) +} + +export function detailRouter(id) { + return request.get(`${routerUrl}/${id}`) +} + +export function removeRouters(params) { + return request.delete(`${routerUrl}`, { data: params }) +} + +export function conditionRouter(params) { + return request.get(`${routerUrl}/${params.id}`, { params }) +} + +export function patchRouter(action, params) { + return request.patch(`${routerUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function attachRouterSubents(params) { + return request.post(`${routerUrl}/${params.id}/subnets`, wrapperParams(params)) +} + +export function detachRouterSubents(params) { + return request.delete(`${routerUrl}/${params.id}/subnets`, { + params + }) +} + +// 端口 +const portUrl = '/ims/v1/ports' +export function getPort(params) { + return request.get(portUrl, { + params + }) +} + +export function createPort(params) { + return request.post(portUrl, wrapperParams(params)) +} + +export function modifyPort(params) { + return request.put(`${portUrl}/${params.id}`, wrapperParams(params)) +} + +export function removePort(id) { + return request.delete(`${portUrl}/${id}`) +} + +export function detailPort(id) { + return request.get(`${portUrl}/${id}`) +} + +export function removePorts(params) { + return request.delete(`${portUrl}`, { data: params }) +} + +export function conditionPort(params) { + return request.get(`${portUrl}/${params.id}`, { params }) +} + +export function patchPort(action, params) { + return request.patch(`${portUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function attachPortSubents(params) { + return request.post(`${portUrl}/${params.id}/subnets`, wrapperParams(params)) +} + +export function getPortVm(id, params) { + return request.get(`${vmUrl}/${id}/ports`, { params }) +} + +export function getPortNetworks(id, params) { + return request.get(`${networkUrl}/${id}/ports`, { params: wrapperParams(params) }) +} + +// 操作记录 +const resUrl = '/ims/v1/events' +export function getRes(params) { + return request.get(resUrl, { + params + }) +} + +// 告警 +export function getAlarmLevel(params) { + return request.get('/cos/v1/quotas/thresholds', { + params: wrapperParams(params) + }) +} + +export function setAlarmLevel(params) { + return request.post('/cos/v1/quotas/thresholds', wrapperParams(params)) +} + +// osd +const osdUrl = '/dms/v1/storages/osds' +export function getOsd(params) { + return request.get(osdUrl, { + params + }) +} + +export function createOsd(params) { + return request.post(osdUrl, wrapperParams(params)) +} + +export function modifyOsd(params) { + return request.put(`${osdUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeOsd(id) { + return request.delete(`${osdUrl}/${id}`) +} + +export function detailOsd(id) { + return request.get(`${osdUrl}/${id}`) +} + +export function patchOsd(action, params) { + return request.patch(`${osdUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +export function actionOsd(action, params) { + return request.post(osdUrl, { action: action, ...wrapperParams(params) }) +} + +// pool +const poolUrl = '/ims/v1/ceph/pools' +export function getPool(params) { + return request.get(poolUrl, { + params + }) +} + +export function createPool(params) { + return request.post(poolUrl, wrapperParams(params)) +} + +export function modifyPool(params) { + return request.put(`${poolUrl}/${params.id}`, wrapperParams(params)) +} + +export function removePool(id) { + return request.delete(`${poolUrl}/${id}`) +} + +export function detailPool(id) { + return request.get(`${poolUrl}/${id}`) +} + +// 资源池 +const resPoolUrl = '/ims/v1/vrps' +export function getRespool(params) { + return request.get(`${resPoolUrl}/condition`, { + params + }) +} + +export function createRespool(params) { + return request.post(resPoolUrl, wrapperParams(params)) +} + +export function modifyRespool(params) { + return request.put(`${resPoolUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeRespool(id) { + return request.delete(`${resPoolUrl}/${id}`) +} + +export function detailRespool(id) { + return request.get(`${resPoolUrl}/${id}`) +} + +// VAPP +const vappsUrl = '/ims/v1/vapps' +export function getVapps(params) { + return request.get(`${vappsUrl}/condition`, { + params + }) +} + +export function createVapps(params) { + return request.post(vappsUrl, wrapperParams(params)) +} + +export function modifyVapps(params) { + return request.put(`${vappsUrl}/${params.id}`, params) +} + +export function removeVapps(id) { + return request.delete(`${vappsUrl}/${id}`) +} + +export function detailVapps(id) { + return request.get(`${vappsUrl}/${id}`) +} + +export function patchVapp(action, params) { + return request.patch(`${vappsUrl}/${params.id}`, { + action: action, + ...wrapperParams(params) + }) +} + +// 资源 +const resourceUrl = '/ims/v1/resources' +export function getResource(params) { + return request.get(resourceUrl, { + params + }) +} + +export function createResource(params) { + return request.post(resourceUrl, wrapperParams(params)) +} + +export function modifyResource(params) { + return request.put(`${resourceUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeResource(id) { + return request.delete(`${resourceUrl}/${id}`) +} + +export function detailResource(id) { + return request.get(`${resourceUrl}/${id}`) +} + +export function getResourceAccounts(params) { + return request.get('/ims/v1/resources/accounts', { + params: wrapperParams(params) + }) +} + +export function getResourceAccount(params) { + return request.get('/ims/v1/resources/account', { + params + }) +} + +export function putTimetask(params, url) { + return request.put(`/${url || 'ims'}/v1/timedtask/${params.id}`, wrapperParams(params)) +} + +export function taskServer(params) { + return request.post('/ims/v1/server/task', wrapperParams(params)) +} + +export function getTaskServer(params) { + return request.get('/ims/v1/server/task', { params: wrapperParams(params) }) +} + +// csc订购 + +const cloudservicesUrl = '/cos/v1/cloudservices' + +export function createCloudServices(params) { + return request.post(cloudservicesUrl, wrapperParams(params)) +} +export function shoppingCloudServices(params) { + return request.post(`${cloudservicesUrl}/shopping`, wrapperParams(params)) +} + +export function shoppingOkCloudServices(params) { + return request.put(`${cloudservicesUrl}/shopping`, wrapperParams(params)) +} + +export function getVmApply(params) { + return request.get('/cos/v1/cloud/resource/apply', { params: wrapperParams(params) }) +} +export function getOperationsApply(params) { + return request.get('/cos/v1/operations/reports/apply', { params: wrapperParams(params) }) +} +// 虚拟机存储策略 +export function getVmPbm(params) { + return request.get('/ims/v1/pbm/profile', { params }) +} + +export function patchDisk(params) { + return request.patch('/ims/v1/vms/disks', { + ...wrapperParams(params) + }) +} + +// 克隆vc +export function vcCloneVm(params) { + return request.post('/cos/v1/resource/clone', wrapperParams(params)) +} + +export function deleteRecycleVm(params) { + return request.delete('/cos/v1/resource') +} + +// 清除同步日志记录 +export function deletePlatformLog(params) { + return request.delete('/cos/v1/vendors/records/time', { params: wrapperParams(params) }) +} + +const FarmssUrl = '/ims/v1/horizon/farms' +export function getFarms(params) { + return request.get(FarmssUrl, { + params + }) +} +export function createFarms(params) { + return request.post(FarmssUrl, wrapperParams(params)) +} + +export function modifyFarms(params) { + return request.put(`${FarmssUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeFarms(id) { + return request.delete(`${FarmssUrl}/${id}`) +} + +export function detailFarms(id) { + return request.get(`${FarmssUrl}/${id}`) +} + +const SessionssUrl = '/ims/v1/horizon/sessions' +export function getSessions(params) { + return request.get(SessionssUrl, { + params + }) +} +export function createSessions(params) { + return request.post(SessionssUrl, wrapperParams(params)) +} + +export function modifySessions(params) { + return request.put(`${SessionssUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeSessions(id) { + return request.delete(`${SessionssUrl}/${id}`) +} + +export function detailSessions(id) { + return request.get(`${SessionssUrl}/${id}`) +} + +const userOrgroupsUrl = '/ims/v1/horizon/users-or-groups' +export function getuserOrgroup(params) { + return request.get(userOrgroupsUrl, { + params + }) +} +export function createuserOrgroup(params) { + return request.post(userOrgroupsUrl, wrapperParams(params)) +} + +export function modifyuserOrgroup(params) { + return request.put(`${userOrgroupsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeuserOrgroup(id) { + return request.delete(`${userOrgroupsUrl}/${id}`) +} + +export function detailuserOrgroup(id) { + return request.get(`${userOrgroupsUrl}/${id}`) +} + +const VcenterssUrl = '/ims/v1/horizon/vcenters' +export function getVcenters(params) { + return request.get(VcenterssUrl, { + params + }) +} +export function createVcenters(params) { + return request.post(VcenterssUrl, wrapperParams(params)) +} + +export function modifyVcenters(params) { + return request.put(`${VcenterssUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeVcenters(id) { + return request.delete(`${VcenterssUrl}/${id}`) +} + +export function detailVcenters(id) { + return request.get(`${VcenterssUrl}/${id}`) +} + +const desktoPoolsUrl = '/ims/v1/horizon/desktop-pools' +export function getDesktoPool(params) { + return request.get(desktoPoolsUrl, { + params + }) +} +export function createDesktoPool(params) { + return request.post(desktoPoolsUrl, wrapperParams(params)) +} + +export function modifyDesktoPool(params) { + return request.put(`${desktoPoolsUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDesktoPool(id) { + return request.delete(`${desktoPoolsUrl}/${id}`) +} + +export function detailDesktoPool(id) { + return request.get(`${desktoPoolsUrl}/${id}`) +} + +// 内容库 +const libraryUrl = '/ims/v1/content/libraries' +export function getLibrary(params) { + return request.get(libraryUrl, { + params + }) +} + +export function detailLibrary(id) { + return request.get(`${libraryUrl}/${id}`) +} + +export function createLibraryServer(params) { + return request.post(`${libraryUrl}/deploy`, wrapperParams(params)) +} + +export function detailLibraryList(params) { + return request.get(`${libraryUrl}/items`, { + params + }) +} +export function modifyLibraryAccounts(params) { + return request.get(`${libraryUrl}/item/${params.id}/accounts`, { + params + }) +} +// 金山回归接口 +// logAnalytics +const logAnalyticsUrl = '/ims/v1/log/analytics/list' +export function getLogAnalytics(params) { + return request.get(logAnalyticsUrl, { + params + }) +} + +export function createLogAnalytics(params) { + return request.post('/ims/v1/log/analytics', wrapperParams(params)) +} + +export function removeLogAnalytics(params) { + return request.delete('/ims/v1/log/analytics/remove', { params: wrapperParams(params) }) +} + +export function detailLogAnalytics(params) { + return request.post('/ims/v1/log/analytics/detail', wrapperParams(params)) +} + +export function removeResourceUsers(url, params) { + return request.delete(`${url}/${params.id}/users`, { + params: wrapperParams(params) + }) +} + +export function resourceBatchUsers(url, params) { + return request.post(url, wrapperParams(params)) +} + +export function removeVpcUsers(id) { + return request.delete(`/ims/v1/vpcs/${id}/tenants`) +} + +export function resourceUsers(url, params) { + return request.post(`${url}/${params.id}/users`, wrapperParams(params)) +} + +export function vmBindLog(id, params) { + return request.post(`/ims/v1/vms/${id}/extension`, wrapperParams(params)) +} + +// 华泰回归接口 +export function createTags(params) { + return request.post('/ims/v1/tag', wrapperParams(params)) +} + +export function copyImage(params) { + return request.post(`${imageUrl}/copy`, wrapperParams(params)) +} + +export function createVmConfigSeq(params) { + return request.post(`${vmUrl}/configSeq`, wrapperParams(params)) +} + +export function detailSoftCategory(val) { + return request.get('/sms/v1/dictionaries/children', { + params: { + value: val + } + }) +} + +export function getIpvs(params) { + return request.get('/ims/v1/vpcs/cidr', { + params + }) +} +export function getTags(params) { + return request.get('ims/v1/tag', { + params + }) +} +// 弹性IP +const elasticipsUrl = '/ims/v1/elasticips' +export function getElasticips(params) { + return request.get(elasticipsUrl, { + params + }) +} +export function getElasticipsFrees(params) { + return request.get(`${elasticipsUrl}/frees`, { + params + }) +} + +export function getListEip(params) { + return request.get(`${elasticipsUrl}/frees`, { + params: wrapperParams(params) + }) +} +export function unreleaseElasticips(params) { + return request.post(`${elasticipsUrl}`, params) +} +export function releaseElasticips(id) { + return request.delete(`${elasticipsUrl}/${id}`) +} +export function checkElasticips(id) { + return request.get(`${elasticipsUrl}/${id}`) +} +export function associateElasticipsIp(id, params) { + return request.patch(`${elasticipsUrl}/${id}`, params) +} +export function disAssociateElasticipsIp(params, id) { + return request.patch(`${elasticipsUrl}/${id}`, params) +} +export function editElasticipsIp(id, params) { + return request.put(`${elasticipsUrl}/${id}`, wrapperParams(params)) +} +export function editBandwidth(id, params) { + return request.put(`${elasticipsUrl}/bandwidth/${id}`, params) +} + +export function getVmBusiness(id) { + return request.get(`${vmUrl}/getBusinessById/${id}`) +} + +export function mapSubnet(id, params) { + return request.patch(`${subnetUrl}/${id}/mapping`, params) +} + +export function operationIpvs(id, params) { + return request.patch(`ims/v1/vpcs/${id}/operation`, params) +} + +export function operationSubIpvs(id, params) { + return request.patch(`ims/v1/subnets/${id}/operation`, params) +} + +export function setSubnet(id, params) { + return request.patch(`${subnetUrl}/${id}`, params) +} + +export function terminationProtected(params, id) { + return request.patch(`ims/v1/vms/${id}`, params) +} + +// 互联网网关 +const natGatway = '/ims/v1/natgateway' +export function getNatGatway(params) { + return request.get(natGatway, { + params + }) +} +export function getNatGatwayDetail(id) { + return request.get(`${natGatway}/${id}`) +} +export function addNatGatway(params) { + return request.post(natGatway, params) +} +export function editNatGatway(id, params) { + return request.put(`${natGatway}/${id}`, wrapperParams(params)) +} +export function deleteNatGatway(id, params) { + if (params != null) { + return request.delete(`${natGatway}/${id}`, { + params + }) + } else { + return request.delete(`${natGatway}/${id}`) + } +} +export function detachNatGatway(params, id) { + return request.patch(`${natGatway}/${id}`, params) +} +export function attachNatGatway(params, id) { + return request.patch(`${natGatway}/${id}`, params) +} + +// 负载均衡器 +export function getBalance(params) { + return request.get('/ims/v1/lbs', { + params + }) +} +export function detailBalance(id) { + return request.get(`/ims/v1/lbs/${id}`) +} +export function deleteBalancer(id) { + return request.delete(`/ims/v1/lbs/${id}`) +} +export function editHuaweiBalance(id, params) { + return request.put(`/ims/v1/lbs/${id}`, wrapperParams(params)) +} +export function editBalance(params) { + return request.put(`/ims/v1/lbs/${params.balancer.id}`, wrapperParams(params)) +} +export function balanceSetting(id, params) { + return request.patch(`/ims/v1/lbs/${id}`, params) +} +export function getListeners(params) { + return request.get('/ims/v1/lb/listeners', { + params + }) +} +export function getTargetgroups(params) { + return request.get('/ims/v1/lb/targetgroups', { + params + }) +} +export function detailTargetgroups(id) { + return request.get(`/ims/v1/lb/targetgroups/${id}`) +} +export function getTargets(params) { + return request.get('/ims/v1/lb/targets', { + params + }) +} +export function getRoutetables(params) { + return request.get('/ims/v1/routetables', { + params + }) +} +export function createRoutetables(params) { + return request.post('/ims/v1/routetables', wrapperParams(params)) +} +export function delRoutetables(id) { + return request.delete(`/ims/v1/routetables/${id}`) +} +export function editRoutetables(params) { + return request.put(`/ims/v1/routetables/${params.id}`, wrapperParams(params)) +} +export function settingRoutetables(params) { + return request.patch('/ims/v1/routetables/associations', wrapperParams(params)) +} +export function getRoutetablesDetail(id) { + return request.get(`/ims/v1/routetables/${id}`) +} +export function getRoutetablesDetailRoute(params) { + return request.get('/ims/v1/routetables/routes', { + params + }) +} +export function createRoutetablesDetailRoute(params) { + return request.post('/ims/v1/routetables/routes', params) +} +export function delRoutetablesDetailRoute(id) { + return request.delete(`/ims/v1/routetables/routes/${id}`) +} +export function getRoutetablesSubnetAssociations(params) { + return request.get('/ims/v1/routetables/associations', { + params + }) +} +export function getRoutetablesSubnet(params) { + return request.get('/ims/v1/subnets', { + params + }) +} +export function getRoutetablesCreateSubnet(params) { + return request.post('/ims/v1/routetables/associations', wrapperParams(params)) +} +export function getRoutetablesEditSubnet(params) { + return request.patch('/ims/v1/routetables/associations', wrapperParams(params)) +} +export function getRoutetablesDelSubnet(id, params) { + if (params) { + return request.delete(`/ims/v1/routetables/associations/${id}`, wrapperParams(params)) + } else { + return request.delete(`/ims/v1/routetables/associations/${id}`) + } +} +export function deleteTargetObject(id, params) { + return request.patch(`ims/v1/lb/targetgroups/${id}/operation`, params) +} +// 目标群组 获取table的数据 +export function getInstanceDataList(params) { + return request.get('ims/v1/vms', { + params: params + }) +} +// 目标群组instance时,注册目标 +export function registerTargets(id, params) { + return request.patch(`ims/v1/lb/targetgroups/${id}/operation`, params) +} +// 删除目标群组 +export function deleteTargetGroup(id) { + return request.delete(`ims/v1/lb/targetgroups/${id}`) +} +// 新增目标群组 +export function createTargetGroup(params) { + return request.post('ims/v1/lb/targetgroups', wrapperParams(params)) +} +// 删除负载均衡 +export function deleteBalance(id) { + return request.delete(`ims/v1/lbs/${id}`) +} +// 删除负载均衡侦听器 +export function deleteBalanceWatch(id) { + return request.delete(`ims/v1/lb/listeners/${id}`) +} +export function getAliEigs(params) { + return request.get('ims/v1/natgateway/availableGateway', { + params: params + }) +} +export function getAliEnis(params) { + return request.get('ims/v1/azure/nics/availableNics', { + params: params + }) +} +export function getAliElbs(params) { + return request.get('ims/v1/lbs/availableLbs', { + params: params + }) +} +export function getSants(params) { + return request.get('/ims/v1/natgateway/snat/rule', { + params: params + }) +} +export function getSantSubnets(params) { + return request.get('/ims/v1/natgateway/snat/rule/subnet', { + params + }) +} +export function getSantEcss(params) { + return request.get('/ims/v1/natgateway/snat/rule/ecs', { + params + }) +} +export function getSantIps(params) { + return request.get('/ims/v1/elasticips/natgateway', { + params + }) +} +export function createSant(params) { + return request.post('/ims/v1/natgateway/snat/rule', wrapperParams(params)) +} +export function editSant(id, params) { + return request.put(`/ims/v1/natgateway/snat/rule/${id}`, wrapperParams(params)) +} +export function delSant(id) { + return request.delete(`/ims/v1/natgateway/snat/rule/${id}`) +} +export function getEditSnatRule(id) { + return request.get(`/ims/v1/natgateway/snat/rule/${id}`) +} +export function getDants(params) { + return request.get('/ims/v1/natgateway/dnat/rule', { + params: params + }) +} +export function getDantEips(params) { + return request.get('/ims/v1/natgateway/dnat/rule/eip', { + params: params + }) +} +export function getDantPrivateIps(params) { + return request.get('/ims/v1/natgateway/listAvailablePrivateIp', { + params: params + }) +} +export function createDant(params) { + return request.post('/ims/v1/natgateway/dnat/rule', wrapperParams(params)) +} +export function getEditDnatRule(id) { + return request.get(`/ims/v1/natgateway/dnat/rule/${id}`) +} +export function editDant(id, params) { + return request.put(`/ims/v1/natgateway/dnat/rule/${id}`, wrapperParams(params)) +} +export function delDant(id) { + return request.delete(`/ims/v1/natgateway/dnat/rule/${id}`) +} +export function getDantPrivateIp(id) { + return request.get(`/ims/v1/natgateway/dnat/rule/${id}/port`) +} + +export function createLbMembers(id, params) { + return request.patch(`ims/v1/lb/pools/${id}/members`, wrapperParams(params)) +} + +export function createLbPools(params) { + return request.post('ims/v1/lb/pools', wrapperParams(params)) +} + +export function deleteLbMembers(id, params) { + return request.patch(`ims/v1/lb/pools/${id}/members`, wrapperParams(params)) +} + +export function deleteLbPools(id) { + return request.delete(`ims/v1/lb/pools/${id}`) +} + +export function editLbPools(id, params) { + return request.put(`ims/v1/lb/pools/${id}`, wrapperParams(params)) +} + +export function getLbMembers(params) { + return request.get('ims/v1/lb/members', { + params + }) +} + +export function createListeners(params) { + return request.post('/ims/v1/lb/listeners', wrapperParams(params)) +} + +export function getNatList(params) { + return request.get('/ims/v1/natgateway', { + params + }) +} + +export function delNat(id) { + return request.delete(`/ims/v1/natgateway/${id}`) +} + +export function getEditData(id) { + return request.get(`/ims/v1/natgateway/${id}`) +} + +export function getSubnets(params) { + return request.get('/ims/v1/subnets', { + params + }) +} + +export function getElasticipsIp(params) { + return request.get('/ims/v1/elasticips', { + params + }) +} + +export function createNatgateway(params) { + return request.post('/ims/v1/natgateway', { + params + }) +} + +export function editNatgateway(params) { + return request.put(`/ims/v1/natgateway/${params.id}`, wrapperParams(params)) +} + +export function editNat(id, params) { + return request.put(`/ims/v1/natgateway/${id}`, wrapperParams(params)) +} + +export function getListAvailableForRoute(params) { + return request.get('ims/v1/natgateway/listAvailableForRoute', { + params + }) +} + +export function getLbListenById(id) { + return request.get(`${lbLintenUrl}/${id}`) +} + +export function getLbPools(params) { + return request.get('ims/v1/lb/pools', { + params + }) +} + +export function getListenControls(params) { + return request.get('ims/v1/controls', { + params + }) +} + +export function getRegionZone(id, params) { + return request.get(`/ims/v1/regions/${id}/zones`, { + params: wrapperParams(params) + }) +} + +export function removeHuaWeiVm(id, params) { + return request.delete(`${vmUrl}/${id}`, { + data: params + }) +} + +export function createData(params) { + return request.post('/ims/v1/lbs', params) +} + +export function syncVdc(id, params) { + const obj = new FormData() + obj.append('type', params.type) + return request.post(`${vdcUrl}/${id}/sync`, obj) +} +export function syncCluster(id) { + return request.post(`/ims/v1/clusters/${id}/sync`) +} +export function syncHosts(id) { + return request.post(`/ims/v1/hosts/${id}/sync`) +} + +export function getopo(params) { + return request.get('/ims/v1/instances/topology', { + params + }) +} diff --git a/src/services/platform/pool.js b/src/services/platform/pool.js new file mode 100644 index 0000000..43f2e73 --- /dev/null +++ b/src/services/platform/pool.js @@ -0,0 +1,16 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const baseUrl = '/ims/v1/pool/groups' + +export function getPool(params, options = {}) { + return request.get(baseUrl, { + params, + ...options + }) +} +export function getPoolConditions(params) { + return request.get(`${baseUrl}/condition`, { + params + }) +} diff --git a/src/services/services/catelog.ts b/src/services/services/catelog.ts new file mode 100644 index 0000000..cb6aee8 --- /dev/null +++ b/src/services/services/catelog.ts @@ -0,0 +1,207 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +// 图标 +const iconUrl = '/cos/v1/icons' +export function getIcon(params: any) { + return request.get(iconUrl, { params }) +} + +export function removeIcon(id: number) { + return request.delete(`${iconUrl}/${id}`) +} + +export function createIcon(params: any) { + return request.post(iconUrl, { params }) +} + +// 服务菜单 +const menuUrl = '/cos/v1/services/menus' +export function getMenu(params: any) { + return request.get(menuUrl, { params }) +} + +export function createMenu(params: any) { + return request.post(menuUrl, wrapperParams(params)) +} + +export function modifyMenu(params: any) { + return request.put(`${menuUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeMenu(id: number) { + return request.delete(`${menuUrl}/${id}`) +} + +export function subnetDetail(id: number) { + return request.get(`${menuUrl}/${id}`) +} + +// 服务列表 +const itemUrl = '/cos/v1/services/items' +export function getItems(params: any) { + return request.get('/cos/v1/cloud/services', { params }) +} + +export function createItems(params: any) { + return request.post(itemUrl, wrapperParams(params)) +} + +export function modifyItems(params: any) { + return request.put(`${itemUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeItems(id: number) { + return request.delete(`${itemUrl}/${id}`) +} + +export function itemsDetail(id: number) { + return request.get(`${itemUrl}/${id}`) +} + +// 服务发布 +export function itemsRelease(id: number, params: any) { + return request.patch(`${itemUrl}/${id}`, params) +} + +// 服务下架 +export function itemsUnRelease(id: number, params: any) { + return request.patch(`${itemUrl}/${id}`, params) +} + +// 绑定流程 +export function itemsBindFlow(params: any) { + return request.patch(`${itemUrl}/${params.id}`, { params }) +} + +// 服务的绑定流程 +export function itemsBindFlows(params: any) { + return request.get(`${itemUrl}/${params.id}/flow`, { params }) +} + +// 是否绑定了流程 +export function isBindFlow(params: any) { + return request.get(`${itemUrl}/isBinding`, { params }) +} + +// 绑定流程的服务列表 +export function bindFlowItems(params: any) { + return request.get(`${itemUrl}/flows/services`, { params }) +} + +// 使用模板的服务列表 +export function templateItems(params: any) { + return request.get(`${itemUrl}/templates/servicess`, { params }) +} + +// 租户下的服务列表 +export function getTenantServices(id: number, params: any) { + return request.get(`/cos/v1/services/tenants/${id}/services/able`, { + params: params + }) +} + +// 租户下授权服务列表 +export function getTenantQuotaServices(id: number, params: any) { + return request.get(`/cos/v1/services/tenants/${id}/able`, { + params: params + }) +} + +// 租户下授权服务列表搜索 +export function searchServicesList(params: any) { + return request.get('/cos/v1/cloud/services', { + params: params + }) +} + +export function conditionServicesList(params: any) { + return request.get('/cos/v1/cloud/services/condition', { + params: params + }) +} + +// 租户下的服务列表 +export function getTenantServicesCode(params: any) { + return request.get('/cos/v1/services/tenants', { + params + }) +} + +// 服务使用记录 +const itemsLogUrl = '/cos/v1/services/items/records' +export function itemsLog(params: any) { + return request.get(itemsLogUrl, { params }) +} + +export function itemsLogChart(params: any) { + return request.get(`${itemsLogUrl}/stats`, { params }) +} + +export function itemsVmLogChart(params: any) { + return request.get(`${itemsLogUrl}/stats`, params) +} + +export function removeItemsLog(id: number) { + return request.delete(`${itemsLogUrl}/${id}`) +} + +// 流程绑定配置列表 +const flowBindConfigUrl = '/cos/v1/flows/configs' +export function flowBindConfig(params: any) { + return request.get(flowBindConfigUrl, { params }) +} + +export function modifyFlowBindConfig(params: any) { + return request.put(`${flowBindConfigUrl}/${params.id}`, wrapperParams(params)) +} + +export function flowBindConfigDetail(params: any) { + return request.get(`${flowBindConfigUrl}/${params.id}`, { params }) +} + +export function flowQueryBindConfigDetail(params: any) { + return request.get(`${flowBindConfigUrl}/query`, { params }) +} + +const flowBindControlConfigUrl = '/cos/v1/flows/tenants' +export function flowBindControlConfig(params: any) { + return request.get(flowBindControlConfigUrl, { params }) +} + +export function modifyFlowBindControlConfig(params: any) { + return request.post(`${flowBindControlConfigUrl}`, wrapperParams(params)) +} + +export function deleteFlow(params: any) { + return request.delete(`${flowBindControlConfigUrl}/${params.id}`) +} + +// 被授权服务的租户 +export function authTenant(id: number) { + return request.get(`${itemUrl}/${id}/tenants`) +} + +// 批量服务授权租户 +export function authAllTenant(params: any) { + return request.patch(`${itemUrl}/tenants/grant`, wrapperParams(params)) +} + +// 多服务授权租户 +export function authsAllTenant(id: number, params: any) { + return request.post(`/cos/v1/services/tenants/${id}/grant`, wrapperParams(params)) +} + +// 服务授权租户 +export function itemsAuthTenant(id: number, params: any) { + return request.patch(`${itemUrl}/${id}/grant`, wrapperParams(params)) +} + +// 通过租户删除租户服务关系 +export function removeTenantItems(id: number) { + return request.delete(`${itemUrl}/tenants/${id}`) +} + +export function patchServices(action: string, params: any) { + return request.patch(`/cos/v1/services/items//${params.id}`, { action: action, ...wrapperParams(params) }) +} diff --git a/src/services/services/flow.js b/src/services/services/flow.js new file mode 100644 index 0000000..77bbbff --- /dev/null +++ b/src/services/services/flow.js @@ -0,0 +1,92 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getFlow(params) { + return request.get('/cos/v1/definitions', { + params: params + }) +} +export function getFlowDetail(id) { + return request.get(`/cos/v1/definitions/${id}`) +} +export function createFlow(params) { + return request.post('/cos/v1/definitions', wrapperParams(params)) +} +export function modifyFlow(params) { + return request.put(`/cos/v1/definitions/${params.id}`, wrapperParams(params)) +} +export function removeFlow(id) { + return request.delete(`/cos/v1/definitions/${id}`) +} +// 终止/激活流程定义 +export function operateFlow(id, params) { + return request.patch(`/cos/v1/definitions/${id}`, params) +} +export function getFlowInstance(params) { + return request.get('/cos/v1/instances', { + params: params + }) +} +export function getFlowInstanceDetail(id) { + return request.get(`/cos/v1/instances/${id}`) +} +// 撤销审批 +export function terminateInstance(id) { + return request.patch( + `/cos/v1/instances/${id}`, + { action: 'terminate' }, + { + options: { + noParam: true + } + } + ) +} +// 审核节点 +export function auditNode(id, params) { + return request.patch(`/cos/v1/nodes/${id}`, params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} +// 获取审批节点 +export function getFlowNodes(id, type) { + return request.get(`/cos/v1/instances/${id}/nodes`, { + params: { + type: type + } + }) +} +// 审批流程操作历史 +export function flowHistory(id) { + return request.get(`/cos/v1/definitions/${id}/history`) +} +// 图标上传 +export function getIcon(params) { + return request({ + method: 'post', + url: '/resource/icon/list', + data: params + }) +} +export function getVar(type) { + return request.get('/cos/v1/variables', { + params: { type } + }) +} +export function createIcon(params) { + return request.post('/ams/v1/icons', wrapperParams(params)) +} +export function modifyIcon(params) { + return request.put(`/ams/v1/icons/${params.id}`, wrapperParams(params)) +} +export function removeIcon(id) { + return request.delete(`/ams/v1/icons/${id}`) +} +export function allJugde(params) { + return request.patch('/cos/v1/nodes', params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} diff --git a/src/services/services/monitor.js b/src/services/services/monitor.js new file mode 100644 index 0000000..d1147ba --- /dev/null +++ b/src/services/services/monitor.js @@ -0,0 +1,47 @@ +import request from 'utils/request' + +const baseUrl = '/cms//v1/monitor/resourcetype' +export function getMonitorSettings(params) { + return request.get(baseUrl, { params }) +} + +export function createMonitorSetting(params) { + return request.post(baseUrl, params) +} + +export function updateMonitorSetting(params, id) { + return request.put(`${baseUrl}/${id}`, params) +} + +export function deleteMonitorSetting(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function deleteAllMonitorSetting(ids) { + return request.delete(`${baseUrl}/remove`, { data: ids }) +} + +const metricUrl = '/cms/v1/metrics' +export function getMonitorList(params) { + return request.get(`${metricUrl}/monitor/list`, { params }) +} + +export function createMetric(params) { + return request.post(metricUrl, params) +} + +export function updateMetric(params, id) { + return request.put(`${metricUrl}/${id}`, params) +} + +export function deleteMetric(id) { + return request.delete(`${metricUrl}/${id}`) +} + +export function getMonitorIds(params) { + return request.get('/cms/v1/metrics/state/ids', { params }) +} + +export function bindMonitorList(params) { + return request.post('/cms/v1/monitor/resourcetype/binding/metrics', params) +} diff --git a/src/services/services/order.js b/src/services/services/order.js new file mode 100644 index 0000000..1a53c17 --- /dev/null +++ b/src/services/services/order.js @@ -0,0 +1,50 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +const orderUrl = '/cos/v1/orders' + +export function getOrder(params) { + return request.get(orderUrl, { + params + }) +} +export function createOrder(params) { + return request.post(orderUrl, wrapperParams(params)) +} +export function modifyOrder(params) { + return request.put(`${orderUrl}/${params.id}`, wrapperParams(params)) +} +export function removeOrder(id) { + return request.delete(`${orderUrl}/${id}`) +} +export function operateOrder(action, params) { + return request.patch(`${orderUrl}`, { + action, + ...params + }) +} +export function getOrderItems(params) { + return request.get(`${orderUrl}/items`, { + params + }) +} + +export function conditionOrder(params) { + return request.get(`${orderUrl}/condition`, { params }) +} + +export function getOrderStats(params) { + return request.get(`${orderUrl}/stats`, { + params: wrapperParams(params) + }) +} +export function getOrderCount() { + return request.get('/cos/v1/orders/count') +} + +export function exportOrders(params) { + downloadFile('/cos/v1/orders/export', params) +} diff --git a/src/services/services/plugins.ts b/src/services/services/plugins.ts new file mode 100644 index 0000000..a0afa40 --- /dev/null +++ b/src/services/services/plugins.ts @@ -0,0 +1,63 @@ +import request from 'utils/request' + +interface PluginParams { + name?: String + code?: String + vendor_type?: String + status?: Boolean + remark?: String + id?: Number +} + +interface BasicParams { + page: Number + rows: Number + [key: string]: any +} + +interface BindParams { + permissionIdList: Array + pluginsCode: String + tenant: Boolean +} + +const baseUrl = '/sms/v1/plugins' +export function getPlugins(params: BasicParams) { + return request.get(baseUrl, { params }) +} + +export function getPluginsConfig(params: BasicParams) { + return request.get(`${baseUrl}/license`, { params }) +} + +export function getPluginById(id: Number | String) { + return request.get(`${baseUrl}/${id}`) +} + +export function addPlugin(params: PluginParams) { + return request.post(baseUrl, params) +} + +export function editPlugin(params: PluginParams) { + return request.put(`${baseUrl}/${params.id}`, params) +} + +export function deletePlugin(id: Number | String) { + return request.delete(`${baseUrl}/${id}`) +} + +export function deleteAllPlugin(ids: any) { + return request.delete(`${baseUrl}/remove`, { data: ids }) +} + +export function updateStatus(id: Number, status: Boolean) { + return request.patch(`${baseUrl}/status`, { id, status }) +} + +export function associateMenu(params: BindParams) { + return request.put('/sms/v1/permissions/binding/plugins', params) +} + +export function getVendors(params: { value: String }) { + return request.get('/sms/v1/dictionaries/children/tree', { params }) +} diff --git a/src/services/services/product.js b/src/services/services/product.js new file mode 100644 index 0000000..ef3a1bd --- /dev/null +++ b/src/services/services/product.js @@ -0,0 +1,53 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const billUrl = '/cos/v1/bills' + +export function getCategories(params) { + return request.get('/cos/v1/services/categories/condition', { + params + }) +} +export function getCategoriesByCode(serviceCode) { + return request.get(`/cos/v1/cloud/services/${serviceCode}/categories`) +} +export function getSkus(params) { + return request.get('/cos/v1/services/skus/condition', { + params + }) +} +export function getSkusDetail(id) { + return request.get(`/cos/v1/services/skus/${id}`) +} + +export function getPrices(params) { + return request.get('/cos/v1/skus/prices', { + params + }) +} +export function getSlaDetail(id) { + return request.get(`cos/v1/services/slas/${id}`) +} +export function applyResource(params) { + return request.post('/cos/v1/resource/application', wrapperParams(params)) +} +export function deleteApplyResource(params) { + return request.delete('/cos/v1/resources/applies', { params: wrapperParams(params) }) +} +export function modifyResource(params) { + return request.post('/cos/v1/resource/alteration', wrapperParams(params)) +} +// 获取VPC列表 +export function getVpc(params) { + return request.get('/ims/v1/nsx/routers', { + params + }) +} +// 服务退订 +export function unsubscribeService(params) { + return request.post('/cos/v1/resource/cancelation', wrapperParams(params)) +} +// 服务延期 +export function delayService(params) { + return request.post('/cos/v1/resource/extension', wrapperParams(params)) +} diff --git a/src/services/services/service.ts b/src/services/services/service.ts new file mode 100644 index 0000000..b72fdfc --- /dev/null +++ b/src/services/services/service.ts @@ -0,0 +1,50 @@ +import { IService } from '@/models/service' +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +export function getVendorTypes(params: any) { + return request.get('/ims/v1/vendors/condition', { + params: { condition: JSON.stringify(params) } + }) +} +const baseUrl = '/cos/v1/cloud/services' +export function getService(params: Base.IListParams) { + return request.get>(baseUrl, { + params + }) +} +export function getServiceDetail(id: number) { + return request.get(`${baseUrl}/${id}`) +} +export function createService(params: IService) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyService(params: IService) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeService(id: number) { + return request.delete(`${baseUrl}/${id}`) +} +export function batchOperateServices(ids: number[], action: 'PUBLISHED' | 'UNPUBLISHED') { + return request.patch(baseUrl, { action, ids }) +} +export function operateService(action: string, id: number) { + return request.patch(`${baseUrl}/${id}`, { + action + }) +} +// 产品树形列表 +export function getServiceTree() { + return request.get('/cos/v1/services/categories/tree') +} +// 流程绑定 +export function bindFlowToService(id: number, params: any[]) { + return request.post(`${baseUrl}/${id}/flows`, params) +} + +export function batchbindFlowToService(serviceIds: number[], serviceFlows: any[]) { + return request.post(`${baseUrl}/flows`, { + serviceIds, + serviceFlows + }) +} diff --git a/src/services/services/spec.ts b/src/services/services/spec.ts new file mode 100644 index 0000000..5efce29 --- /dev/null +++ b/src/services/services/spec.ts @@ -0,0 +1,86 @@ +/** + * Created by HaijunZhang on 2019/5/10. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' +// sku操作 +export function getSku(params: Base.IListParams) { + return request.get('/cos/v1/services/skus', { + params: params + }) +} + +export function getServiceDetail() {} +export function getSkuDetail(id: number) { + return request.get(`/cos/v1/services/skus/${id}`) +} +export function removeSku(id: number) { + return request.delete(`/cos/v1/services/skus/${id}`) +} +export function createSku(params: any) { + return request.post('/cos/v1/services/skus', wrapperParams(params)) +} +export function modifySku(params: any) { + return request.put(`/cos/v1/services/skus/${params.id}`, wrapperParams(params)) +} +// 批量上下架 +export function batchOperateSku(ids: number[], action: string) { + return request.patch('/cos/v1/services/skus/batch', { action, ids }) +} +// 租户授权服务 +export function tenantGrantService(params: any) { + return request.post('/cos/v1/services/tenants/grantservices', wrapperParams(params)) +} +// 服务授权租户 +export function serviceGrantTenant(serviceId: number, tenantIds: any) { + return request.post(`/cos/v1/services/${serviceId}/grant`, tenantIds) +} +export function removeServiceTenant(id: number) { + return request.delete(`/cos/v1/services/tenants/${id}`) +} +// 服务授权租户 多对对 +export function serviceGrantBatch(params: any) { + return request.post('/cos/v1/services/tenants/grantbatch', wrapperParams(params)) +} +// 获取服务下的租户 +export function getTenantByservice(id: number) { + return request.get(`/cos/v1/services/${id}/tenants`) +} +// 使用记录 +export function serviceRecord(params: any) { + return request.get('/cos/v1/services/usages', { + params: params + }) +} +// 实用统计 +export function serviceStatistics(params: any) { + return request.get('/cos/v1/services/usages/statistics', { + params: wrapperParams(params) + }) +} +export function getCategory(params: any) { + return request.get('/cos/v1/services/categories', { + params: params + }) +} +export function createCategory(params: any) { + return request.post('/cos/v1/services/categories', wrapperParams(params)) +} +export function modifyCategory(params: any) { + return request.put(`/cos/v1/services/categories/${params.id}`, wrapperParams(params)) +} +export function removeCategory(id: number) { + return request.delete(`/cos/v1/services/categories/${id}`) +} +export function getCatalog(params: any) { + return request.get('/cos/v1/services/catalogs', { + params + }) +} +export function getCatalogDetail(id: number) { + return request.get(`/cos/v1/services/catalogs/${id}`) +} + +export function getServiceByCode(code: any) { + return request.get(`/cos/v1/services/catalogs/${code}/services`) +} diff --git a/src/services/system/account.js b/src/services/system/account.js new file mode 100644 index 0000000..a9debd4 --- /dev/null +++ b/src/services/system/account.js @@ -0,0 +1,45 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/accounts' +export function getAccount(params) { + return request.get(`${baseUrl}/page`, { + params + }) +} +export function getUserDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createUser(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyUser(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeUser(id) { + return request.delete(`${baseUrl}/${id}`) +} +/* + * action取值为: + * lock active reset accredit change + */ +export function operateUser(id, action, params) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} +export function checkUser(id) { + return request.get(`${baseUrl}/${id}/status`) +} +export function getRolesByUser(id) { + return request.get(`${baseUrl}/${id}/roles`) +} +export function getTrack(params) { + return request.get(`${baseUrl}/track`, { + params: params + }) +} diff --git a/src/services/system/auth.js b/src/services/system/auth.js new file mode 100644 index 0000000..cc4e496 --- /dev/null +++ b/src/services/system/auth.js @@ -0,0 +1,28 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getAuth(params) { + return request.get('/sms/v1/permissions/tree', { + params: wrapperParams(params) + }) +} +export function getAuthByCategory(params) { + return request.get('/sms/v1/permissions', { + params: wrapperParams(params) + }) +} +export function getAuthDetail(id) { + return request.get(`/sms/v1/permissions/${id}`) +} +export function createAuth(params) { + return request.post('/sms/v1/permissions', wrapperParams(params)) +} +export function modifyAuth(params) { + return request.put(`/sms/v1/permissions/${params.id}`, wrapperParams(params)) +} +export function removeAuth(id) { + return request.delete(`/sms/v1/permissions/${id}`) +} diff --git a/src/services/system/bizs.js b/src/services/system/bizs.js new file mode 100644 index 0000000..8b74dca --- /dev/null +++ b/src/services/system/bizs.js @@ -0,0 +1,60 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils/index' + +const baseUrl = '/sms/v1/bizs' +export function getBizs(params) { + console.log(params) + return request.get(baseUrl, { + params + }) +} +export function getBizsDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createBizs(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyBizs(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeBizs(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function removeBizList(params) { + console.log(params) + return request.delete(`${baseUrl}`, { data: params }) +} + +export function getPoolByBiz(id, params) { + return request.get(`${baseUrl}/${id}/pools`, { + params: wrapperParams(params) + }) +} +export function configBizPool(id, params) { + return request.post(`${baseUrl}/${id}/pools`, wrapperParams(params)) +} + +// 获取单个业务的关联项目 +export function getProjectByBizList(id) { + return request.get(`${baseUrl}/${id}/projects`) +} + +export function pacthRelatioonBiz(id, params) { + return request.patch(`${baseUrl}/${id}`, wrapperParams(params)) +} + +export function operateBiz(id, action, params) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} + +// 导出业务列表 +export function exportBizsList(params) { + downloadFile('/sms/v1/bizs/export', params) +} diff --git a/src/services/system/csc_login.js b/src/services/system/csc_login.js new file mode 100644 index 0000000..f59e4a7 --- /dev/null +++ b/src/services/system/csc_login.js @@ -0,0 +1,18 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +export function login(params) { + return request.post('/sms/v1/users/login', params) +} +export function loginByTenant(params) { + return request.post('/sms/v1/tenants/login', params) +} +export function logout() { + return request.post('/sms/v1/users/logout') +} +export function logoutByTenant(params) { + return request.post('/sms/v1/tenants/logout', params) +} diff --git a/src/services/system/depart.ts b/src/services/system/depart.ts new file mode 100644 index 0000000..db8dc17 --- /dev/null +++ b/src/services/system/depart.ts @@ -0,0 +1,31 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' +import { IDepart } from '@/models/depart' + +const baseUrl = '/sms/v1/departments' + +export function getDepart(params: any) { + return request.get(baseUrl, { + params + }) +} +export function getDepartLazy(params: any) { + return request.get(`${baseUrl}/listByParentId`, { + params + }) +} +export function getDepartDetail(id: number) { + return request.get(`${baseUrl}/${id}`) +} +export function createDepart(params: IDepart) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyDepart(params: IDepart) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeDepart(id: number) { + return request.delete(`${baseUrl}/${id}`) +} diff --git a/src/services/system/dictionary.js b/src/services/system/dictionary.js new file mode 100644 index 0000000..7cf03ff --- /dev/null +++ b/src/services/system/dictionary.js @@ -0,0 +1,33 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/dictionaries' +export function getDict(params) { + return request.get(baseUrl, { params }) +} + +export function createDict(params) { + return request.post(baseUrl, wrapperParams(params)) +} + +export function modifyDict(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} + +export function removeDict(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function detailDict(id) { + return request.get(`${baseUrl}/${id}`) +} + +export function getDictChildren(params) { + return request.get(`${baseUrl}/children`, { params }) +} + +export function getDictChildrenTree(params) { + return request.get(`${baseUrl}/children/tree`, { + params: wrapperParams(params) + }) +} diff --git a/src/services/system/document.js b/src/services/system/document.js new file mode 100644 index 0000000..6591fc4 --- /dev/null +++ b/src/services/system/document.js @@ -0,0 +1,47 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cos/v1/documents' +export function getDocument(params) { + return request.get(baseUrl, { + params + }) +} +export function getDocumentDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createDocument(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyDocument(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeDocument(id) { + return request.delete(`${baseUrl}/${id}`) +} + +const categoryUrl = '/cos/v1/documents/category' +export function getCategory(params) { + return request.get(categoryUrl, { + params + }) +} +export function getCategoryDetail(id) { + return request.get(`${categoryUrl}/${id}`) +} +export function createCategory(params) { + return request.post(categoryUrl, wrapperParams(params)) +} +export function modifyCategory(params) { + return request.put(`${categoryUrl}/${params.id}`, wrapperParams(params)) +} +export function removeCategory(id) { + return request.delete(`${categoryUrl}/${id}`) +} + +export function uploadImage(params) { + console.log(params) + return request.post('/cos/v1/documents/pictures', params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} diff --git a/src/services/system/favorite.js b/src/services/system/favorite.js new file mode 100644 index 0000000..71b8380 --- /dev/null +++ b/src/services/system/favorite.js @@ -0,0 +1,25 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +// 判断用户租户路径 +function getUrl(accountCategory) { + return accountCategory === 'Tenant' ? 'tenants' : 'users' +} +export function getService(accountCategory) { + return request.get(`/sms/v1/${getUrl(accountCategory)}/services`) +} +export function getFavorite(accountCategory) { + return request.get(`/sms/v1/${getUrl(accountCategory)}/favorites`) +} +export function createFavorite(id, accountCategory) { + return request.post(`/sms/v1/${getUrl(accountCategory)}/favorites/${id}`) +} +export function removeFavorite(id, accountCategory) { + return request.delete(`/sms/v1/${getUrl(accountCategory)}/favorites/${id}`) +} +export function orderFavorite(params, accountCategory) { + return request.post(`/sms/v1/${getUrl(accountCategory)}/favorites/order`, params) +} diff --git a/src/services/system/index.js b/src/services/system/index.js new file mode 100644 index 0000000..ab83e46 --- /dev/null +++ b/src/services/system/index.js @@ -0,0 +1,78 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function login(params) { + return request.post('/sms/v1/users/login', params) +} +export function getTokenInfo(params) { + return request.post('/sms/v1/sso/token/info', params) +} +export function getToken() { + return request.post('/sms/v1/sso/check') +} +export function getUserInfo() { + return request.get('/sms/v1/login/detail') +} +export function logout() { + return request.post('/sms/v1/users/logout') +} +export function getConfig(params) { + return request.get('/sms/v1/logo', { + params: wrapperParams(params) + }) +} +export function getDict(data) { + return request.get('/dict/children', { + params: wrapperParams(data) + }) +} +export function getSysconf() { + return request.get('/sms/v1/configs') +} +export function getSysconfCode(params) { + return request.get('/sms/v1/configs', { params }) +} +export function modifySysconf(data) { + return request.put('/sms/v1/configs', wrapperParams(data)) +} + +export function syncLdapApi() { + return request.post('/sms/v1/configs/syncLdap') +} +// 获取首页概览信息 +export function getPortal(params) { + return request.get('/ims/v1/portal/platform/stats', { params: wrapperParams(params) }) +} +export function getServiceQuota(tenantId, data) { + return request.get(`/cos/v1/tenants/${tenantId}/quotas`, { + params: wrapperParams(data) + }) +} +export function replaceToken(params) { + return request.get('/sms/v1/token', { params }) +} +// 获取用户权限 +export function getUserPermissions() { + return request.get('/sms/v1/users/permissions') +} +// 获取系统配置信息 +export function getSystemConfigs(params) { + return request.get('/sms/v1/configs', { params }) +} +// 获取树状系统配置信息 +export function getSystemTreeConfigs(params) { + return request.get('/sms/v1/configs/tree', { params }) +} +// 更新系统配置信息 +export function updateSystemConfigs(params) { + return request.put('/sms/v1/system-configs', params, { + headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } } + }) +} +// 测试连接 +export function testLinkApi(category) { + return request.get('/sms/v1/configs/test', { params: { category } }) +} diff --git a/src/services/system/ip_access.js b/src/services/system/ip_access.js new file mode 100644 index 0000000..e2787c0 --- /dev/null +++ b/src/services/system/ip_access.js @@ -0,0 +1,32 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/admissions' + +export function getIpAccess(params) { + return request.get(baseUrl, { + params + }) +} +export function getIpAccessDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createIpAccess(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function removeIpAccess(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function batchRemoveIpAccess(params) { + return request.delete(`${baseUrl}`, { + data: params + }) +} +export function getStrategies(params) { + return request.get('/sms/v1/access/strategies', { + params + }) +} +export function modifyStrategies(params) { + return request.put(`/sms/v1/access/strategies/${params.id}`, wrapperParams(params)) +} diff --git a/src/services/system/license.js b/src/services/system/license.js new file mode 100644 index 0000000..cd0c95c --- /dev/null +++ b/src/services/system/license.js @@ -0,0 +1,26 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' +const baseUrl = '/sms/v1/config' + +export function getStatus(params) { + return request.get(`${baseUrl}/status`, { + params + }) +} +export function getSid() { + return request.get('/sms/v1/status/sids') +} +export function getServer(params) { + return request.get(`${baseUrl}/servers`, { + params + }) +} +export function getLicense() { + return request.get(`${baseUrl}/license`) +} +export function installCaptcha(params) { + return request.post('/sms/v1/config/captcha/install', params) +} diff --git a/src/services/system/log.ts b/src/services/system/log.ts new file mode 100644 index 0000000..58257a8 --- /dev/null +++ b/src/services/system/log.ts @@ -0,0 +1,30 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from '@/common/utils' + +const baseUrl = '/sms/v1/logs' + +export function getLog(params: Base.IListParams) { + return request.get(baseUrl, { + params + }) +} +export function getLogStats() { + return request.get(`${baseUrl}/stats`) +} +export function getLogView() { + return request.get('/cos/v1/logview') +} +export function exportLog() { + downloadFile('/cos/v1/logfile') +} +export function accessLog(params: any) { + downloadFile('/sms/v1/logs/archive', params) +} +export function getRecords(params: any) { + return request.get('/sms/v1/archives', { + params + }) +} diff --git a/src/services/system/manager.ts b/src/services/system/manager.ts new file mode 100644 index 0000000..45cf0b0 --- /dev/null +++ b/src/services/system/manager.ts @@ -0,0 +1,55 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils/index' +import { IUser } from '@/models/user' + +const baseUrl = '/sms/v1/users' +export function getUser(params: Base.IListParams) { + return request.get>(baseUrl, { + params + }) +} +export function getUserDetail(id: number) { + return request.get(`${baseUrl}/${id}`) +} +export function createUser(params: IUser) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyUser(params: IUser) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeUser(id: number) { + return request.delete(`${baseUrl}/${id}`) +} + +export function accreditManager(id: number, roleIds: number[]) { + return request.patch(`${baseUrl}/${id}/accredit`, roleIds) +} +export function resetManager(id: number, password: string) { + return request.patch(`${baseUrl}/${id}/reset`, { password }) +} +export function operateManager(id: number, action: string) { + return request.patch(`${baseUrl}/${id}`, { action }) +} +export function batchOperateManager(ids: number[], action: string) { + return request.patch(`${baseUrl}`, { action, ids }) +} +export function changePassword(id: number, params: { oldPassword: string; password: string }) { + return request.patch(`${baseUrl}/${id}/pwd`, params) +} +export function checkUser(id: number) { + return request.get(`${baseUrl}/${id}/status`) +} +export function getRolesByUser(id: number) { + return request.get(`${baseUrl}/${id}/roles`) +} +export function getTrack(params: Base.IListParams) { + return request.get(`${baseUrl}/track`, { + params + }) +} +export function exportUser(params: Base.IListParams) { + downloadFile(`${baseUrl}/export`, params) +} diff --git a/src/services/system/message.js b/src/services/system/message.js new file mode 100644 index 0000000..bc47a97 --- /dev/null +++ b/src/services/system/message.js @@ -0,0 +1,23 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' + +const baseUrl = '/sms/v1/messages' +export function getMessage(params) { + return request.get(baseUrl, { + params + }) +} +export function getMessageStats() { + return request.get(`${baseUrl}/stats`) +} +export function getMessageDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function removeMessage(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function readAllMessage(params) { + return request.patch(`${baseUrl}`, params) +} diff --git a/src/services/system/migration.js b/src/services/system/migration.js new file mode 100644 index 0000000..554fb06 --- /dev/null +++ b/src/services/system/migration.js @@ -0,0 +1,27 @@ +import request from 'utils/request' + +const baseUrl = '/sms/v1/upgrade' + +export function getMeta() { + return request.get(`${baseUrl}/datasource`) +} + +export function migrationData(params) { + return request.post(`${baseUrl}/datasource`, params) +} + +export function migrationById(recordId, taskId) { + return request.post(`${baseUrl}/records/${recordId}/tasks/${taskId}`) +} + +export function getMigrationData(params) { + return request.get(`${baseUrl}/records`, { params }) +} + +export function getDetail(id) { + return request.get(`${baseUrl}/records/${id}`) +} + +export function getDetailList(id, params) { + return request.get(`${baseUrl}/records/${id}/tasks`, { params }) +} diff --git a/src/services/system/notice.js b/src/services/system/notice.js new file mode 100644 index 0000000..ec3a066 --- /dev/null +++ b/src/services/system/notice.js @@ -0,0 +1,25 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const baseUrl = '/sms/v1/system/notice' + +export function getNotice(params) { + return request.get(baseUrl, { + params + }) +} +export function createNotice(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyNotice(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeNotice(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function sendNotice(id) { + return request.post(`${baseUrl}/send/${id}`) +} diff --git a/src/services/system/order.js b/src/services/system/order.js new file mode 100644 index 0000000..a0cfd3a --- /dev/null +++ b/src/services/system/order.js @@ -0,0 +1,47 @@ +/** + * Created by HaijunZhang on 2019/1/26. + */ +import request from 'utils/request' +import { wrapperParams } from 'util' + +const orderUrl = '/cos/v1/orders' + +export function getOrder(params) { + return request.get(orderUrl, { + params + }) +} +export function createOrder(params) { + return request.post(orderUrl, wrapperParams(params)) +} +export function modifyOrder(params) { + return request.put(`${orderUrl}/${params.id}`, wrapperParams(params)) +} +export function removeOrder(id) { + return request.delete(`${orderUrl}/${id}`) +} + +export function getOrderDetail(id) { + return request.get(`${orderUrl}/${id}`) +} + +export function getOrderItems(params) { + return request.get(`${orderUrl}/items`, { + params + }) +} + +export function conditionOrder(params) { + return request.get(orderUrl, { + params + }) +} +export function operateOrder(action, params) { + return request.patch(`${orderUrl}`, { + action, + ...params + }) +} +export function getOrderCount() { + return request.get('/cos/v1/orders/count') +} diff --git a/src/services/system/platformTask.js b/src/services/system/platformTask.js new file mode 100644 index 0000000..e5c6ddd --- /dev/null +++ b/src/services/system/platformTask.js @@ -0,0 +1,10 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/system/tasks' + +export function getTasks(params) { + return request.get(baseUrl, { + params + }) +} diff --git a/src/services/system/portal.js b/src/services/system/portal.js new file mode 100644 index 0000000..c99173e --- /dev/null +++ b/src/services/system/portal.js @@ -0,0 +1,86 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cos/v1/portal' +export function getPanel(params) { + return request.get(`${baseUrl}/panels`, { + params: wrapperParams(params) + }) +} +export function savePanel(params) { + return request.patch(`${baseUrl}/panels`, wrapperParams(params)) +} +export function resetPanel() { + return request.put(`${baseUrl}/panels/reset`) +} +export function getPool(params) { + return request.get(`${baseUrl}/elementpools`, { + params: wrapperParams(params) + }) +} +export function getConfig(params) { + return request.get(`${baseUrl}/elements`, { + params: wrapperParams(params) + }) +} +export function getPlatformStats(params) { + return request.get('/ims/v1/portal/platform/stats', { + params: wrapperParams(params) + }) +} +export function getVendorStats(params) { + return request.get('/ims/v1/portal/vendor/stats', { + params: wrapperParams(params) + }) +} +export function getTaskStats(params) { + return request.get('/cop/v1/task/stats', { + params: wrapperParams(params) + }) +} +export function getVmServiceTrend(params) { + return request.get('/cos/v1/portal/platform/statisticsOfComputer', { + params: wrapperParams(params) + }) +} +export function getCharge(params) { + return request.get('/cmc/portal/charge/stats', { + params: wrapperParams(params) + }) +} + +export function getAlarmCount(params) { + return request.get('/cms/v1/alarms/chart', { + params + }) +} +export function conditionBill(params) { + return request.get('/cos/v1/bills/condition', { + params: { + condition: JSON.stringify(params) + } + }) +} +export function getOrderCount() { + return request.get('/cos/v1/soa/orders/count') +} + +export function getOrderDashboard(params) { + return request.get('/cos/v1/soa/orders/dashboard', { + params + }) +} +export function getResourceCountByDc(dcId) { + return request.get('/ims/v1/dcs/resource/count', { + params: { dcId } + }) +} +export function getSystemCount() { + return request.get('/sms/v1/system/count') +} +export function getTodoCount() { + return request.get('/cos/v1/soa/todo/count') +} diff --git a/src/services/system/project.js b/src/services/system/project.js new file mode 100644 index 0000000..63279fa --- /dev/null +++ b/src/services/system/project.js @@ -0,0 +1,65 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +const baseUrl = '/sms/v1/projects' +export function getProject(params) { + return request.get(baseUrl, { + params + }) +} +export function getProjectDetailInfo(id) { + return request.get(`${baseUrl}/${id}`) +} +export function getProjectDetail(id) { + return request.get(`${baseUrl}/${id}/quotas`) +} +export function createProject(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyProject(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function switchProject(id, params) { + return request.patch(`${baseUrl}/${id}`, wrapperParams(params)) +} +export function removeProject(id) { + return request.delete(`${baseUrl}/${id}`) +} + +export function removeProjectList(params) { + return request.delete(`${baseUrl}`, { data: params }) +} + +export function exportProject(params) { + downloadFile(`${baseUrl}/export`, { params }) +} +export function getProjectByTenant(id, params) { + return request.get(`/sms/v1/tenants/${id}/projects`, { + ...wrapperParams(params) + }) +} + +export function getProjectMemberList(id) { + return request.get(`${baseUrl}/${id}/users`) +} +// 获取项目下用户列表,不是全量的 +export function getProjectMemberInList(id) { + return request.get(`${baseUrl}/${id}/usersIn`) +} + +export function settingProjectUser(id, params) { + return request.post(`${baseUrl}/${id}/users`, wrapperParams(params)) +} + +export function exportProjects(params) { + downloadFile('/sms/v1/projects/export', params) +} + +export function conditionProject(params) { + return request.get(`${baseUrl}/condition`, { + params + }) +} diff --git a/src/services/system/role.js b/src/services/system/role.js new file mode 100644 index 0000000..5d5d3b1 --- /dev/null +++ b/src/services/system/role.js @@ -0,0 +1,47 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const roleUrl = '/sms/v1/roles' + +export function getRole(params) { + return request.get(roleUrl, { + params + }) +} +export function getRoleDetail(id) { + return request.get(`${roleUrl}/${id}`) +} +export function createRole(params) { + return request.post(roleUrl, wrapperParams(params)) +} +export function modifyRole(params) { + return request.put(`${roleUrl}/${params.id}`, wrapperParams(params)) +} +export function removeRole(id) { + return request.delete(`${roleUrl}/${id}`) +} +export function getRoleAuth(id, params) { + return request.get(`${roleUrl}/${id}/permissions`, { + params: params + }) +} +export function accreditRole(id, params) { + return request.patch(`${roleUrl}/${id}`, params) +} +export function getModules() { + return request.get('/sms/v1/permissions/modules') +} +export function getModulesByName(name) { + return request.get(`/sms/v1/permissions/modules/${name}`) +} +export function getApiById(roleId, params) { + return request.get(`/sms/v1/roles/${roleId}/apis`, { + params: params + }) +} +export function updateApi(roleId, params) { + return request.patch(`/sms/v1/roles/${roleId}/apis`, params) +} diff --git a/src/services/system/service_system.js b/src/services/system/service_system.js new file mode 100644 index 0000000..0f4a7a3 --- /dev/null +++ b/src/services/system/service_system.js @@ -0,0 +1,32 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cms/v1/system' +export function getServers(params) { + return request.get(`${baseUrl}/servers`) +} +export function getServersDetail(params) { + return request.get(`${baseUrl}/charts`, { + params: wrapperParams(params) + }) +} +export function getServices(params) { + return request.get(`${baseUrl}/services`) +} +export function getPlugs(params) { + return request.get(`${baseUrl}/plugins`) +} +export function getComponents(params) { + return request.get(`${baseUrl}/components`) +} +export function getGateway() { + return request.get(`${baseUrl}/gateway`) +} +export function getStatus(params) { + return request.get(`${baseUrl}/status`, { + params + }) +} diff --git a/src/services/system/shop_cart.js b/src/services/system/shop_cart.js new file mode 100644 index 0000000..4c3054f --- /dev/null +++ b/src/services/system/shop_cart.js @@ -0,0 +1,22 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' +const shoppingUrl = '/cos/v1/shopping/cart' + +export function getShoppingCart(params) { + return request.get(shoppingUrl, { + params + }) +} +export function removeShoppingCart(id) { + return request.delete(`${shoppingUrl}/${id}`) +} +export function getShoppingCartDetail(id) { + return request.get(`${shoppingUrl}/${id}`) +} +export function emptyShoppingCart(params) { + return request.put(shoppingUrl, wrapperParams(params)) +} + +export function putShoppingCart(id, params) { + return request.put(`${shoppingUrl}/${id}`, wrapperParams(params)) +} diff --git a/src/services/system/system.js b/src/services/system/system.js new file mode 100644 index 0000000..4926690 --- /dev/null +++ b/src/services/system/system.js @@ -0,0 +1,24 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/sms/v1/systems' +export function getSystems(params) { + return request.get(baseUrl, { + params + }) +} +export function getSystemsDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createSystems(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifySystems(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeSystems(id) { + return request.delete(`${baseUrl}/${id}`) +} diff --git a/src/services/system/tag.js b/src/services/system/tag.js new file mode 100644 index 0000000..ba1e9c1 --- /dev/null +++ b/src/services/system/tag.js @@ -0,0 +1,29 @@ +import request from 'utils/request' + +const baseUrl = 'sms/v1/tags' + +export function getTags(params) { + return request.get(baseUrl, { + params + }) +} + +export function getTagsDetail(id) { + return request.get(`${baseUrl}/${id}`) +} + +export function createTag(params) { + return request.post(baseUrl, { + ...params + }) +} + +export function modifyTag(params) { + return request.put(`${baseUrl}/${params.id}`, { + ...params + }) +} + +export function removeTag(id) { + return request.delete(`${baseUrl}/${id}`) +} diff --git a/src/services/system/tenant.ts b/src/services/system/tenant.ts new file mode 100644 index 0000000..a770b7c --- /dev/null +++ b/src/services/system/tenant.ts @@ -0,0 +1,176 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils/index' + +const baseUrl = '/sms/v1/tenants' +export function getTenant(params: any) { + return request.get(baseUrl, { + params + }) +} +export function checkedTenant(account: string) { + return request.get(`${baseUrl}/${account}/exist`) +} + +export function getTenantTree(params: any) { + return request.get(`${baseUrl}`, { + params: { + condition: JSON.stringify({ condition: 'children' }), + ...params + } + }) +} +export function getTenantDetail(id: number) { + return request.get(`${baseUrl}/${id}/quotas`) +} +// 租户信息 +export function getTenantInfo(id: number) { + return request.get(`${baseUrl}/${id}`) +} +// 租户下用户列表 +export function getTenantUserTrans(id: number, params: any) { + return request.get(`${baseUrl}/${id}/users`, { params }) +} +// 租户下服务列表 +export function getTenantService(id: number) { + return request.get(`/cos/v1/services/tenants/${id}/services`) +} +export function createTenant(params: any) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyTenant(params: any) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeTenant(id: number) { + return request.delete(`${baseUrl}/${id}`) +} +export function getTenantStats(params: any) { + return request.get(`${baseUrl}/stats`, { + params: wrapperParams(params) + }) +} +export function getTenantPool(id: number) { + return request.get(`${baseUrl}/${id}/pools`) +} +export function assignTenantPools(params: any) { + return request.post(`${baseUrl}/${params.id}/pools`, JSON.stringify(params.poolIds)) +} + +export function resetTenantPsw(id: number, params: any) { + return request.patch(`${baseUrl}/${id}/reset`, { + ...wrapperParams(params) + }) +} + +/* + * action取值为: + * lock active reset accredit change + */ +export function operateTenant(id: number, action: string, params: any) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} +// 租户配额 +export function getQuotaTenant(id: number, params: any) { + return request.get(`/cos/v1/tenants/${id}/quotas`, { params }) +} + +export function getCscQuotaTenant(params: any) { + return request.get(`/cos/v1/tenants/${params.tenantId ? params.tenantId : params.target}/quotas`, { params: wrapperParams(params) }) +} + +export function createQuotaTenant(id: number, params: any) { + return request.post(`/cos/v1/tenants/${id}/quotas`, wrapperParams(params)) +} + +export function getTenantBus(id: number, params: any) { + return request.get(`/sms/v1/tenants/${id}/businesses`, { params }) +} +export function createTenantBus(id: number, params: any) { + return request.post(`/sms/v1/tenants/${id}/businesses`, params) +} +export function createTenantPool(id: number, params: any) { + return request.post(`/sms/v1/tenants/${id}/pools`, params) +} +export function getOsTenant(params: any) { + return request.get('/ims/v1/ostenants', { + params + }) +} +export function createOsTenantt(params: any) { + return request.post('/ims/v1/ostenants', wrapperParams(params)) +} +export function modifyOsTenant(params: any) { + return request.put(`/ims/v1/ostenants/${params.id}`, wrapperParams(params)) +} +export function assignOsTenantt(params: any) { + return request.post(`/ims/v1/ostenants/${params.id}/tenant`, wrapperParams(params)) +} +export function deleteOsTenant(id: number) { + return request.delete(`/ims/v1/ostenants/${id}/tenant`) +} +export function removeOsTenant(id: number) { + return request.delete(`/ims/v1/ostenants/${id}`) +} +export function conditionOsTenant(params: any) { + return request.get('/ims/v1/ostenants/condition', { + params + }) +} +export function getTrack(params: any) { + return request.get(`${baseUrl}/track`, { + params: params + }) +} +export function getUser(params: any) { + return request.get('/sms/v1/users', { params }) +} +// 获取授信 +export function getTenantAccount(id: number) { + return request.get(`/cos/v1/tenants/${id}/account`) +} +// 授信修改 +export function createTenantAccount(params: any) { + return request.post('/cos/v1/tenants/account', wrapperParams(params)) +} +export function getApiById(id: number, params: any) { + return request.get(`/sms/v1/tenants/${id}/apis`, { + params: params + }) +} +export function updateApi(id: number, params: any) { + return request.patch(`/sms/v1/tenants/${id}/apis`, params) +} +// 配额 +export function getBaseQuotas() { + return request.get('/cos/v1/quotas/metas') +} + +export function getTenantBaseQuotas(id: number) { + return request.get(`/cos/v1/tenants/${id}/quotas/metas`) +} + +// 租户配置用户 +export function tenantCongigUser(params: any) { + return request.post(`/sms/v1/tenants/${params.id}/users`, params.ids) +} + +// 租户移除用户 +export function tenantRemoveUser(id: number) { + return request.patch(`/sms/v1/users/${id}/tenants`) +} + +// /sms/v1/tenants +// 租户移除用户 +export function lockTenant(params: any) { + return request.patch('/sms/v1/tenants', params) +} + +// 导出租户列表 +export function exportTenantList(params: any) { + downloadFile('/sms/v1/tenants/export', params) +} diff --git a/src/services/system/user.js b/src/services/system/user.js new file mode 100644 index 0000000..ff311c5 --- /dev/null +++ b/src/services/system/user.js @@ -0,0 +1,50 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils/index' + +const baseUrl = '/sms/v1/users' +export function getUser(params) { + return request.get(baseUrl, { + params + }) +} +export function getUserDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createUser(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyUser(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeUser(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function getManager(id) { + return request.get(`/sms/v1/tenants/${id}`) +} +/* + * action取值为: + * lock active reset accredit change + */ +export function operateUser(id, action, params) { + return request.patch(`${baseUrl}/${id}`, { + action, + ...wrapperParams(params) + }) +} +export function checkStatus(data) { + const { accountCategory, id } = data + const url = accountCategory === 'User' ? baseUrl : '/sms/v1/tenants' + return request.get(`${url}/${id}/status`) +} +export function getRolesByUser(id) { + return request.get(`${baseUrl}/${id}/roles`) +} +export function getTrack(params) { + return request.get(`${baseUrl}/track`, { + params: params + }) +} diff --git a/src/services/task/command.js b/src/services/task/command.js new file mode 100644 index 0000000..7c0593c --- /dev/null +++ b/src/services/task/command.js @@ -0,0 +1,33 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +const baseUrl = '/cop/v1/commands' + +export function getCommand(params) { + return request.get(baseUrl, { + params + }) +} +export function getCommandDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createCommand(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyCommand(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeCommand(id) { + return request.delete(`${baseUrl}/${id}`) +} +export function applyCommand(id) { + return request.patch(`${baseUrl}/${id}`) +} +export function getRoleCommand(params) { + return request.get(`${baseUrl}/authorized`, { + params: params + }) +} +export function accreditCommand(params) { + return request.patch(`${baseUrl}/accredit`, wrapperParams(params)) +} diff --git a/src/services/task/task.js b/src/services/task/task.js new file mode 100644 index 0000000..b11992c --- /dev/null +++ b/src/services/task/task.js @@ -0,0 +1,121 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams, downloadFile } from 'utils' + +const baseUrl = '/cop/v1/tasks' + +export function getTask(params) { + return request.get(baseUrl, { + params + }) +} +export function getTaskDetail(id) { + return request.get(`${baseUrl}/${id}`) +} +export function createTask(params) { + return request.post(baseUrl, wrapperParams(params)) +} +export function modifyTask(params) { + return request.put(`${baseUrl}/${params.id}`, wrapperParams(params)) +} +export function removeTask(id) { + return request.delete(`${baseUrl}/${id}`) +} +/* + * action取值为: + * start clone active suspend transfer applyStart applyRecover applyActive usage release recall + */ +// export function operateTask(id, action, params) { +// return request.patch(`${baseUrl}/${id}`, { +// action, +// ...wrapperParams(params) +// }) +// } + +const instanceUrl = '/cop/v1/tasks/instances' +export function getInstance(params) { + return request.get(instanceUrl, { + params + }) +} +export function removeInstance(id) { + return request.delete(`${instanceUrl}/${id}`) +} +export function getInstanceDetail(id) { + return request.get(`${instanceUrl}/${id}`) +} +export function getInstanceNode(id) { + return request.get(`${instanceUrl}/nodes/${id}`) +} +export function checkInstanceFile(params) { + return request.get(`${instanceUrl}/files/check`, { params }) +} +export function exportInstanceFile(path) { + downloadFile(`${instanceUrl}/files/download`, { path }) +} +/* + * action取值为: + * start recover cancel suspend active result + */ +// export function operateInstance(id, action, params) { +// return request.patch(`${instanceUrl}/${id}`, { +// action, +// ...wrapperParams(params) +// }) +// } +// action修改 +export function operateInstance(id, action, params) { + return request.patch(`${instanceUrl}/${id}/${action}`, wrapperParams(params)) +} +export function exportInstance(id, params) { + downloadFile(`${instanceUrl}/${id}/export`, params) +} + +const sceneUrl = '/cop/v1/tasks/scenes' +export function getScene(params) { + return request.get(sceneUrl, { + params + }) +} +// simple修改 +export function getSceneBySimple(params) { + return request.get(`${sceneUrl}/simple`, { + params + }) +} +export function getSceneDetail(id) { + return request.get(`${sceneUrl}/${id}`) +} +export function createScene(params) { + return request.post(sceneUrl, wrapperParams(params)) +} +export function modifyScene(params) { + return request.put(`${sceneUrl}/${params.id}`, wrapperParams(params)) +} +export function removeScene(id) { + return request.delete(`${sceneUrl}/${id}`) +} + +const templateUrl = '/cop/v1/tasks/templates' +export function getTemplate(params) { + return request.get(templateUrl, { + params + }) +} +// simple修改 +export function getTemplateBySimple(params) { + return request.get(`${templateUrl}/simple`, { + params + }) +} +export function getTemplateDetail(id) { + return request.get(`${templateUrl}/${id}`) +} +export function createTemplate(params) { + return request.post(templateUrl, wrapperParams(params)) +} +export function modifyTemplate(params) { + return request.put(`${templateUrl}/${params.id}`, wrapperParams(params)) +} diff --git a/src/shared/action.ts b/src/shared/action.ts new file mode 100644 index 0000000..57bdf3f --- /dev/null +++ b/src/shared/action.ts @@ -0,0 +1,30 @@ +type IState = { + name: string + onmessage: any +} +function emptyAction(state: any, fireImmediately?: boolean) {} +class Actions { + actions = { + name: '', + onGlobalStateChange: emptyAction, + setGlobalState: emptyAction + } + + init(props: any, callback: any) { + this.actions = props + this.onGlobalStateChange(callback) + } + + onGlobalStateChange(callback: any, fireImmediately: boolean = true) { + return this.actions.onGlobalStateChange(callback, fireImmediately) + } + + setGlobalState(state: IState) { + this.actions.setGlobalState({ + ...state, + name: this.actions.name + }) + } +} +const actions = new Actions() +export default actions diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 0000000..9b06424 --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,7 @@ +const getters = { + addRoutes: (state) => state.permission.addRoutes, + userData: (state) => state.app.userData, + pageConfig: (state) => state.app.pageConfig, + systemConfig: (state) => state.app.systemConfig +} +export default getters diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..16de8c4 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,23 @@ +/** + * Created by Zhang Haijun on 2017/8/25. + */ +import Vue from 'vue' +import Vuex from 'vuex' +import getters from './getters' + +Vue.use(Vuex) +const modulesFiles = require.context('./modules', true, /\.js$/) +const modules = modulesFiles.keys().reduce((arr, modulePath) => { + // set './app.js' => 'app' + const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1') + const value = modulesFiles(modulePath) + arr[moduleName] = value.default + return arr +}, {}) + +const store = new Vuex.Store({ + modules, + getters +}) + +export default store diff --git a/src/store/modules/app.js b/src/store/modules/app.js new file mode 100644 index 0000000..c35137c --- /dev/null +++ b/src/store/modules/app.js @@ -0,0 +1,125 @@ +/** + * Created by Zhang Haijun on 2018/6/15. + */ +import { userKey, enableUserStorage } from '@/config' +import { getSystemConfigs, getUserInfo } from 'services/system' +import { getLanguage } from '@/lang/index' +import { setBrowser } from '../utils' + +const state = { + isCollapsed: false, + layout: localStorage.getItem('layout') || 'sidemenu', + sideMenuData: [], + theme: { + name: 'default', + sidebarColor: '' + }, + pageConfig: {}, + systemConfig: {}, + userData: null, + desktopUrl: null, + operateTime: '', + basePath: '', + $webSocket: '', + appPath: '', + expire: false, + language: getLanguage() +} +const mutations = { + SET_EXPIRE(state, value) { + state.expire = value + }, + SET_OPERATETIME(state) { + state.operateTime = new Date().getTime() + }, + SET_LAYOUT(state, value) { + // state.layout = value; + // localStorage.setItem('layout', value) + }, + SET_WEBSOCKET(state, value) { + state.$webSocket = value + }, + SET_USERDATA(state, userData = {}) { + state.userData = userData + }, + SET_DESKTOPURL(state, value) { + state.desktopUrl = value + }, + RESET_USER(state) { + state.userData = {} + if (enableUserStorage) { + localStorage.removeItem(userKey) + } + }, + TOGGLE_SIDEBAR(state) { + state.isCollapsed = !state.isCollapsed + }, + SETTING_SIDE_MENU(state, data) { + state.sideMenuData = data + }, + SETTING_BASE_PATH(state, data) { + state.basePath = data + }, + SETTING_PAGE_CONFIG(state, data) { + const { browserIcon, browserTitle } = data + setBrowser(browserIcon, browserTitle) + state.pageConfig = data + }, + SETTING_SYSTEM_CONFIG(state, data) { + state.systemConfig = data + }, + SETTING_THEME(state, data) { + state.theme = data + }, + SET_LANGUAGE: (state, language) => { + state.language = language + localStorage.setItem('language', language) + }, + SET_APP_PATH(state, value) { + state.appPath = value + } +} +const actions = { + async GetUserInfo({ commit, state: { userData } }) { + // 如果启用了本地缓存,直接在缓存取数据 + if (enableUserStorage && !userData) { + const userData = JSON.parse(localStorage.getItem(userKey)) + if (userData) { + // 判断下菜单数据是否存在 + commit('SET_USERDATA', userData) + return + } + } + const data = await getUserInfo() + if (data.success) { + // 云桌面登录与系统登录返回值不同 + const { portrait, ...others } = data.data.Manager || {} + const result = { + ...others, + portrait: portrait || '/web-common-resource/img/avatar_default.png', + accountCategory: data.data.accountCategory + } + if (enableUserStorage) { + localStorage.setItem(userKey, JSON.stringify(result)) + } + commit('SET_USERDATA', result) + } + }, + async GetPageConfigs({ commit }) { + const data = await getSystemConfigs({ category: '界面配置' }) + if (data.success) { + commit('SETTING_PAGE_CONFIG', data.data) + } + }, + async GetSystemConfigs({ commit }) { + const data = await getSystemConfigs({ codes: 'pwdStrength,lockScreenTime' }) + if (data.success) { + commit('SETTING_SYSTEM_CONFIG', data.data) + } + } +} +export default { + state, + mutations, + actions +} diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js new file mode 100644 index 0000000..3c92246 --- /dev/null +++ b/src/store/modules/permission.js @@ -0,0 +1,201 @@ +/** + * Created by HaijunZhang on 2018/11/12. + */ +import { resolvePath } from 'utils/resolvePath' +import router, { asyncRouterMap, resetRouter } from '@/router' +import { removeToken } from 'utils/auth' +import { menuKey, enablePermissionStorage, baseUrl } from '@/config' +import { getUserPermissions } from 'services/system' +import { urlToList } from '../utils' + +// 是否为qinakun环境 +const POWERED_BY_QIANKUN = window.__POWERED_BY_QIANKUN__ +// 获取应用路由数据 +const getAppRoutes = (data) => { + const routes = [] + for (const item of data) { + if (item.path === baseUrl) { + routes.push(item) + break + } + } + return routes[0].children +} +const resultRoutes = [] +// 递归获取路由的父元素 +const getParent = (path, routes) => { + let res + for (const route of routes) { + const { path: ph, component } = route + // 组件存在并且路径相同 + if (component && ph === path) { + res = route + break + } else if (route.children) { + res = getParent(path, route.children) + } + } + return res +} +export const createRoute = (item) => { + const urlList = urlToList(item.path) + // ['/system','/system/configs','/system/configs/page'] -> ['/system/configs', '/system'] + const resultList = urlList.slice(0, urlList.length - 1).reverse() + let t = '' + for (const url of resultList) { + t = getParent(url, resultRoutes) + if (t) break + } + if (t) { + if (t.children) { + t.children.push(item) + } else { + t.children = [item] + } + router.addRoute(t.name, item) + } else { + resultRoutes.push(item) + if (POWERED_BY_QIANKUN) { + router.addRoute(item) + } else { + router.addRoute('Home', item) + } + } +} +// 对异步路由数据进行处理生成路由表 +const handleAsyncRouter = (routes, basePath = '/') => { + const res = [] + routes.forEach((route) => { + const { router, component, name, redirect, icon, id, category, meta, params } = route + // 生成meta对象 + const metaCache = {} + JSON.parse(meta).forEach((item) => { + metaCache[item.key] = item.value + }) + // 生成params对象 + const paramsCache = {} + JSON.parse(params).forEach((item) => { + paramsCache[item.key] = item.value + }) + const tmp = { + id, + path: resolvePath(basePath, route.path), + name: router, + redirect, + hidden: category === 'view', + meta: { + ...metaCache, + title: name, + icon + }, + params: paramsCache + } + if (component || redirect) { + createRoute({ + path: resolvePath(basePath, route.path), + component: asyncRouterMap[component], + name: router, + redirect: redirect && resolvePath(basePath, redirect), + meta: { + ...metaCache, + title: name, + icon + }, + params: paramsCache + }) + } + if (route.children) { + tmp.children = handleAsyncRouter(route.children, tmp.path) + } + res.push(tmp) + }) + return res +} +const state = { + addRoutes: null, + buttons: [] +} +const mutations = { + SET_ROUTES: (state, routers) => { + state.addRoutes = routers + }, + SET_BUTTONS: (state) => { + state.buttons = JSON.parse(localStorage.getItem('buttonData')) + } +} +const actions = { + GenerateRoutes({ commit, state: { addRoutes } }, permissions) { + return new Promise((resolve) => { + const callback = (permission) => { + resultRoutes.length = 0 + const asyncRouter = handleAsyncRouter(getAppRoutes(permission)) + commit('SET_ROUTES', asyncRouter) + commit('SETTING_SIDE_MENU', asyncRouter, { root: true }) + resolve(asyncRouter) + } + // permissions存在,作为子应用加载 + if (permissions) { + callback(permissions) + return + } + // 如果启用了本地缓存并且刷新界面进入,直接在缓存取数据,因为存在一种情况主动更新数据 + if (enablePermissionStorage && !addRoutes) { + const menuData = JSON.parse(localStorage.getItem(menuKey)) + if (menuData) { + // 判断下菜单数据是否存在 + callback(menuData) + return + } + } + getUserPermissions() + .then((data) => { + if (data.success) { + if (enablePermissionStorage) { + localStorage.setItem(menuKey, JSON.stringify(data.data)) + } + callback(data.data) + } + }) + .catch((err) => { + console.log(err) + }) + }) + }, + // 动态更新权限 + ChangeRoutes({ dispatch }) { + return new Promise((resolve) => { + resetRouter() + dispatch('GenerateRoutes').then((accessRoutes) => { + resolve() + }) + }) + }, + ResetRoutes({ commit, dispatch, rootGetters }, redirectToLogin = true) { + return new Promise((resolve) => { + resetRouter() + commit('SET_ROUTES', null) + if (enablePermissionStorage) { + localStorage.removeItem(menuKey) + } + // 重置用户信息 + commit('RESET_USER', null, { root: true }) + // 重置用户信息 + commit('SETTING_SIDE_MENU', [], { root: true }) + // 重置标签信息 + dispatch('tagsView/delAllViews', null, { root: true }) + removeToken() + if (POWERED_BY_QIANKUN) { + location.href = '/login' + } else if (redirectToLogin) { + router.replace('/login') + } + resolve() + }) + } +} +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js new file mode 100644 index 0000000..1ca1201 --- /dev/null +++ b/src/store/modules/tagsView.js @@ -0,0 +1,139 @@ +import { nth } from 'lodash-es' +const state = { + visitedViews: [], + cachedViews: [] +} + +const mutations = { + ADD_VISITED_VIEW: (state, view) => { + const { + meta: { noTag, title } + } = view + if (noTag || !title) return + if (state.visitedViews.some((v) => v.path === view.path)) return + state.visitedViews.push( + Object.assign({}, view, { + title + }) + ) + }, + ADD_CACHED_VIEW: (state, view) => { + if (state.cachedViews.includes(view.name)) return + if (view.name && !view.meta.noCache) { + state.cachedViews.push(view.name) + } + }, + + DEL_VISITED_VIEW: (state, view) => { + for (const [i, v] of state.visitedViews.entries()) { + if (v.path === view.path) { + state.visitedViews.splice(i, 1) + break + } + } + }, + DEL_CACHED_VIEW: (state, view) => { + const index = state.cachedViews.indexOf(view.name) + index > -1 && state.cachedViews.splice(index, 1) + }, + + DEL_OTHERS_VISITED_VIEWS: (state, view) => { + state.visitedViews = state.visitedViews.filter((v) => { + return v.meta.fix || v.path === view.path + }) + }, + DEL_OTHERS_CACHED_VIEWS: (state, view) => { + const index = state.cachedViews.indexOf(view.name) + if (index > -1) { + state.cachedViews = [view.name] + } else { + // if index = -1, there is no cached tags + state.cachedViews = [] + } + }, + DEL_LEFT_VISITED_VIEWS: (state, index) => { + const left = state.visitedViews.slice(0, index).filter((v) => v.meta.fix) + const right = state.visitedViews.slice(index) + state.visitedViews = [...left, ...right] + }, + DEL_RIGHT_VISITED_VIEWS: (state, index) => { + const left = state.visitedViews.slice(0, index + 1) + const right = state.visitedViews.slice(index + 1).filter((v) => v.meta.fix) + state.visitedViews = [...left, ...right] + }, + UPDATE_CACHE_VIEWS: (state) => { + state.cachedViews = state.visitedViews.filter((v) => !v.meta.noCache && v.name).map((v) => v.name) + }, + DEL_ALL_VISITED_VIEWS: (state) => { + // keep fix tags + const fixTags = state.visitedViews.filter((tag) => tag.meta.fix) + state.visitedViews = fixTags + }, + DEL_ALL_CACHED_VIEWS: (state) => { + state.cachedViews = [] + } +} + +const actions = { + addView({ commit }, view) { + commit('ADD_VISITED_VIEW', view) + commit('ADD_CACHED_VIEW', view) + }, + delView({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_VISITED_VIEW', view) + commit('DEL_CACHED_VIEW', view) + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delOthersViews({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_OTHERS_VISITED_VIEWS', view) + commit('DEL_OTHERS_CACHED_VIEWS', view) + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delLeftViews({ commit, state }, { view, index }) { + return new Promise((resolve) => { + commit('DEL_LEFT_VISITED_VIEWS', index) + commit('UPDATE_CACHE_VIEWS') + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delRightViews({ commit, state }, { view, index }) { + return new Promise((resolve) => { + commit('DEL_RIGHT_VISITED_VIEWS', index) + commit('UPDATE_CACHE_VIEWS') + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + }, + delAllViews({ commit, state }, view) { + return new Promise((resolve) => { + commit('DEL_ALL_VISITED_VIEWS') + commit('DEL_ALL_CACHED_VIEWS') + resolve({ + visitedViews: [...state.visitedViews], + cachedViews: [...state.cachedViews] + }) + }) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/src/store/utils.js b/src/store/utils.js new file mode 100644 index 0000000..1867ac9 --- /dev/null +++ b/src/store/utils.js @@ -0,0 +1,16 @@ +export const setBrowser = (icon, title) => { + const head = document.getElementsByTagName('head')[0] + const linkTag = document.createElement('link') + linkTag.href = icon + linkTag.setAttribute('rel', 'shortcut icon') + linkTag.setAttribute('type', 'image/x-icon') + head.appendChild(linkTag) + document.title = title +} +// /system/configs/page -> [ '/system','/system/configs','/system/configs/page'] +export const urlToList = (url) => { + const urllist = url.split('/').filter((i) => i) + return urllist.map((urlItem, index) => { + return `/${urllist.slice(0, index + 1).join('/')}` + }) +} diff --git a/src/validate/index.js b/src/validate/index.js new file mode 100644 index 0000000..24f6602 --- /dev/null +++ b/src/validate/index.js @@ -0,0 +1,125 @@ +/** + * Created by Zhang Haijun on 2018/1/25. + */ +const trigger = null +export default { + required: { required: true, message: '请输入内容', trigger }, + number: { type: 'number', trigger, message: '请输入数字' }, + email: { type: 'email', trigger, message: '请输入正确的邮箱' }, + code: { pattern: /^[a-zA-Z0-9]*$/, message: '仅支持数字、字母', trigger }, + name: { pattern: /^[a-zA-Z0-9-_.]*$/, message: '仅支持数字、字母、下划线、中划线、点', trigger }, // 正整数 + positiveInteger: { + validator: (rule, value, callback) => { + if (/^[1-9][0-9]*$/.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正整数')) + } + }, + trigger + }, + password: { + validator: (rule, value, callback) => { + const reg = /^[\x21-\x7ea-zA-Z0-9_]{1,18}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的密码格式')) + } + }, + trigger + }, + pswNoSpace: { + validator: (rule, value, callback) => { + const reg = /^[^\s]+$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('密码不能使用空格')) + } + }, + trigger + }, + complexPassword: { + validator: (rule, value, callback) => { + const reg = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!@#¥%&*()$])[a-zA-Z\d~!@#¥%&*()$]{6,12}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('密码必须由6-12位大小写字母数字和~!@#¥%&*()$组成')) + } + }, + trigger + }, + // 手机 + mobile: { + validator: (rule, value, callback) => { + const reg = /^1[3-9]\d{9}$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的手机号')) + } + }, + trigger + }, + // 座机 + phone: { + validator: (rule, value, callback) => { + const reg = /^0\d{2,3}-?\d{7,8}|4\d{2,3}-?\d{7,8}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的座机号')) + } + }, + trigger + }, + // 手机或者座机 + mobileOrPhone: { + validator: (rule, value, callback) => { + const reg = /(^1[3|4|5|7|6|8|9]\d{9}$)|(^0\d{2,3}-?\d{7,8}$)/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的座机号或者手机号')) + } + }, + trigger + }, + // ip地址 + ip: { + validator: (rule, value, callback) => { + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的IP地址')) + } + }, + trigger + }, + mac: { + validator: (rule, value, callback) => { + const reg = /^[A-F0-9]{2}(-[A-F0-9]{2}){5}$|^[A-F0-9]{2}(:[A-F0-9]{2}){5}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的Mac地址')) + } + }, + trigger + }, + // 端口号 + port: { + validator: (rule, value, callback) => { + const reg = /^([1-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的端口号')) + } + }, + trigger + } +} diff --git a/src/views/about/index.vue b/src/views/about/index.vue new file mode 100644 index 0000000..f6738fc --- /dev/null +++ b/src/views/about/index.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/views/about/logActive.vue b/src/views/about/logActive.vue new file mode 100644 index 0000000..59313ad --- /dev/null +++ b/src/views/about/logActive.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/views/configs/AddDialog.vue b/src/views/configs/AddDialog.vue new file mode 100644 index 0000000..9b704ef --- /dev/null +++ b/src/views/configs/AddDialog.vue @@ -0,0 +1,156 @@ + + + diff --git a/src/views/configs/PlatformTask.vue b/src/views/configs/PlatformTask.vue new file mode 100644 index 0000000..2ee8e7b --- /dev/null +++ b/src/views/configs/PlatformTask.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/views/configs/business/RelationProject.vue b/src/views/configs/business/RelationProject.vue new file mode 100644 index 0000000..4e5a840 --- /dev/null +++ b/src/views/configs/business/RelationProject.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/configs/business/index.vue b/src/views/configs/business/index.vue new file mode 100644 index 0000000..b67f25b --- /dev/null +++ b/src/views/configs/business/index.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/src/views/configs/component/AddDialog.vue b/src/views/configs/component/AddDialog.vue new file mode 100644 index 0000000..24b6ca4 --- /dev/null +++ b/src/views/configs/component/AddDialog.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/views/configs/dictionary.vue b/src/views/configs/dictionary.vue new file mode 100644 index 0000000..d09cb3d --- /dev/null +++ b/src/views/configs/dictionary.vue @@ -0,0 +1,128 @@ + + + diff --git a/src/views/configs/enviroment.vue b/src/views/configs/enviroment.vue new file mode 100644 index 0000000..5dd442f --- /dev/null +++ b/src/views/configs/enviroment.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/views/configs/migration/configs.js b/src/views/configs/migration/configs.js new file mode 100644 index 0000000..ae992d0 --- /dev/null +++ b/src/views/configs/migration/configs.js @@ -0,0 +1,63 @@ +export const getStatus = function (type, value) { + const colorMap = { + SUCCEED: 'success', + FAILED: 'danger', + RUNNING: 'normal', + WAITING: 'warning', + INTERRUPTED: 'primary' + } + const textMap = { + SUCCEED: '执行成功', + FAILED: '执行失败', + RUNNING: '正在执行', + WAITING: '等待执行', + INTERRUPTED: '打断执行' + } + return type === 'color' ? colorMap[value] : textMap[value] +} + +export const columns = [ + { + label: '迁移记录id', + prop: 'id', + scopedSlots: { customRender: 'id' } + }, + { + label: '总任务数', + prop: 'total' + }, + { + label: '已完成任务数', + prop: 'completeCnt' + }, + { + label: '任务进度', + prop: 'percent', + scopedSlots: { customRender: 'percent' } + }, + { + label: '执行状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '执行结果', + prop: 'result' + }, + { + label: '执行人', + prop: 'creator' + }, + { + label: '开始时间', + prop: 'startTime' + }, + { + label: '结束时间', + prop: 'endTime' + }, + { + label: '任务耗时(ms)', + prop: 'used' + } +] diff --git a/src/views/configs/migration/detail.vue b/src/views/configs/migration/detail.vue new file mode 100644 index 0000000..4eee5be --- /dev/null +++ b/src/views/configs/migration/detail.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/configs/migration/index.vue b/src/views/configs/migration/index.vue new file mode 100644 index 0000000..590c50c --- /dev/null +++ b/src/views/configs/migration/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/views/configs/namerule.vue b/src/views/configs/namerule.vue new file mode 100644 index 0000000..812cedb --- /dev/null +++ b/src/views/configs/namerule.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/views/configs/notice/Dialog.vue b/src/views/configs/notice/Dialog.vue new file mode 100644 index 0000000..1942480 --- /dev/null +++ b/src/views/configs/notice/Dialog.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/configs/notice/config.js b/src/views/configs/notice/config.js new file mode 100644 index 0000000..f19c9c6 --- /dev/null +++ b/src/views/configs/notice/config.js @@ -0,0 +1,54 @@ +export const columns = [ + { + label: '标题', + prop: 'title', + scopedSlots: { customRender: 'title' } + }, + { + label: '状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '发布范围', + prop: 'sendGroups', + scopedSlots: { customRender: 'sendGroups' } + }, + { + label: '发布方式', + prop: 'sendWays', + scopedSlots: { customRender: 'sendWays' } + }, + { + label: '发布人', + prop: 'creatorName' + }, + { + label: '发布时间', + prop: 'sendTime' + }, + { + label: '创建时间', + prop: 'gmtCreate' + }, + { + label: '操作', + disabled: true, + width: '220px', + scopedSlots: { customRender: 'operate' } + } +] + +export const searchConfigs = [ + { label: '标题', value: 'title', type: 'Input', width: '220px' }, + { + label: '状态', + value: 'status', + type: 'Select', + data: [ + { name: '待发布', id: 'NOTSEND' }, + { name: '已发布', id: 'SEND' } + ] + }, + { type: 'DateRange', label: '', value: 'gmtCreate' } +] diff --git a/src/views/configs/notice/index.vue b/src/views/configs/notice/index.vue new file mode 100644 index 0000000..8f1370e --- /dev/null +++ b/src/views/configs/notice/index.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/views/configs/project/components/basicinfo.vue b/src/views/configs/project/components/basicinfo.vue new file mode 100644 index 0000000..9b544bb --- /dev/null +++ b/src/views/configs/project/components/basicinfo.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/views/configs/project/components/member.vue b/src/views/configs/project/components/member.vue new file mode 100644 index 0000000..ae84ee3 --- /dev/null +++ b/src/views/configs/project/components/member.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/views/configs/project/index.vue b/src/views/configs/project/index.vue new file mode 100644 index 0000000..286ec94 --- /dev/null +++ b/src/views/configs/project/index.vue @@ -0,0 +1,415 @@ + + + + + diff --git a/src/views/configs/project/projectDetail.vue b/src/views/configs/project/projectDetail.vue new file mode 100644 index 0000000..f1e1d6a --- /dev/null +++ b/src/views/configs/project/projectDetail.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/configs/setting/components/UploadButton.vue b/src/views/configs/setting/components/UploadButton.vue new file mode 100644 index 0000000..4dadb17 --- /dev/null +++ b/src/views/configs/setting/components/UploadButton.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/configs/setting/components/UploadImage.vue b/src/views/configs/setting/components/UploadImage.vue new file mode 100644 index 0000000..faa2044 --- /dev/null +++ b/src/views/configs/setting/components/UploadImage.vue @@ -0,0 +1,54 @@ + + + + diff --git a/src/views/configs/setting/components/index.scss b/src/views/configs/setting/components/index.scss new file mode 100644 index 0000000..4fa32ec --- /dev/null +++ b/src/views/configs/setting/components/index.scss @@ -0,0 +1,25 @@ +.item-card { + background: #fff; + border: 1px solid #ebebeb; + margin-bottom: 10px; + .item-title { + font-size: 13px; + padding: 10px 15px; + border-bottom: 1px solid #ebebeb; + } + .item-body { + padding: 20px; + } +} + +.item-wrapper { + display: flex; + .color-select { + margin-left: 20px; + display: flex; + } + .desc-text { + margin: 0 10px 0 5px; + color: #999; + } +} diff --git a/src/views/configs/setting/general.vue b/src/views/configs/setting/general.vue new file mode 100644 index 0000000..a656b4f --- /dev/null +++ b/src/views/configs/setting/general.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/configs/setting/interface/CardItem.vue b/src/views/configs/setting/interface/CardItem.vue new file mode 100644 index 0000000..af49308 --- /dev/null +++ b/src/views/configs/setting/interface/CardItem.vue @@ -0,0 +1,75 @@ + + + + diff --git a/src/views/configs/setting/interface/index.vue b/src/views/configs/setting/interface/index.vue new file mode 100644 index 0000000..b35bc64 --- /dev/null +++ b/src/views/configs/setting/interface/index.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/views/configs/setting/monitor/index.vue b/src/views/configs/setting/monitor/index.vue new file mode 100644 index 0000000..90db92b --- /dev/null +++ b/src/views/configs/setting/monitor/index.vue @@ -0,0 +1,202 @@ + + diff --git a/src/views/configs/setting/monitor/metrics.vue b/src/views/configs/setting/monitor/metrics.vue new file mode 100644 index 0000000..482efc0 --- /dev/null +++ b/src/views/configs/setting/monitor/metrics.vue @@ -0,0 +1,247 @@ + + diff --git a/src/views/configs/setting/page/BannerItem.vue b/src/views/configs/setting/page/BannerItem.vue new file mode 100644 index 0000000..ec1aa2d --- /dev/null +++ b/src/views/configs/setting/page/BannerItem.vue @@ -0,0 +1,108 @@ + + + + diff --git a/src/views/configs/setting/page/BrowserItem.vue b/src/views/configs/setting/page/BrowserItem.vue new file mode 100644 index 0000000..863a7a4 --- /dev/null +++ b/src/views/configs/setting/page/BrowserItem.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/views/configs/setting/page/ContentItem.vue b/src/views/configs/setting/page/ContentItem.vue new file mode 100644 index 0000000..a9f1446 --- /dev/null +++ b/src/views/configs/setting/page/ContentItem.vue @@ -0,0 +1,120 @@ + + + + diff --git a/src/views/configs/setting/page/LoginItem.vue b/src/views/configs/setting/page/LoginItem.vue new file mode 100644 index 0000000..e3279aa --- /dev/null +++ b/src/views/configs/setting/page/LoginItem.vue @@ -0,0 +1,78 @@ + + + + diff --git a/src/views/configs/setting/page/cmc.vue b/src/views/configs/setting/page/cmc.vue new file mode 100644 index 0000000..ebb801b --- /dev/null +++ b/src/views/configs/setting/page/cmc.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/views/configs/setting/page/csc.vue b/src/views/configs/setting/page/csc.vue new file mode 100644 index 0000000..0fc673f --- /dev/null +++ b/src/views/configs/setting/page/csc.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/views/configs/setting/page/index.vue b/src/views/configs/setting/page/index.vue new file mode 100644 index 0000000..a881300 --- /dev/null +++ b/src/views/configs/setting/page/index.vue @@ -0,0 +1,24 @@ + + diff --git a/src/views/configs/setting/page/utils.js b/src/views/configs/setting/page/utils.js new file mode 100644 index 0000000..a9a357d --- /dev/null +++ b/src/views/configs/setting/page/utils.js @@ -0,0 +1,3 @@ +export const isDefault = (value1, default1, value2, default2) => { + return default1 === value1 && default2 === value2 ? 'default' : 'custom' +} diff --git a/src/views/configs/setting/security/index.vue b/src/views/configs/setting/security/index.vue new file mode 100644 index 0000000..47cbad5 --- /dev/null +++ b/src/views/configs/setting/security/index.vue @@ -0,0 +1,130 @@ + + + + diff --git a/src/views/configs/setting/security/limit.vue b/src/views/configs/setting/security/limit.vue new file mode 100644 index 0000000..99bd232 --- /dev/null +++ b/src/views/configs/setting/security/limit.vue @@ -0,0 +1,171 @@ + + + diff --git a/src/views/configs/setting_dashboard/AccessControl.vue b/src/views/configs/setting_dashboard/AccessControl.vue new file mode 100644 index 0000000..7cf830c --- /dev/null +++ b/src/views/configs/setting_dashboard/AccessControl.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/views/configs/setting_dashboard/AlarmCount.vue b/src/views/configs/setting_dashboard/AlarmCount.vue new file mode 100644 index 0000000..b54d86e --- /dev/null +++ b/src/views/configs/setting_dashboard/AlarmCount.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/views/configs/setting_dashboard/CommonOperation.vue b/src/views/configs/setting_dashboard/CommonOperation.vue new file mode 100644 index 0000000..fe3da1a --- /dev/null +++ b/src/views/configs/setting_dashboard/CommonOperation.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/views/configs/setting_dashboard/CountCard.vue b/src/views/configs/setting_dashboard/CountCard.vue new file mode 100644 index 0000000..c80d50b --- /dev/null +++ b/src/views/configs/setting_dashboard/CountCard.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/views/configs/setting_dashboard/DataCenterOverview.vue b/src/views/configs/setting_dashboard/DataCenterOverview.vue new file mode 100644 index 0000000..1f6ce3a --- /dev/null +++ b/src/views/configs/setting_dashboard/DataCenterOverview.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/views/configs/setting_dashboard/DataView.vue b/src/views/configs/setting_dashboard/DataView.vue new file mode 100644 index 0000000..2a0f285 --- /dev/null +++ b/src/views/configs/setting_dashboard/DataView.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/views/configs/setting_dashboard/ResUsed.vue b/src/views/configs/setting_dashboard/ResUsed.vue new file mode 100644 index 0000000..cd36851 --- /dev/null +++ b/src/views/configs/setting_dashboard/ResUsed.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/views/configs/setting_dashboard/SelectVendor.vue b/src/views/configs/setting_dashboard/SelectVendor.vue new file mode 100644 index 0000000..8a19267 --- /dev/null +++ b/src/views/configs/setting_dashboard/SelectVendor.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/views/configs/setting_dashboard/TaskHistory.vue b/src/views/configs/setting_dashboard/TaskHistory.vue new file mode 100644 index 0000000..4e76af9 --- /dev/null +++ b/src/views/configs/setting_dashboard/TaskHistory.vue @@ -0,0 +1,85 @@ + + diff --git a/src/views/configs/setting_dashboard/data.ts b/src/views/configs/setting_dashboard/data.ts new file mode 100644 index 0000000..3edc605 --- /dev/null +++ b/src/views/configs/setting_dashboard/data.ts @@ -0,0 +1,108 @@ +export const shortcuts = [ + { + name: '资源接入', + path: '/cmp-web/vendors' + }, + { + name: '云平台', + path: '/cmp-web/compute/cloud/list' + }, + { + name: '云主机', + path: '/cmp-web/compute/vms' + }, + { + name: 'IP地址池', + path: '/cmp-web/base_resource/ips' + }, + { + name: '镜像资源', + path: '/cmp-web/base_resource/repository' + }, + { + name: '数据库', + path: '/cmp-web/db/rds/mysql' + }, + { + name: '中间件', + path: '/cmp-web/middleware/mq/kafka' + }, + { + name: '执行历史', + path: '/cop-web/task/history/list' + }, + { + name: '常规作业', + path: '/cop-web/task/task/list' + }, + { + name: '定时作业', + path: '/cop-web/task/shedule/list' + }, + { + name: '服务目录', + path: '/cos/products/catalogs' + }, + { + name: '流程管理', + path: '/cos/flow/define/list' + }, + { + name: '流程工单', + path: '/cos/flow/workorder' + }, + { + name: '监控概览', + path: '/cms-web/dashboard' + }, + { + name: '用户管理', + path: '/sms-web/auth/managers' + }, + { + name: '租户管理', + path: '/sms-web/auth/tenants' + }, + { + name: '角色管理', + path: '/sms-web/auth/roles' + }, + { + name: '系统配置', + path: '/sms-web/config/system_security' + } + // { + // name: '文档中心', + // path: '/cos/opc/document/list' + // } + // { + // name: '资源接入', + // path: '' + // }, + // { + // name: '资源接入', + // path: '' + // }, + // { + // name: '资源接入', + // path: '' + // } +] +export const topSetting = { + series: { + label: { + show: true, + position: 'right' + } + }, + yAxis: { + axisLabel: { + show: true, + color: '#707274', + rotate: 30, + formatter(value: string) { + return `${value?.substr(0, 5)}${value.length > 5 ? '...' : ''}` + } + } + } +} diff --git a/src/views/configs/setting_dashboard/index.vue b/src/views/configs/setting_dashboard/index.vue new file mode 100644 index 0000000..ce65add --- /dev/null +++ b/src/views/configs/setting_dashboard/index.vue @@ -0,0 +1,544 @@ + + + diff --git a/src/views/configs/setting_dashboard/utils.ts b/src/views/configs/setting_dashboard/utils.ts new file mode 100644 index 0000000..6ba043c --- /dev/null +++ b/src/views/configs/setting_dashboard/utils.ts @@ -0,0 +1,67 @@ +import { conditionBill, getOrderDashboard, getAlarmCount, getOrderCount, getTodoCount } from 'services/system/portal' + +async function getPayWayCount() { + const res = await getOrderDashboard({ + time: 'Months' + }) + return res.data.typeOrders +} + +async function getTodayAlarmCount() { + const res = await getAlarmCount({ + action: 'pieChart', + time: 'TODAY' + }) + return res.data +} + +async function getOrders() { + const res = await getOrderCount() + return res.data +} + +export async function getCardData(item: any) { + switch (item.config.code) { + case 'ToDoWork': + { + const res = await getTodoCount() + if (res.success) { + item.data = res.data + } + } + break + case 'OrderCount': + item.data = await getOrders() + break + case 'MoneyCount': + const res = await conditionBill({ + condition: 'totalBills' + }) + if (res.success) { + item.data = [ + { + name: '租户消费总计', + value: res.data + } + ] + } + break + case 'tenantTop5': + case 'userTop5': + { + const res = await conditionBill({ + condition: item.config.code + }) + if (res.success) { + item.data = res.data + } + } + break + case 'PayWayCount': + item.data = await getPayWayCount() + break + case 'TodayAlarmCount': + item.data = await getTodayAlarmCount() + break + } +} diff --git a/src/views/configs/tag.vue b/src/views/configs/tag.vue new file mode 100644 index 0000000..7d35d6f --- /dev/null +++ b/src/views/configs/tag.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/views/errorPage/401.vue b/src/views/errorPage/401.vue new file mode 100644 index 0000000..de5487f --- /dev/null +++ b/src/views/errorPage/401.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/errorPage/404.vue b/src/views/errorPage/404.vue new file mode 100644 index 0000000..4bd8f3a --- /dev/null +++ b/src/views/errorPage/404.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/views/log/audit.vue b/src/views/log/audit.vue new file mode 100644 index 0000000..d995071 --- /dev/null +++ b/src/views/log/audit.vue @@ -0,0 +1,201 @@ + + + diff --git a/src/views/log/loginLog.vue b/src/views/log/loginLog.vue new file mode 100644 index 0000000..943b4a1 --- /dev/null +++ b/src/views/log/loginLog.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/views/login/lockme.vue b/src/views/login/lockme.vue new file mode 100644 index 0000000..48874af --- /dev/null +++ b/src/views/login/lockme.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/views/login/login.vue b/src/views/login/login.vue new file mode 100644 index 0000000..670df3e --- /dev/null +++ b/src/views/login/login.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/src/views/login/sso.vue b/src/views/login/sso.vue new file mode 100644 index 0000000..08d7e3a --- /dev/null +++ b/src/views/login/sso.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/views/login/tools.js b/src/views/login/tools.js new file mode 100644 index 0000000..83d9422 --- /dev/null +++ b/src/views/login/tools.js @@ -0,0 +1,15 @@ +import { setToken } from 'utils/auth' +import { enablePermissionStorage, menuKey, enableUserStorage, userKey } from '@/config' + +export function setLoginData(data) { + const { accountCategory, manager = {}, servicePermissions } = data + if (enableUserStorage) { + localStorage.setItem(userKey, JSON.stringify({ ...manager, accountCategory })) + } + if (enablePermissionStorage) { + localStorage.setItem(menuKey, JSON.stringify(servicePermissions || [])) + } + localStorage.setItem('buttonData', JSON.stringify(data.buttons || [])) + localStorage.removeItem('lockData') + setToken(data.token) +} diff --git a/src/views/monitor/components/Component.vue b/src/views/monitor/components/Component.vue new file mode 100644 index 0000000..c9aba11 --- /dev/null +++ b/src/views/monitor/components/Component.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/views/monitor/components/Host.vue b/src/views/monitor/components/Host.vue new file mode 100644 index 0000000..3d2bb0d --- /dev/null +++ b/src/views/monitor/components/Host.vue @@ -0,0 +1,89 @@ +/** * Created by HaijunZhang on 2019/12/16. */ + + + + + + diff --git a/src/views/monitor/components/HostOverview.vue b/src/views/monitor/components/HostOverview.vue new file mode 100644 index 0000000..672fb03 --- /dev/null +++ b/src/views/monitor/components/HostOverview.vue @@ -0,0 +1,212 @@ + + + diff --git a/src/views/monitor/components/Plug.vue b/src/views/monitor/components/Plug.vue new file mode 100644 index 0000000..14ada41 --- /dev/null +++ b/src/views/monitor/components/Plug.vue @@ -0,0 +1,123 @@ + + + + diff --git a/src/views/monitor/components/Service.vue b/src/views/monitor/components/Service.vue new file mode 100644 index 0000000..ee037d2 --- /dev/null +++ b/src/views/monitor/components/Service.vue @@ -0,0 +1,158 @@ + + + + diff --git a/src/views/monitor/components/filters.js b/src/views/monitor/components/filters.js new file mode 100644 index 0000000..310cf03 --- /dev/null +++ b/src/views/monitor/components/filters.js @@ -0,0 +1,31 @@ +/** + * Created by HaijunZhang on 2019/12/17. + */ +// 任务执行状态 +export function statusFilter(value, type = 'name') { + const obj = { + running: { + name: '运行中', + color: 'success' + }, + error: { + name: '异常', + color: 'danger' + }, + warning: { + name: '告警', + color: 'warning' + } + } + return obj[value] && obj[value][type] // 容错处理(初始化值不存在) +} +export const colorMap = { + running: 'green', + warning: 'yellow', + error: 'red' +} +export const borderColorMap = { + running: '#A3E5C3', + warning: '#FF9900', + error: '#DC1A1A' +} diff --git a/src/views/monitor/components/index.scss b/src/views/monitor/components/index.scss new file mode 100644 index 0000000..2183729 --- /dev/null +++ b/src/views/monitor/components/index.scss @@ -0,0 +1,175 @@ +.component-container { + //padding: 20px 10px; + background: #fff; + flex-wrap: wrap; + + //margin: 0 0 10px 0 !important; + .cell { + position: relative; + border: 1px #b8d3f4 dashed; + padding: 30px 10px 10px 10px; + margin-top: 15px; + + .cell-title { + background: #deeffd; + color: #2e8cf0; + text-align: center; + height: 30px; + line-height: 30px; + width: 50%; + position: absolute; + top: -15px; + left: 25%; + } + + .cell-body { + position: relative; + display: inline-block; + border: 1px solid #b8d3f4; + background: #fff; + min-width: 1px; + padding: 10px; + overflow-x: auto; + overflow-y: hidden; + cursor: pointer; + + .setting { + position: absolute; + top: -10px; + right: 0; + font-size: 14px; + } + + .cell-checked { + position: absolute; + right: 10px; + top: 5px; + } + + &:hover { + z-index: 2; + -webkit-box-shadow: 0 7px 15px rgba(0, 0, 0, 0.1); + box-shadow: 0 3px 15px rgba(0, 0, 0, 0.1); + -webkit-transform: translate3d(0, -1px, 0); + transform: translate3d(0, -1px, 0); + } + + span.status { + display: inline-block; + position: relative; + top: 3px; + } + + .progress-wrap { + display: inline-block; + width: calc(100% - 50px); + overflow: hidden; + text-overflow: ellipsis; + } + } + + .cell-ip { + text-align: center; + height: 30px; + line-height: 30px; + margin-bottom: 15px; + border: 1px solid #b8d3f4; + width: 100%; + } + + .attr-value { + display: inline-block; + } + } + + .green { + .cell { + border: 1px #a3e5c3 dashed; + //background: #F6FCF9; + margin-top: 20px; + + .cell-title { + background: #d1f2e1; + color: #17be6a; + } + + .cell-body { + border: 1px solid #a3e5c3; + } + + .el-button--text { + color: #17be6a; + } + } + } + + .yellow { + .cell { + border: 1px #ff9900 dashed; + //background: #ff990030; + margin-top: 20px; + + .cell-title { + background: #f3debf; + color: #ff9900; + } + + .cell-body { + border: 1px solid #a3e5c3; + } + + .el-button--text { + color: #ff9900; + } + } + } + + .red { + .cell { + border: 1px #dc1a1a dashed; + //background: #F6C6C6; + margin-top: 20px; + + .cell-title { + background: #efa8a8; + color: #dc1a1a; + } + + .el-button--text { + color: #dc1a1a; + } + } + } + + &.blue { + .cell { + background: rgba(247, 251, 253, 0.63); + border: 1px #9cd3e2 dashed; + + .cell-title { + background: #d6f3fb; + color: #3bc3ea; + } + + .cell-body { + border: 1px solid #9cd3e2; + } + + .el-button--text { + color: #3bc3ea; + } + } + } + + &.purple { + .cell { + min-width: auto !important; + border: 1px #e9e9f9 dashed; + + .cell-title { + background: #e9e9f9; + color: #a5a6e6; + } + } + } +} diff --git a/src/views/monitor/components/logDownload.vue b/src/views/monitor/components/logDownload.vue new file mode 100644 index 0000000..f1aeb6b --- /dev/null +++ b/src/views/monitor/components/logDownload.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/views/monitor/components/next.vue b/src/views/monitor/components/next.vue new file mode 100644 index 0000000..ce33471 --- /dev/null +++ b/src/views/monitor/components/next.vue @@ -0,0 +1,572 @@ + + + diff --git a/src/views/monitor/components/realLog.vue b/src/views/monitor/components/realLog.vue new file mode 100644 index 0000000..50e962e --- /dev/null +++ b/src/views/monitor/components/realLog.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/views/monitor/components/userDefind.vue b/src/views/monitor/components/userDefind.vue new file mode 100644 index 0000000..a4b6444 --- /dev/null +++ b/src/views/monitor/components/userDefind.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/views/monitor/index.vue b/src/views/monitor/index.vue new file mode 100644 index 0000000..a224fdb --- /dev/null +++ b/src/views/monitor/index.vue @@ -0,0 +1,48 @@ +/** * Created by HaijunZhang on 2019/12/16. */ + + + + + diff --git a/src/views/permisson/auth/AddDialog.vue b/src/views/permisson/auth/AddDialog.vue new file mode 100644 index 0000000..e1cba07 --- /dev/null +++ b/src/views/permisson/auth/AddDialog.vue @@ -0,0 +1,260 @@ + + + diff --git a/src/views/permisson/auth/api_auth.vue b/src/views/permisson/auth/api_auth.vue new file mode 100644 index 0000000..9d1c20c --- /dev/null +++ b/src/views/permisson/auth/api_auth.vue @@ -0,0 +1,143 @@ + + diff --git a/src/views/permisson/auth/auth.vue b/src/views/permisson/auth/auth.vue new file mode 100644 index 0000000..eaed1ab --- /dev/null +++ b/src/views/permisson/auth/auth.vue @@ -0,0 +1,257 @@ + + + + diff --git a/src/views/permisson/auth/console_auth/AddDialog.vue b/src/views/permisson/auth/console_auth/AddDialog.vue new file mode 100644 index 0000000..2b40f84 --- /dev/null +++ b/src/views/permisson/auth/console_auth/AddDialog.vue @@ -0,0 +1,323 @@ + + + diff --git a/src/views/permisson/auth/console_auth/index.vue b/src/views/permisson/auth/console_auth/index.vue new file mode 100644 index 0000000..46658f3 --- /dev/null +++ b/src/views/permisson/auth/console_auth/index.vue @@ -0,0 +1,234 @@ + + + + diff --git a/src/views/permisson/auth/index.vue b/src/views/permisson/auth/index.vue new file mode 100644 index 0000000..63f7391 --- /dev/null +++ b/src/views/permisson/auth/index.vue @@ -0,0 +1,33 @@ + + + + diff --git a/src/views/permisson/department.vue b/src/views/permisson/department.vue new file mode 100644 index 0000000..3ad33c2 --- /dev/null +++ b/src/views/permisson/department.vue @@ -0,0 +1,152 @@ + + + diff --git a/src/views/permisson/manager/AddDialog.vue b/src/views/permisson/manager/AddDialog.vue new file mode 100644 index 0000000..e09ec43 --- /dev/null +++ b/src/views/permisson/manager/AddDialog.vue @@ -0,0 +1,220 @@ + + diff --git a/src/views/permisson/manager/GrantRole.vue b/src/views/permisson/manager/GrantRole.vue new file mode 100644 index 0000000..e9c6901 --- /dev/null +++ b/src/views/permisson/manager/GrantRole.vue @@ -0,0 +1,65 @@ + + diff --git a/src/views/permisson/manager/ResetPassword.vue b/src/views/permisson/manager/ResetPassword.vue new file mode 100644 index 0000000..a515fa3 --- /dev/null +++ b/src/views/permisson/manager/ResetPassword.vue @@ -0,0 +1,59 @@ + + diff --git a/src/views/permisson/manager/SubnetCidr.vue b/src/views/permisson/manager/SubnetCidr.vue new file mode 100644 index 0000000..5fb6acb --- /dev/null +++ b/src/views/permisson/manager/SubnetCidr.vue @@ -0,0 +1,76 @@ + + diff --git a/src/views/permisson/manager/UserDetail.vue b/src/views/permisson/manager/UserDetail.vue new file mode 100644 index 0000000..b48d74f --- /dev/null +++ b/src/views/permisson/manager/UserDetail.vue @@ -0,0 +1,127 @@ + + diff --git a/src/views/permisson/manager/config.ts b/src/views/permisson/manager/config.ts new file mode 100644 index 0000000..b80c8c9 --- /dev/null +++ b/src/views/permisson/manager/config.ts @@ -0,0 +1,83 @@ +export const columns = [ + { + type: 'selection' + }, + { + label: '登录账号', + prop: 'account', + sortable: 'custom', + scopedSlots: { customRender: 'account' } + }, + { + label: '用户姓名', + prop: 'name', + sortable: 'custom' + }, + { + label: '账号类型', + prop: 'isManager', + customRender(val: boolean) { + return val ? '管理用户' : '普通用户' + } + }, + { + label: '性别', + prop: 'sex', + scopedSlots: { customRender: 'sex' } + }, + { + label: '状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '所属租户', + prop: 'tenantName' + }, + { + label: '联系方式', + prop: 'mobile' + }, + { + label: '用户邮箱', + prop: 'email', + showOverflowTooltip: true + }, + { + label: '创建时间', + prop: 'gmtCreate', + sortable: 'custom' + }, + { + label: '用户工号', + prop: 'jobNumber', + checked: false + }, + { + label: '公司名称', + prop: 'company', + checked: false + }, + { + label: '用户描述', + prop: 'remark', + checked: false + }, + { + label: '操作', + disabled: true, + width: '220px', + scopedSlots: { customRender: 'operate' } + } +] +export const searchConfigs: Base.ISearchConfig[] = [ + { label: '登录账号', value: 'account', type: 'Input' }, + { label: '用户名称', value: 'name', type: 'Input' }, + { label: '联系方式', value: 'mobile', type: 'Input' }, + { label: '角色', value: 'roleId', type: 'Select', data: [] }, + { label: '所属租户', value: 'tenantId', type: 'Select', data: [] } +] +export const sexData = [ + { name: '女', value: '0', value1: 'false' }, + { name: '男', value: '1', value1: 'true' } +] diff --git a/src/views/permisson/manager/index.vue b/src/views/permisson/manager/index.vue new file mode 100644 index 0000000..405b827 --- /dev/null +++ b/src/views/permisson/manager/index.vue @@ -0,0 +1,212 @@ + + diff --git a/src/views/permisson/plugins/configIndex.vue b/src/views/permisson/plugins/configIndex.vue new file mode 100644 index 0000000..7022003 --- /dev/null +++ b/src/views/permisson/plugins/configIndex.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/views/permisson/plugins/index.vue b/src/views/permisson/plugins/index.vue new file mode 100644 index 0000000..b3a2ac8 --- /dev/null +++ b/src/views/permisson/plugins/index.vue @@ -0,0 +1,290 @@ + + diff --git a/src/views/permisson/role.vue b/src/views/permisson/role.vue new file mode 100644 index 0000000..7601dc9 --- /dev/null +++ b/src/views/permisson/role.vue @@ -0,0 +1,619 @@ + + + + + diff --git a/src/views/permisson/tenant/AddDialog.vue b/src/views/permisson/tenant/AddDialog.vue new file mode 100644 index 0000000..5a531f6 --- /dev/null +++ b/src/views/permisson/tenant/AddDialog.vue @@ -0,0 +1,205 @@ + + + diff --git a/src/views/permisson/tenant/ServiceDialog.vue b/src/views/permisson/tenant/ServiceDialog.vue new file mode 100644 index 0000000..874a722 --- /dev/null +++ b/src/views/permisson/tenant/ServiceDialog.vue @@ -0,0 +1,60 @@ + + diff --git a/src/views/permisson/tenant/assignPool.vue b/src/views/permisson/tenant/assignPool.vue new file mode 100644 index 0000000..3f8f418 --- /dev/null +++ b/src/views/permisson/tenant/assignPool.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/views/permisson/tenant/components/LeftMenu.vue b/src/views/permisson/tenant/components/LeftMenu.vue new file mode 100644 index 0000000..d680f8d --- /dev/null +++ b/src/views/permisson/tenant/components/LeftMenu.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/views/permisson/tenant/components/QuotaItem.vue b/src/views/permisson/tenant/components/QuotaItem.vue new file mode 100644 index 0000000..155888b --- /dev/null +++ b/src/views/permisson/tenant/components/QuotaItem.vue @@ -0,0 +1,41 @@ +/** * Created by HaijunZhang on 2019/8/30. */ + + + + + diff --git a/src/views/permisson/tenant/components/ServiceItem.vue b/src/views/permisson/tenant/components/ServiceItem.vue new file mode 100644 index 0000000..b187d5f --- /dev/null +++ b/src/views/permisson/tenant/components/ServiceItem.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/views/permisson/tenant/components/basicInfo.vue b/src/views/permisson/tenant/components/basicInfo.vue new file mode 100644 index 0000000..5fd9fa6 --- /dev/null +++ b/src/views/permisson/tenant/components/basicInfo.vue @@ -0,0 +1,168 @@ +/** * Created by HaijunZhang on 2019/8/30. */ + + + + + diff --git a/src/views/permisson/tenant/components/quota.vue b/src/views/permisson/tenant/components/quota.vue new file mode 100644 index 0000000..c799b4d --- /dev/null +++ b/src/views/permisson/tenant/components/quota.vue @@ -0,0 +1,84 @@ +/** * Created by HaijunZhang on 2019/8/30. */ + + + + + diff --git a/src/views/permisson/tenant/components/quotaData.js b/src/views/permisson/tenant/components/quotaData.js new file mode 100644 index 0000000..daf1ead --- /dev/null +++ b/src/views/permisson/tenant/components/quotaData.js @@ -0,0 +1,8 @@ +/** + * Created by HaijunZhang on 2019/7/8. + */ +export default [ + { name: 'CPU', unit: 'C', code: 'meta.cpu', min: 0, max: 999999, quota: 0 }, + { name: '内存', unit: 'GB', code: 'meta.mem', min: 0, max: 999999, quota: 0 }, + { name: '磁盘', unit: 'GB', code: 'meta.disk', min: 0, max: 9999999, quota: 0 } +] diff --git a/src/views/permisson/tenant/components/transfer.vue b/src/views/permisson/tenant/components/transfer.vue new file mode 100644 index 0000000..2ac7e55 --- /dev/null +++ b/src/views/permisson/tenant/components/transfer.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/views/permisson/tenant/config.js b/src/views/permisson/tenant/config.js new file mode 100644 index 0000000..fdb99aa --- /dev/null +++ b/src/views/permisson/tenant/config.js @@ -0,0 +1,53 @@ +export const columns = [ + { + type: 'selection' + }, + { + label: '登录账号', + prop: 'account', + scopedSlots: { customRender: 'account' } + }, + { + label: '名称', + prop: 'name' + }, + { + label: '所属组织', + prop: 'departmentName' + }, + { + label: '状态', + prop: 'status', + scopedSlots: { customRender: 'status' } + }, + { + label: '折扣率', + prop: 'discount' + }, + { + label: '创建时间', + prop: 'gmtCreate' + }, + { + label: '操作', + disabled: true, + width: '220px', + scopedSlots: { customRender: 'operate' } + } +] + +export const searchConfigs = [ + { label: '登录账号', value: 'account', type: 'Input', width: '220px' }, + { label: '名称', value: 'name', type: 'Input' }, + { + label: '状态', + value: 'status', + type: 'Select', + data: [ + { name: '正常', id: 'NORMAL' }, + { name: '冻结', id: 'ABNORMAL' }, + { name: '注销', id: 'LOGOUT' } + ] + }, + { type: 'DateRange', label: '', value: 'gmtCreate' } +] diff --git a/src/views/permisson/tenant/index.scss b/src/views/permisson/tenant/index.scss new file mode 100644 index 0000000..de2f796 --- /dev/null +++ b/src/views/permisson/tenant/index.scss @@ -0,0 +1,7 @@ +.name-cell { + display: flex; + align-items: center; + img { + height: 20px; + } +} diff --git a/src/views/permisson/tenant/index.vue b/src/views/permisson/tenant/index.vue new file mode 100644 index 0000000..08d1dec --- /dev/null +++ b/src/views/permisson/tenant/index.vue @@ -0,0 +1,586 @@ + + + diff --git a/src/views/permisson/tenant/quotaDialog.vue b/src/views/permisson/tenant/quotaDialog.vue new file mode 100644 index 0000000..abee8d0 --- /dev/null +++ b/src/views/permisson/tenant/quotaDialog.vue @@ -0,0 +1,57 @@ + + diff --git a/src/views/permisson/tenant/tenantDetail.vue b/src/views/permisson/tenant/tenantDetail.vue new file mode 100644 index 0000000..5f3a29c --- /dev/null +++ b/src/views/permisson/tenant/tenantDetail.vue @@ -0,0 +1,342 @@ + + + + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a101182 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "importHelpers": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "sourceMap": true, + "allowJs": true, + "baseUrl": ".", + "types": ["webpack-env"], + "skipLibCheck": true, + // "typeRoots": ["./node_modules/@types/", "./types"], + "paths": { + "@/*": ["src/*"], + "services/*": ["src/services/*"], + "utils/*": ["src/common/utils/*"], + "components/*": ["src/common/components/*"], + "hooks/*": ["src/common/hooks/*"], + "filters/*": ["src/common/filters/*"] + }, + "lib": ["esnext", "dom", "dom.iterable", "scripthost"] + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "tests/**/*.ts", "tests/**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/upload.js b/upload.js new file mode 100644 index 0000000..60f517f --- /dev/null +++ b/upload.js @@ -0,0 +1,28 @@ +'use strict' +// 引入scp2 +const client = require('scp2') +const ora = require('ora') +const chalk = require('chalk') +const spinner = ora(chalk.green('正在发布到服务器...')) +const startTime = new Date().getTime() +spinner.start() +client.scp( + './dist/', + { + // 本地打包文件的位置 + host: '**.**.**.**', // 服务器的IP地址 + port: '**', // 服务器端口, 一般为 22 + username: '***', // 用户名 + password: '******', // 密码 + path: '/opt/test/' // 项目部署的服务器目标位置 + }, + (err) => { + spinner.stop() + if (!err) { + console.log(chalk.green('Success! Project ready deploy successful...')) + console.log(chalk.green(`Time: ${new Date().getTime() - startTime}ms`)) + } else { + console.log(chalk.red('Fail!' + err)) + } + } +) diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..74b33df --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,72 @@ +import { createVuePlugin } from 'vite-plugin-vue2' +import { defineConfig } from 'vite' +import path from 'path' +import viteSvgIcons from 'vite-plugin-svg-icons' + +function resolve(dir) { + return path.join(__dirname, dir) +} + +const httpType = 'http://' +const proxyUrl = '23.33.3.3:60006/' // 代理地址设置 + +export default defineConfig({ + resolve: { + alias: { + vue: 'vue/dist/vue.min.js', + '@': resolve('src'), + assets: resolve('src/assets'), + services: resolve('src/services'), + utils: resolve('src/common/utils'), + interface: resolve('src/common/interface'), + components: resolve('src/common/components'), + hooks: resolve('src/common/hooks'), + task: resolve('src/views/task'), + filters: resolve('src/common/filters'), + views: resolve('src/views') + } + }, + base: '/', + plugins: [ + // vue() + createVuePlugin(), + viteSvgIcons({ + // Specify the icon folder to be cached + iconDirs: [path.resolve(process.cwd(), './src/icons/svg')], + // Specify symbolId format + symbolId: 'icon-[dir]-[name]' + }) + ], + server: { + host: '0.0.0.0', + port: 8088, + proxy: { + // '/api/sms/messageService': { + // target: 'ws://' + proxyUrl, + // changeOrigin: true, + // ws: true + // }, + '/api': { + target: httpType + proxyUrl, + changeOrigin: true, + secure: false + }, + '/config-files': { + target: httpType + proxyUrl, + secure: false + }, + '/web-common-resource': { + target: httpType + proxyUrl, + secure: false + } + } + }, + css: { + preprocessorOptions: { + scss: { + additionalData: '@import "@/common/css/common-var.scss";', + charset: false + } + } + } +}) diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..6a8212e --- /dev/null +++ b/vue.config.js @@ -0,0 +1,124 @@ +/** + * Created by Zhang Haijun on 2018/7/24. + */ +const path = require('path') +const { name } = require('./package') +const webpack = require('webpack') +const CompressPlugin = require('compress-webpack-plugin') + +function resolve(dir) { + return path.join(__dirname, dir) +} +const httpType = 'http://' +const proxyUrl = '23.33.3.3:60006' // 代理地址设置 + +const publicPath = process.env.NODE_ENV === 'production' ? '/sms-web/' : '/' +module.exports = { + publicPath, + assetsDir: 'static', + outputDir: 'sms-web', + // 构建时不进行eslint校验 + lintOnSave: process.env.NODE_ENV !== 'production', + // 生产环境禁止source map + productionSourceMap: false, + devServer: { + headers: { + 'Access-Control-Allow-Origin': '*' + }, + port: 8085, + overlay: { + warnings: true, + errors: true + }, + proxy: { + '/api/sms/messageService': { + target: 'ws://' + proxyUrl, + changeOrigin: true, + ws: false + }, + '/api': { + target: httpType + proxyUrl, + changeOrigin: true, + secure: false + }, + '/captcha': { + target: httpType + proxyUrl + }, + '/config-files': { + target: httpType + proxyUrl + }, + '/web-common-resource': { + target: httpType + proxyUrl + } + } + }, + css: { + loaderOptions: { + sass: { + prependData: '@import "@/common/css/common-var.scss";' + } + } + }, + configureWebpack: (config) => { + const plugins = [] + if (process.env.NODE_ENV === 'production') { + plugins.push( + new CompressPlugin({ + test: /\.js$|\.html$|\.css$/, + threshold: 10240, + deleteOriginalAssets: false + }) + ) + } + return { + plugins, + output: { + // 把子应用打包成 umd 库格式 + library: `${name}-[name]`, + libraryTarget: 'umd', + jsonpFunction: `webpackJsonp_${name}` + } + } + }, + chainWebpack: (config) => { + // set svg-sprite-loader + config.module.rule('svg').exclude.add(resolve('src/icons')).end() + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]' + }) + .end() + config.resolve.alias + .set('@', resolve('src')) + .set('assets', resolve('src/assets')) + .set('services', resolve('src/services')) + .set('utils', resolve('src/common/utils')) + .set('interface', resolve('src/common/interface')) + .set('components', resolve('src/common/components')) + .set('hooks', resolve('src/common/hooks')) + .set('task', resolve('src/views/task')) + .set('filters', resolve('src/filters')) + .set('views', resolve('src/views')) + config.module + .rule('fonts') + .use('url-loader') + .loader('url-loader') + .options({ + limit: 4096, // 小于4kb将会被打包成 base64 + fallback: { + loader: 'file-loader', + options: { + name: 'fonts/[name].[ext]', + publicPath: '/web-common-resource' + } + } + }) + .end() + } +}