You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sh...@apache.org on 2023/10/06 08:10:28 UTC
[cloudstack] branch main updated: UI: Admin, account and project dashboard improvements (#7956)
This is an automated email from the ASF dual-hosted git repository.
shwstppr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 5d9ae31f1b0 UI: Admin, account and project dashboard improvements (#7956)
5d9ae31f1b0 is described below
commit 5d9ae31f1b0dcf74dae722c2f22f895b85083002
Author: Rohit Yadav <ro...@shapeblue.com>
AuthorDate: Fri Oct 6 13:40:22 2023 +0530
UI: Admin, account and project dashboard improvements (#7956)
This PR aims at improving the CloudStack dashboard and introduces the following:
Admin dashboard: six cards that are responsive to screen sizes and show zone specific compute, storage and network allocation, as well as instance/hosts stats, alerts and events. Now, by default, the admin dashboard shows aggegate data from all zones, with option for admin to select individual zone to see individual zone stats
Account/project dashboard: six cards that are responsive to screen sizes and show account or project specific resource lists/counts, and limits shown in three cards as (a) compute (with running stopped instances), (b) storage and (c) network allocation, an admin-defined links/docs card (via config.json) and events cards. Admin is allowed to configure project limits on project dashboards.
A global create button on the top global header/user-menu to allow for quick actions such as to deploy a VM, CKS cluster and create a volume (more actions can be added as desired via code changes) etc.
Doc PR - apache/cloudstack-documentation#349
---------
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
---
ui/package-lock.json | 688 ++++++---------------
ui/package.json | 10 +-
ui/public/config.json | 30 +
ui/public/locales/en.json | 2 +
ui/src/assets/icons/debian.svg | 153 -----
ui/src/assets/icons/kubernetes.svg | 58 --
ui/src/components/header/CreateMenu.vue | 152 +++++
ui/src/components/header/ProjectMenu.vue | 4 +-
ui/src/components/header/UserMenu.vue | 12 +
ui/src/components/menu/SMenu.vue | 5 +
ui/src/components/page/GlobalHeader.vue | 4 +-
ui/src/components/page/GlobalLayout.vue | 12 +-
ui/src/components/view/InfoCard.vue | 6 +
ui/src/components/view/ResourceView.vue | 2 +-
ui/src/components/widgets/ChartCard.vue | 1 -
ui/src/components/widgets/Drawer.vue | 2 +-
ui/src/components/widgets/OsLogo.vue | 16 +-
ui/src/config/router.js | 23 +-
ui/src/config/section/compute.js | 7 +-
ui/src/config/section/image.js | 3 +-
ui/src/config/section/infra/hosts.js | 2 +-
ui/src/config/section/infra/primaryStorages.js | 2 +-
ui/src/config/section/storage.js | 2 +-
ui/src/core/ext.js | 8 +-
ui/src/core/lazy_lib/components_use.js | 4 +-
ui/src/style/dark-mode.less | 2 +-
ui/src/style/vars.less | 5 +
ui/src/utils/device.js | 6 +-
ui/src/views/AutogenView.vue | 17 +-
ui/src/views/dashboard/CapacityDashboard.vue | 529 ++++++++++++----
ui/src/views/dashboard/UsageDashboard.vue | 597 ++++++++++++++----
ui/src/views/network/CreateIsolatedNetworkForm.vue | 4 +-
ui/src/views/network/CreateNetwork.vue | 3 +-
ui/src/views/network/CreateVpc.vue | 4 +-
34 files changed, 1360 insertions(+), 1015 deletions(-)
diff --git a/ui/package-lock.json b/ui/package-lock.json
index 55e349ce231..0cbf08bd4a4 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -113,7 +113,8 @@
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz",
"integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@apollographql/graphql-playground-html": {
"version": "1.6.27",
@@ -1502,52 +1503,39 @@
"integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
},
"@fortawesome/fontawesome-common-types": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.3.0.tgz",
- "integrity": "sha512-CA3MAZBTxVsF6SkfkHXDerkhcQs0QPofy43eFdbWJJkZiq3SfiaH1msOkac59rQaqto5EqWnASboY1dBuKen5w=="
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz",
+ "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA=="
},
"@fortawesome/fontawesome-svg-core": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.3.0.tgz",
- "integrity": "sha512-UIL6crBWhjTNQcONt96ExjUnKt1D68foe3xjEensLDclqQ6YagwCRYVQdrp/hW0ALRp/5Fv/VKw+MqTUWYYvPg==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz",
+ "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==",
"requires": {
- "@fortawesome/fontawesome-common-types": "^0.3.0"
+ "@fortawesome/fontawesome-common-types": "6.4.2"
}
},
"@fortawesome/free-brands-svg-icons": {
- "version": "5.15.4",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.4.tgz",
- "integrity": "sha512-f1witbwycL9cTENJegcmcZRYyawAFbm8+c6IirLmwbbpqz46wyjbQYLuxOc7weXFXfB7QR8/Vd2u5R3q6JYD9g==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.2.tgz",
+ "integrity": "sha512-LKOwJX0I7+mR/cvvf6qIiqcERbdnY+24zgpUSouySml+5w8B4BJOx8EhDR/FTKAu06W12fmUIcv6lzPSwYKGGg==",
"requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.36"
- },
- "dependencies": {
- "@fortawesome/fontawesome-common-types": {
- "version": "0.2.36",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
- "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg=="
- }
+ "@fortawesome/fontawesome-common-types": "6.4.2"
}
},
"@fortawesome/free-solid-svg-icons": {
- "version": "5.15.4",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz",
- "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz",
+ "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==",
"requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.36"
- },
- "dependencies": {
- "@fortawesome/fontawesome-common-types": {
- "version": "0.2.36",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
- "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg=="
- }
+ "@fortawesome/fontawesome-common-types": "6.4.2"
}
},
"@fortawesome/vue-fontawesome": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.1.tgz",
- "integrity": "sha512-CdXZJoCS+aEPec26ZP7hWWU3SaJlQPZSCGdgpQ2qGl2HUmtUUNrI3zC4XWdn1JUmh3t5OuDeRG1qB4eGRNSD4A=="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz",
+ "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==",
+ "requires": {}
},
"@gar/promisify": {
"version": "1.1.3",
@@ -2908,32 +2896,6 @@
"requires": {
"@vue-js-cron/core": "3.7.1",
"ant-design-vue": "^3.2.12"
- },
- "dependencies": {
- "ant-design-vue": {
- "version": "3.2.20",
- "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.2.20.tgz",
- "integrity": "sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==",
- "requires": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons-vue": "^6.1.0",
- "@babel/runtime": "^7.10.5",
- "@ctrl/tinycolor": "^3.4.0",
- "@simonwep/pickr": "~1.8.0",
- "array-tree-filter": "^2.1.0",
- "async-validator": "^4.0.0",
- "dayjs": "^1.10.5",
- "dom-align": "^1.12.1",
- "dom-scroll-into-view": "^2.0.0",
- "lodash": "^4.17.21",
- "lodash-es": "^4.17.15",
- "resize-observer-polyfill": "^1.5.1",
- "scroll-into-view-if-needed": "^2.2.25",
- "shallow-equal": "^1.0.0",
- "vue-types": "^3.0.0",
- "warning": "^4.0.0"
- }
- }
}
},
"@vue-js-cron/core": {
@@ -3387,7 +3349,8 @@
"version": "4.5.19",
"resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz",
"integrity": "sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@vue/cli-service": {
"version": "4.5.19",
@@ -3898,7 +3861,8 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
"integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@vue/reactivity": {
"version": "3.2.37",
@@ -3957,7 +3921,8 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.0.0.tgz",
"integrity": "sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@vue/web-component-wrapper": {
"version": "1.3.0",
@@ -3969,7 +3934,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
"integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
- "dev": true,
"requires": {
"@webassemblyjs/helper-module-context": "1.9.0",
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
@@ -3979,26 +3943,22 @@
"@webassemblyjs/floating-point-hex-parser": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
- "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
- "dev": true
+ "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA=="
},
"@webassemblyjs/helper-api-error": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
- "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
- "dev": true
+ "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw=="
},
"@webassemblyjs/helper-buffer": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
- "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
- "dev": true
+ "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA=="
},
"@webassemblyjs/helper-code-frame": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
"integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
- "dev": true,
"requires": {
"@webassemblyjs/wast-printer": "1.9.0"
}
@@ -4006,14 +3966,12 @@
"@webassemblyjs/helper-fsm": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
- "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
- "dev": true
+ "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw=="
},
"@webassemblyjs/helper-module-context": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
"integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0"
}
@@ -4021,14 +3979,12 @@
"@webassemblyjs/helper-wasm-bytecode": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
- "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
- "dev": true
+ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw=="
},
"@webassemblyjs/helper-wasm-section": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
"integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-buffer": "1.9.0",
@@ -4040,7 +3996,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
"integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
- "dev": true,
"requires": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -4049,7 +4004,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
"integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
- "dev": true,
"requires": {
"@xtuc/long": "4.2.2"
}
@@ -4057,14 +4011,12 @@
"@webassemblyjs/utf8": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
- "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
- "dev": true
+ "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w=="
},
"@webassemblyjs/wasm-edit": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
"integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-buffer": "1.9.0",
@@ -4080,7 +4032,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
"integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
@@ -4093,7 +4044,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
"integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-buffer": "1.9.0",
@@ -4105,7 +4055,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
"integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-api-error": "1.9.0",
@@ -4119,7 +4068,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
"integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/floating-point-hex-parser": "1.9.0",
@@ -4133,7 +4081,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
"integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/wast-parser": "1.9.0",
@@ -4152,14 +4099,12 @@
"@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
},
"@xtuc/long": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
},
"abab": {
"version": "2.0.6",
@@ -4185,8 +4130,7 @@
"acorn": {
"version": "6.4.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "dev": true
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ=="
},
"acorn-globals": {
"version": "4.3.4",
@@ -4202,7 +4146,8 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"acorn-walk": {
"version": "6.2.0",
@@ -4258,13 +4203,13 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
"integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
- "dev": true
+ "requires": {}
},
"ajv-keywords": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
+ "requires": {}
},
"alphanum-sort": {
"version": "1.0.2",
@@ -4353,9 +4298,9 @@
}
},
"ant-design-vue": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.2.9.tgz",
- "integrity": "sha512-fnZJpAf4tYAPGBALD9dv8VBmeqfJ+xPt87DfgY1/JI6x3hn6Gfge7voF1GkS0yVT0zLyzc2aTWkDVFWKB5iupA==",
+ "version": "3.2.20",
+ "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.2.20.tgz",
+ "integrity": "sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==",
"requires": {
"@ant-design/colors": "^6.0.0",
"@ant-design/icons-vue": "^6.1.0",
@@ -4432,14 +4377,14 @@
"resolved": "https://registry.npmjs.org/antd-theme-generator/-/antd-theme-generator-1.2.11.tgz",
"integrity": "sha512-7A3lXyLb7eD7MXK7aSgZZ4DxQEdhZwyKhzIm70orUZPQJ8N8TWhZphyOWSGCe8yUqGQhi8PcpM2pLmTriZyKBw==",
"requires": {
- "glob": "^7.1.3",
- "hash.js": "^1.1.5",
- "less": "^3.9.0",
+ "glob": "*",
+ "hash.js": "*",
+ "less": "*",
"less-bundle-promise": "^1.0.11",
- "less-plugin-npm-import": "^2.1.0",
- "postcss": "^6.0.21",
+ "less-plugin-npm-import": "*",
+ "postcss": "*",
"postcss-less": "^3.1.4",
- "strip-css-comments": "^4.1.0"
+ "strip-css-comments": "*"
},
"dependencies": {
"ansi-styles": {
@@ -5040,7 +4985,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
+ "devOptional": true,
"requires": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -5162,7 +5107,8 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz",
"integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"apollo-server-express": {
"version": "2.25.4",
@@ -5279,20 +5225,17 @@
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA=="
},
"arr-flatten": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
},
"arr-union": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q=="
},
"array-equal": {
"version": "1.0.0",
@@ -5348,8 +5291,7 @@
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "dev": true
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ=="
},
"array.prototype.flat": {
"version": "1.3.0",
@@ -5394,7 +5336,6 @@
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dev": true,
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
@@ -5405,8 +5346,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -5414,7 +5354,6 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
"integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
- "dev": true,
"requires": {
"object-assign": "^4.1.1",
"util": "0.10.3"
@@ -5423,14 +5362,12 @@
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
- "dev": true
+ "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA=="
},
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
- "dev": true,
"requires": {
"inherits": "2.0.1"
}
@@ -5445,8 +5382,7 @@
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw=="
},
"ast-types": {
"version": "0.13.3",
@@ -5473,7 +5409,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
+ "devOptional": true
},
"async-limiter": {
"version": "1.0.1",
@@ -5511,8 +5447,7 @@
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"autoprefixer": {
"version": "9.8.8",
@@ -5595,7 +5530,8 @@
"version": "7.0.0-bridge.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
"integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"babel-eslint": {
"version": "10.1.0",
@@ -6204,7 +6140,6 @@
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
"requires": {
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
@@ -6219,7 +6154,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@@ -6228,7 +6162,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -6237,7 +6170,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -6246,7 +6178,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -6258,8 +6189,7 @@
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"batch": {
"version": "0.6.1",
@@ -6296,13 +6226,13 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
+ "devOptional": true
},
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
+ "devOptional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
@@ -6320,14 +6250,12 @@
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"bn.js": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
- "dev": true
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
},
"body-parser": {
"version": "1.20.0",
@@ -6504,7 +6432,6 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
"requires": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
@@ -6522,7 +6449,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -6532,8 +6458,7 @@
"brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
- "dev": true
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
},
"browser-process-hrtime": {
"version": "1.0.0",
@@ -6562,7 +6487,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
"requires": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
@@ -6576,7 +6500,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
"requires": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
@@ -6587,7 +6510,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dev": true,
"requires": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
@@ -6599,7 +6521,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
"integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "dev": true,
"requires": {
"bn.js": "^5.0.0",
"randombytes": "^2.0.1"
@@ -6609,7 +6530,6 @@
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
"integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
- "dev": true,
"requires": {
"bn.js": "^5.1.1",
"browserify-rsa": "^4.0.1",
@@ -6626,7 +6546,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -6636,8 +6555,7 @@
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
@@ -6645,7 +6563,6 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "dev": true,
"requires": {
"pako": "~1.0.5"
}
@@ -6721,8 +6638,7 @@
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
"buffer-indexof": {
"version": "1.1.1",
@@ -6739,14 +6655,12 @@
"buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
- "dev": true
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="
},
"builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
- "dev": true
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ=="
},
"builtins": {
"version": "1.0.3",
@@ -6797,7 +6711,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
"requires": {
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
@@ -7045,7 +6958,8 @@
"chartjs-adapter-moment": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/chartjs-adapter-moment/-/chartjs-adapter-moment-1.0.0.tgz",
- "integrity": "sha512-PqlerEvQcc5hZLQ/NQWgBxgVQ4TRdvkW3c/t+SUEQSj78ia3hgLkf2VZ2yGJtltNbEEFyYGm+cA6XXevodYvWA=="
+ "integrity": "sha512-PqlerEvQcc5hZLQ/NQWgBxgVQ4TRdvkW3c/t+SUEQSj78ia3hgLkf2VZ2yGJtltNbEEFyYGm+cA6XXevodYvWA==",
+ "requires": {}
},
"check-types": {
"version": "8.0.3",
@@ -7057,7 +6971,7 @@
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
+ "devOptional": true,
"requires": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -7073,7 +6987,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
+ "devOptional": true,
"requires": {
"fill-range": "^7.0.1"
}
@@ -7082,7 +6996,7 @@
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
+ "devOptional": true,
"requires": {
"to-regex-range": "^5.0.1"
}
@@ -7091,7 +7005,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
+ "devOptional": true,
"requires": {
"is-glob": "^4.0.1"
}
@@ -7100,13 +7014,13 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
+ "devOptional": true
},
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
+ "devOptional": true,
"requires": {
"is-number": "^7.0.0"
}
@@ -7121,8 +7035,7 @@
"chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
},
"ci-info": {
"version": "2.0.0",
@@ -7138,7 +7051,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
@@ -7148,7 +7060,6 @@
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
"integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
"requires": {
"arr-union": "^3.1.0",
"define-property": "^0.2.5",
@@ -7160,7 +7071,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -7454,7 +7364,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
"integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
"requires": {
"map-visit": "^1.0.0",
"object-visit": "^1.0.0"
@@ -7531,14 +7440,12 @@
"commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
},
"component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
},
"compressible": {
"version": "2.0.18",
@@ -7601,7 +7508,6 @@
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -7672,8 +7578,7 @@
"console-browserify": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
- "dev": true
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
},
"console-control-strings": {
"version": "1.1.0",
@@ -7692,8 +7597,7 @@
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
- "dev": true
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ=="
},
"content-disposition": {
"version": "0.5.4",
@@ -7752,7 +7656,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
- "dev": true,
"requires": {
"aproba": "^1.1.1",
"fs-write-stream-atomic": "^1.0.8",
@@ -7766,7 +7669,6 @@
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
"requires": {
"minimist": "^1.2.6"
}
@@ -7775,7 +7677,6 @@
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
"requires": {
"glob": "^7.1.3"
}
@@ -7785,8 +7686,7 @@
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw=="
},
"copy-to-clipboard": {
"version": "3.3.1",
@@ -8024,7 +7924,6 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
"integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dev": true,
"requires": {
"bn.js": "^4.1.0",
"elliptic": "^6.5.3"
@@ -8033,8 +7932,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -8042,7 +7940,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
"requires": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
@@ -8055,7 +7952,6 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
"requires": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
@@ -8109,7 +8005,6 @@
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
"requires": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
@@ -8394,8 +8289,7 @@
"cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
- "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
- "dev": true
+ "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A=="
},
"dashdash": {
"version": "1.14.1",
@@ -8481,8 +8375,7 @@
"decode-uri-component": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
- "dev": true
+ "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og=="
},
"decompress": {
"version": "4.2.1",
@@ -8793,7 +8686,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
"requires": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
@@ -8803,7 +8695,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -8812,7 +8703,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -8821,7 +8711,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -8919,7 +8808,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
"integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
@@ -8962,7 +8850,6 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
"requires": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
@@ -8972,8 +8859,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -9060,8 +8946,7 @@
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
},
"domelementtype": {
"version": "1.3.1",
@@ -9301,7 +9186,6 @@
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
"integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
"requires": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
@@ -9388,7 +9272,6 @@
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
"integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dev": true,
"requires": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -9402,8 +9285,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -9444,7 +9326,6 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
"integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
- "dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"memory-fs": "^0.5.0",
@@ -9455,7 +9336,6 @@
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
"integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
- "dev": true,
"requires": {
"errno": "^0.1.3",
"readable-stream": "^2.0.1"
@@ -9494,7 +9374,6 @@
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
"integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "dev": true,
"requires": {
"prr": "~1.0.1"
}
@@ -9790,7 +9669,8 @@
"version": "14.1.1",
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz",
"integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"eslint-import-resolver-node": {
"version": "0.3.6",
@@ -10156,7 +10036,8 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz",
"integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"eslint-plugin-vue": {
"version": "7.20.0",
@@ -10191,7 +10072,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
"integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
"requires": {
"esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
@@ -10257,7 +10137,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
"requires": {
"estraverse": "^5.2.0"
},
@@ -10265,16 +10144,14 @@
"estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
}
}
},
"estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
},
"estree-walker": {
"version": "2.0.2",
@@ -10308,8 +10185,7 @@
"events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
},
"eventsource": {
"version": "2.0.2",
@@ -10321,7 +10197,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
"requires": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
@@ -10361,7 +10236,6 @@
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
"integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dev": true,
"requires": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
@@ -10376,7 +10250,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -10385,7 +10258,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -10394,7 +10266,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -10402,8 +10273,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
}
}
},
@@ -10586,7 +10456,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
"requires": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -10596,7 +10465,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
@@ -10605,7 +10473,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
"requires": {
"isobject": "^3.0.1"
}
@@ -10638,7 +10505,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
"requires": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
@@ -10654,7 +10520,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@@ -10663,7 +10528,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -10672,7 +10536,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -10681,7 +10544,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -10690,7 +10552,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -10844,7 +10705,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true
+ "devOptional": true
},
"filename-reserved-regex": {
"version": "2.0.0",
@@ -10873,7 +10734,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
"integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
@@ -10885,7 +10745,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -10958,7 +10817,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
"integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
- "dev": true,
"requires": {
"commondir": "^1.0.1",
"make-dir": "^2.0.0",
@@ -10969,7 +10827,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
"requires": {
"pify": "^4.0.1",
"semver": "^5.6.0"
@@ -10978,14 +10835,12 @@
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
@@ -11056,7 +10911,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
"integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"readable-stream": "^2.3.6"
@@ -11079,8 +10933,7 @@
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ=="
},
"forever-agent": {
"version": "0.6.1",
@@ -11107,7 +10960,6 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
"integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dev": true,
"requires": {
"map-cache": "^0.2.2"
}
@@ -11122,7 +10974,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
@@ -11169,7 +11020,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
"integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
- "dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"iferr": "^0.1.5",
@@ -11186,7 +11036,6 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
"optional": true
},
"fswin": {
@@ -11319,8 +11168,7 @@
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA=="
},
"getpass": {
"version": "0.1.7",
@@ -11375,7 +11223,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
+ "devOptional": true,
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
@@ -11385,7 +11233,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
+ "devOptional": true,
"requires": {
"is-extglob": "^2.1.0"
}
@@ -11543,7 +11391,8 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz",
"integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"growly": {
"version": "1.3.0",
@@ -11665,7 +11514,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
"integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
"requires": {
"get-value": "^2.0.6",
"has-values": "^1.0.0",
@@ -11676,7 +11524,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
"integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
"requires": {
"is-number": "^3.0.0",
"kind-of": "^4.0.0"
@@ -11686,7 +11533,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
"integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -11702,7 +11548,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
"integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "dev": true,
"requires": {
"inherits": "^2.0.4",
"readable-stream": "^3.6.0",
@@ -11713,7 +11558,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -11723,8 +11567,7 @@
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
@@ -11737,7 +11580,6 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
@@ -11765,7 +11607,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
"integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
- "dev": true,
"requires": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
@@ -12104,8 +11945,7 @@
"https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
- "dev": true
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
},
"https-proxy-agent": {
"version": "5.0.1",
@@ -12151,14 +11991,12 @@
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"iferr": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
- "dev": true
+ "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA=="
},
"ignore": {
"version": "4.0.6",
@@ -12463,7 +12301,6 @@
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -12472,7 +12309,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -12508,7 +12344,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
+ "devOptional": true,
"requires": {
"binary-extensions": "^2.0.0"
}
@@ -12569,7 +12405,6 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -12578,7 +12413,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -12598,7 +12432,6 @@
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
"requires": {
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
@@ -12608,8 +12441,7 @@
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},
@@ -12628,14 +12460,13 @@
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
+ "devOptional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
@@ -12655,7 +12486,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
+ "devOptional": true,
"requires": {
"is-extglob": "^2.1.1"
}
@@ -12695,7 +12526,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -12704,7 +12534,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -12869,14 +12698,12 @@
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
},
"is-wsl": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
- "dev": true
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw=="
},
"is-yarn-global": {
"version": "0.3.0",
@@ -12902,8 +12729,7 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
},
"isstream": {
"version": "0.1.2",
@@ -13968,7 +13794,8 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
"integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"jest-regex-util": {
"version": "24.9.0",
@@ -15013,8 +14840,7 @@
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
},
"json-parse-even-better-errors": {
"version": "2.3.1",
@@ -15105,8 +14931,7 @@
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
},
"kleur": {
"version": "3.0.3",
@@ -15399,8 +15224,7 @@
"loader-runner": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
- "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
- "dev": true
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw=="
},
"loader-utils": {
"version": "2.0.2",
@@ -15667,14 +15491,12 @@
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg=="
},
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
"integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
"requires": {
"object-visit": "^1.0.0"
}
@@ -15693,7 +15515,6 @@
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1",
@@ -15721,7 +15542,6 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
"integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
- "dev": true,
"requires": {
"errno": "^0.1.3",
"readable-stream": "^2.0.1"
@@ -15770,7 +15590,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@@ -15791,7 +15610,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
"requires": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
@@ -15800,8 +15618,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -15921,14 +15738,12 @@
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
- "dev": true
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
},
"minimatch": {
"version": "3.1.2",
@@ -16016,7 +15831,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
"integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
- "dev": true,
"requires": {
"concat-stream": "^1.5.0",
"duplexify": "^3.4.2",
@@ -16039,7 +15853,6 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
"integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
"requires": {
"for-in": "^1.0.2",
"is-extendable": "^1.0.1"
@@ -16049,7 +15862,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
@@ -16058,7 +15870,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
"requires": {
"isobject": "^3.0.1"
}
@@ -16094,7 +15905,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
"integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
- "dev": true,
"requires": {
"aproba": "^1.1.1",
"copy-concurrently": "^1.0.0",
@@ -16108,7 +15918,6 @@
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
"requires": {
"minimist": "^1.2.6"
}
@@ -16117,7 +15926,6 @@
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
"requires": {
"glob": "^7.1.3"
}
@@ -16171,7 +15979,6 @@
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz",
"integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==",
- "dev": true,
"optional": true
},
"nanoid": {
@@ -16183,7 +15990,6 @@
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@@ -16259,8 +16065,7 @@
"neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
"nested-error-stacks": {
"version": "2.0.1",
@@ -16390,7 +16195,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
"integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
- "dev": true,
"requires": {
"assert": "^1.1.1",
"browserify-zlib": "^0.2.0",
@@ -16421,7 +16225,6 @@
"version": "4.9.2",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
"integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
- "dev": true,
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4",
@@ -16431,8 +16234,7 @@
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
}
}
},
@@ -16522,7 +16324,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
+ "devOptional": true
},
"normalize-range": {
"version": "0.1.2",
@@ -16703,7 +16505,6 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
"integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
"requires": {
"copy-descriptor": "^0.1.0",
"define-property": "^0.2.5",
@@ -16714,7 +16515,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -16723,7 +16523,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -16768,7 +16567,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
"integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
"requires": {
"isobject": "^3.0.0"
}
@@ -16801,7 +16599,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
"integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
"requires": {
"isobject": "^3.0.1"
}
@@ -16977,8 +16774,7 @@
"os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
- "dev": true
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
},
"os-tmpdir": {
"version": "1.0.2",
@@ -17121,14 +16917,12 @@
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"parallel-transform": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
"integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
- "dev": true,
"requires": {
"cyclist": "^1.0.1",
"inherits": "^2.0.3",
@@ -17157,7 +16951,6 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
"integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dev": true,
"requires": {
"asn1.js": "^5.2.0",
"browserify-aes": "^1.0.0",
@@ -17227,20 +17020,18 @@
"pascalcase": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw=="
},
"path-browserify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
- "dev": true
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ=="
},
"path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
+ "devOptional": true
},
"path-exists": {
"version": "4.0.0",
@@ -17288,7 +17079,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
"integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
- "dev": true,
"requires": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
@@ -17317,7 +17107,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
+ "devOptional": true
},
"pid-from-port": {
"version": "1.1.3",
@@ -17418,7 +17208,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
"integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
"requires": {
"find-up": "^3.0.0"
},
@@ -17427,7 +17216,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
"requires": {
"locate-path": "^3.0.0"
}
@@ -17436,7 +17224,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -17446,7 +17233,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
"requires": {
"p-limit": "^2.0.0"
}
@@ -17454,8 +17240,7 @@
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
}
}
},
@@ -17508,8 +17293,7 @@
"posix-character-classes": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg=="
},
"postcss": {
"version": "7.0.39",
@@ -18217,8 +18001,7 @@
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "dev": true
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
},
"process-exists": {
"version": "3.1.0",
@@ -18281,8 +18064,7 @@
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "dev": true
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="
},
"ps-list": {
"version": "4.1.0",
@@ -18309,7 +18091,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "dev": true,
"requires": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
@@ -18322,8 +18103,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -18340,7 +18120,6 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
"integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
"requires": {
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
@@ -18351,7 +18130,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -18402,14 +18180,12 @@
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
- "dev": true
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g=="
},
"querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
- "dev": true
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA=="
},
"querystringify": {
"version": "2.2.0",
@@ -18427,7 +18203,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
"requires": {
"safe-buffer": "^5.1.0"
}
@@ -18436,7 +18211,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
"requires": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
@@ -19030,7 +18804,7 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
+ "devOptional": true,
"requires": {
"picomatch": "^2.2.1"
}
@@ -19089,7 +18863,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
"requires": {
"extend-shallow": "^3.0.2",
"safe-regex": "^1.1.0"
@@ -19175,7 +18948,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
- "dev": true
+ "devOptional": true
},
"renderkid": {
"version": "2.0.7",
@@ -19251,14 +19024,12 @@
"repeat-element": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ=="
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w=="
},
"request": {
"version": "2.88.2",
@@ -19371,8 +19142,7 @@
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "dev": true
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg=="
},
"responselike": {
"version": "1.0.2",
@@ -19395,8 +19165,7 @@
"ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
"retry": {
"version": "0.12.0",
@@ -19433,7 +19202,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
@@ -19474,7 +19242,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
"integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
- "dev": true,
"requires": {
"aproba": "^1.1.1"
}
@@ -19497,7 +19264,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
"requires": {
"ret": "~0.1.10"
}
@@ -19793,7 +19559,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
"requires": {
"randombytes": "^2.1.0"
}
@@ -19875,7 +19640,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
"integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
@@ -19887,7 +19651,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -19896,7 +19659,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
"requires": {
"isobject": "^3.0.1"
}
@@ -19906,8 +19668,7 @@
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
"setprototypeof": {
"version": "1.2.0",
@@ -19919,7 +19680,6 @@
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
@@ -20090,7 +19850,6 @@
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
"requires": {
"base": "^0.11.1",
"debug": "^2.2.0",
@@ -20106,7 +19865,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -20115,7 +19873,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -20124,7 +19881,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -20132,14 +19888,12 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
}
}
},
@@ -20147,7 +19901,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
"integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
"requires": {
"define-property": "^1.0.0",
"isobject": "^3.0.0",
@@ -20158,7 +19911,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@@ -20167,7 +19919,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -20176,7 +19927,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -20185,7 +19935,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -20198,7 +19947,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
"integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
"requires": {
"kind-of": "^3.2.0"
},
@@ -20207,7 +19955,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -20318,7 +20065,6 @@
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
"integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
"requires": {
"atob": "^2.1.2",
"decode-uri-component": "^0.2.0",
@@ -20331,7 +20077,6 @@
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -20340,8 +20085,7 @@
"source-map-url": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
},
"sourcemap-codec": {
"version": "1.4.8",
@@ -20429,7 +20173,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
"integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
"requires": {
"extend-shallow": "^3.0.0"
}
@@ -20505,7 +20248,6 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
"integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dev": true,
"requires": {
"define-property": "^0.2.5",
"object-copy": "^0.1.0"
@@ -20515,7 +20257,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -20547,7 +20288,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
"integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
- "dev": true,
"requires": {
"inherits": "~2.0.1",
"readable-stream": "^2.0.2"
@@ -20557,7 +20297,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
"integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
- "dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"stream-shift": "^1.0.0"
@@ -20567,7 +20306,6 @@
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
"integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "dev": true,
"requires": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.1",
@@ -20579,8 +20317,7 @@
"stream-shift": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
},
"streamsearch": {
"version": "0.1.2",
@@ -20594,6 +20331,14 @@
"integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
"dev": true
},
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"string-convert": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
@@ -20658,14 +20403,6 @@
"es-abstract": "^1.19.5"
}
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -20939,8 +20676,7 @@
"tapable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
- "dev": true
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
},
"tar": {
"version": "6.1.11",
@@ -21125,7 +20861,6 @@
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
"integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
- "dev": true,
"requires": {
"commander": "^2.20.0",
"source-map": "~0.6.1",
@@ -21135,8 +20870,7 @@
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
}
}
},
@@ -21144,7 +20878,6 @@
"version": "1.4.5",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
"integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
- "dev": true,
"requires": {
"cacache": "^12.0.2",
"find-cache-dir": "^2.1.0",
@@ -21161,7 +20894,6 @@
"version": "12.0.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
"integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
- "dev": true,
"requires": {
"bluebird": "^3.5.5",
"chownr": "^1.1.1",
@@ -21183,14 +20915,12 @@
"chownr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"requires": {
"yallist": "^3.0.2"
}
@@ -21199,7 +20929,6 @@
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
"requires": {
"minimist": "^1.2.6"
}
@@ -21208,7 +20937,6 @@
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
"requires": {
"glob": "^7.1.3"
}
@@ -21217,7 +20945,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
"requires": {
"ajv": "^6.1.0",
"ajv-errors": "^1.0.0",
@@ -21228,7 +20955,6 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
"integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
- "dev": true,
"requires": {
"figgy-pudding": "^3.5.1"
}
@@ -21237,7 +20963,6 @@
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
"integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
- "dev": true,
"requires": {
"source-list-map": "^2.0.0",
"source-map": "~0.6.1"
@@ -21246,14 +20971,12 @@
"y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}
}
},
@@ -21342,7 +21065,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
"requires": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
@@ -21364,7 +21086,6 @@
"version": "2.0.12",
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
"integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
- "dev": true,
"requires": {
"setimmediate": "^1.0.4"
}
@@ -21398,8 +21119,7 @@
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
- "dev": true
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
},
"to-buffer": {
"version": "1.1.1",
@@ -21417,7 +21137,6 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
"integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -21426,7 +21145,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -21442,7 +21160,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
"requires": {
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
@@ -21454,7 +21171,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
"integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
@@ -21616,8 +21332,7 @@
"tty-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
- "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
- "dev": true
+ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw=="
},
"tunnel-agent": {
"version": "0.6.0",
@@ -21659,8 +21374,7 @@
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
},
"typedarray-to-buffer": {
"version": "3.1.5",
@@ -21877,7 +21591,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
"integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
"requires": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
@@ -21943,7 +21656,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
"integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
"requires": {
"has-value": "^0.3.1",
"isobject": "^3.0.0"
@@ -21953,7 +21665,6 @@
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
"integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
"requires": {
"get-value": "^2.0.3",
"has-values": "^0.1.4",
@@ -21964,7 +21675,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
"requires": {
"isarray": "1.0.0"
}
@@ -21974,8 +21684,7 @@
"has-values": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ=="
}
}
},
@@ -21983,7 +21692,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
+ "devOptional": true
},
"update-browserslist-db": {
"version": "1.0.4",
@@ -22051,14 +21760,12 @@
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "dev": true
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg=="
},
"url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
"integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
- "dev": true,
"requires": {
"punycode": "1.3.2",
"querystring": "0.2.0"
@@ -22067,8 +21774,7 @@
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
- "dev": true
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
}
}
},
@@ -22138,14 +21844,12 @@
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
},
"util": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
"integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
- "dev": true,
"requires": {
"inherits": "2.0.3"
},
@@ -22153,8 +21857,7 @@
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
}
}
},
@@ -22249,8 +21952,7 @@
"vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
- "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
- "dev": true
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
},
"vue": {
"version": "3.2.37",
@@ -22267,7 +21969,8 @@
"vue-chartjs": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-4.1.2.tgz",
- "integrity": "sha512-QSggYjeFv/L4jFSBQpX8NzrAvX0B+Ha6nDgxkTG8tEXxYOOTwKI4phRLe+B4f+REnkmg7hgPY24R0cixZJyXBg=="
+ "integrity": "sha512-QSggYjeFv/L4jFSBQpX8NzrAvX0B+Ha6nDgxkTG8tEXxYOOTwKI4phRLe+B4f+REnkmg7hgPY24R0cixZJyXBg==",
+ "requires": {}
},
"vue-clipboard2": {
"version": "0.3.3",
@@ -22703,7 +22406,8 @@
"vue-web-storage": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/vue-web-storage/-/vue-web-storage-6.1.0.tgz",
- "integrity": "sha512-Qsa6QkUyGP+Tj0oxLRc6vEATv6axY89LbwfX8eaMM3i7K/Nl9m0NTELtNp0s8Xhg9F0SkeEP4NC3+LQL3ygMQw=="
+ "integrity": "sha512-Qsa6QkUyGP+Tj0oxLRc6vEATv6axY89LbwfX8eaMM3i7K/Nl9m0NTELtNp0s8Xhg9F0SkeEP4NC3+LQL3ygMQw==",
+ "requires": {}
},
"vue3-clipboard": {
"version": "1.0.0",
@@ -22788,7 +22492,6 @@
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
"integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
- "dev": true,
"requires": {
"chokidar": "^3.4.1",
"graceful-fs": "^4.1.2",
@@ -22800,7 +22503,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
"integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
- "dev": true,
"optional": true,
"requires": {
"chokidar": "^2.1.8"
@@ -22810,7 +22512,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
"optional": true,
"requires": {
"micromatch": "^3.1.4",
@@ -22821,7 +22522,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
- "dev": true,
"optional": true,
"requires": {
"remove-trailing-separator": "^1.0.1"
@@ -22833,14 +22533,12 @@
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true,
"optional": true
},
"chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
"optional": true,
"requires": {
"anymatch": "^2.0.0",
@@ -22861,7 +22559,6 @@
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "dev": true,
"optional": true,
"requires": {
"bindings": "^1.5.0",
@@ -22872,7 +22569,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
"integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
- "dev": true,
"optional": true,
"requires": {
"binary-extensions": "^1.0.0"
@@ -22882,7 +22578,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.11",
@@ -22920,7 +22615,6 @@
"version": "4.46.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
"integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
- "dev": true,
"requires": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-module-context": "1.9.0",
@@ -22951,7 +22645,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
"requires": {
"minimist": "^1.2.0"
}
@@ -22960,7 +22653,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
- "dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -22971,7 +22663,6 @@
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
"requires": {
"minimist": "^1.2.6"
}
@@ -22980,7 +22671,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
"requires": {
"ajv": "^6.1.0",
"ajv-errors": "^1.0.0",
@@ -22991,7 +22681,6 @@
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
"integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
- "dev": true,
"requires": {
"source-list-map": "^2.0.0",
"source-map": "~0.6.1"
@@ -23682,7 +23371,6 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
"integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
- "dev": true,
"requires": {
"errno": "~0.1.7"
}
@@ -23772,7 +23460,8 @@
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz",
"integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"xdg-basedir": {
"version": "4.0.0",
@@ -23828,8 +23517,7 @@
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n": {
"version": "5.0.8",
diff --git a/ui/package.json b/ui/package.json
index 4658b44ffda..04303753993 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -34,13 +34,13 @@
"test:unit": "vue-cli-service test:unit"
},
"dependencies": {
- "@fortawesome/fontawesome-svg-core": "^1.3.0",
- "@fortawesome/free-brands-svg-icons": "^5.15.2",
- "@fortawesome/free-solid-svg-icons": "^5.15.2",
- "@fortawesome/vue-fontawesome": "^3.0.0-4",
+ "@fortawesome/fontawesome-svg-core": "^6.4.2",
+ "@fortawesome/free-brands-svg-icons": "^6.4.2",
+ "@fortawesome/free-solid-svg-icons": "^6.4.2",
+ "@fortawesome/vue-fontawesome": "^3.0.3",
"@vue-js-cron/ant": "^1.1.3",
"@vue-js-cron/core": "^3.7.1",
- "ant-design-vue": "^3.2.9",
+ "ant-design-vue": "^3.2.20",
"antd": "^4.21.4",
"antd-theme-webpack-plugin": "^1.3.9",
"axios": "^0.21.1",
diff --git a/ui/public/config.json b/ui/public/config.json
index 82d7c9adff2..ed64b15423b 100644
--- a/ui/public/config.json
+++ b/ui/public/config.json
@@ -59,6 +59,36 @@
"jp": "label.japanese.keyboard",
"sc": "label.simplified.chinese.keyboard"
},
+ "userCard": {
+ "title": "label.help",
+ "icon": "question-circle-outlined",
+ "links": [
+ {
+ "title": "Documentation",
+ "text": "CloudStack documentation website",
+ "link": "https://docs.cloudstack.apache.org/en/latest/",
+ "icon": "read-outlined"
+ },
+ {
+ "title": "API Documentation",
+ "text": "Refer to API documentation",
+ "link": "https://cloudstack.apache.org/api.html",
+ "icon": "api-outlined"
+ },
+ {
+ "title": "Email Support",
+ "text": "Join CloudStack users mailing list to seek and provide support",
+ "link": "mailto:users-subscribe@cloudstack.apache.org",
+ "icon": "mail-outlined"
+ },
+ {
+ "title": "Report Issue",
+ "text": "Submit a bug or improvement request",
+ "link": "https://github.com/apache/cloudstack/issues/new",
+ "icon": "bug-outlined"
+ }
+ ]
+ },
"plugins": [],
"basicZoneEnabled": true,
"multipleServer": false,
diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 3890dc767a4..8a5777d8a1c 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -538,6 +538,7 @@
"label.cpuused": "CPU utilized",
"label.cpuusedghz": "CPU used",
"label.create": "Create",
+"label.create.instance": "Create cloud server",
"label.create.account": "Create account",
"label.create.backup": "Start backup",
"label.create.network": "Create new network",
@@ -2193,6 +2194,7 @@
"label.volumetotal": "Volume",
"label.volumetype": "Volume Type",
"label.vpc": "VPC",
+"label.vpcs": "VPCs",
"label.vpc.id": "VPC ID",
"label.vpc.offerings": "VPC offerings",
"label.vpc.virtual.router": "VPC virtual router",
diff --git a/ui/src/assets/icons/debian.svg b/ui/src/assets/icons/debian.svg
deleted file mode 100644
index 06df6bc8f07..00000000000
--- a/ui/src/assets/icons/debian.svg
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ns4="http://ns.adobe.com/SaveForWeb/1.0/"
- xmlns:ns3="http://ns.adobe.com/Variables/1.0/"
- xmlns:ns2="http://ns.adobe.com/AdobeIllustrator/10.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- ns2:viewOrigin="262 450"
- ns2:rulerOrigin="0 0"
- ns2:pageBounds="0 792 612 0"
- viewBox="0 0 55.999999 56.000069"
- overflow="visible"
- enable-background="new 0 0 87.041 108.445"
- xml:space="preserve"
- version="1.1"
- id="svg31"
- sodipodi:docname="debian.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
- style="overflow:visible"><defs
- id="defs35" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1866"
- inkscape:window-height="1017"
- id="namedview33"
- showgrid="false"
- inkscape:zoom="2.1762184"
- inkscape:cx="-62.475298"
- inkscape:cy="28.002047"
- inkscape:window-x="54"
- inkscape:window-y="26"
- inkscape:window-maximized="1"
- inkscape:current-layer="g28"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <metadata
- id="metadata2">
- <ns3:variableSets>
- <ns3:variableSet
- varSetName="binding1"
- locked="none">
- <ns3:variables />
- <ns3:sampleDataSets />
- </ns3:variableSet>
- </ns3:variableSets>
- <ns4:sfw>
- <ns4:slices />
- <ns4:sliceSourceBounds
- y="341.555"
- x="262"
- width="87.041"
- height="108.445"
- bottomLeftOrigin="true" />
- </ns4:sfw>
- <rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata>
- <g
- id="Layer_1"
- ns2:layer="yes"
- ns2:dimmedPercent="50"
- ns2:rgbTrio="#4F008000FFFF"
- transform="translate(-20.985947,-26.22447)">
- <g
- id="g28">
- <path
- ns2:knockout="Off"
- d="m 53.872479,55.811055 c -0.927921,0.01291 0.175567,0.478161 1.386977,0.664571 0.334609,-0.261284 0.638236,-0.525667 0.908815,-0.78282 -0.75442,0.184861 -1.522266,0.188992 -2.295792,0.118249"
- id="path4"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 58.852891,54.569696 c 0.552518,-0.762682 0.955289,-1.597656 1.097291,-2.461031 -0.123929,0.615516 -0.458022,1.146863 -0.772493,1.707644 -1.734495,1.092127 -0.163174,-0.648564 -10e-4,-1.310037 -1.865137,2.347429 -0.256121,1.407631 -0.323766,2.063424"
- id="path6"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 60.691176,49.786022 c 0.112053,-1.670981 -0.328929,-1.142732 -0.477128,-0.505012 0.172985,0.08985 0.309824,1.177846 0.477128,0.505012"
- id="path8"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 50.353918,26.946873 c 0.495201,0.08882 1.069924,0.156977 0.98937,0.275226 0.541674,-0.118765 0.664571,-0.228236 -0.98937,-0.275226"
- id="path10"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 51.343288,27.222099 -0.350101,0.07229 0.325831,-0.02892 0.02427,-0.04338"
- id="path12"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 66.784887,50.419611 c 0.05525,1.500578 -0.438917,2.228663 -0.884546,3.517529 l -0.801926,0.400705 c -0.65631,1.274407 0.06351,0.809155 -0.406386,1.822794 -1.024482,0.910881 -3.109077,2.850376 -3.776231,3.027491 -0.486939,-0.01085 0.329962,-0.574722 0.436851,-0.79573 -1.371485,0.941864 -1.100389,1.413828 -3.197894,1.985969 l -0.06145,-0.136323 c -5.173018,2.433663 -12.358856,-2.389255 -12.26436,-8.969904 -0.05525,0.417745 -0.156977,0.313438 -0.271612,0.482292 -0.266964,-3.385854 1 [...]
- id="path14"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 43.744352,57.084946 -0.130126,0.650629 c 0.609836,0.828261 1.093677,1.725716 1.872366,2.373247 -0.560264,-1.093677 -0.97646,-1.545502 -1.74224,-3.023876"
- id="path16"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 45.186064,57.028145 c -0.322733,-0.356814 -0.513791,-0.786435 -0.727569,-1.214508 0.204483,0.752354 0.623261,1.398853 1.013123,2.056195 l -0.285554,-0.841687"
- id="path18"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 70.696924,51.483338 -0.136323,0.341839 c -0.249924,1.775288 -0.789533,3.531987 -1.616762,5.160625 0.91398,-1.718487 1.505226,-3.598082 1.753085,-5.502464"
- id="path20"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 50.53723,26.50176 c 0.627393,-0.229786 1.542405,-0.125995 2.208009,-0.277292 -0.867506,0.07281 -1.730881,0.116184 -2.583411,0.226171 l 0.375402,0.05112"
- id="path22"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 28.511368,38.214118 c 0.144584,1.338437 -1.006926,1.857908 0.255088,0.975427 0.676447,-1.523815 -0.264383,-0.420843 -0.255088,-0.975427"
- id="path24"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- <path
- ns2:knockout="Off"
- d="m 27.028346,44.408521 c 0.290718,-0.892292 0.343388,-1.428286 0.454408,-1.944659 -0.803476,1.027065 -0.369723,1.246007 -0.454408,1.944659"
- id="path26"
- style="fill:#000000;fill-opacity:1;stroke-width:0.51637238"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/ui/src/assets/icons/kubernetes.svg b/ui/src/assets/icons/kubernetes.svg
deleted file mode 100644
index 39d37800ed2..00000000000
--- a/ui/src/assets/icons/kubernetes.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xml:space="preserve"
- width="160"
- height="160"
- version="1.1"
- style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
- viewBox="0 0 1666.6667 1666.8369"
- id="svg38"
- sodipodi:docname="kubernetes.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
- id="metadata42"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1673"
- inkscape:window-height="931"
- id="namedview40"
- showgrid="false"
- units="px"
- inkscape:zoom="1.11"
- inkscape:cx="-5.8558558"
- inkscape:cy="95.225335"
- inkscape:window-x="54"
- inkscape:window-y="26"
- inkscape:window-maximized="0"
- inkscape:current-layer="layer1" />
- <defs
- id="defs4">
- </defs>
-
-<g
- class="custom-icon"
- transform="matrix(10.417731,0,0,10.417731,-3348.2599,-4287.0516)"
- id="layer1"
- inkscape:label="Layer 1"><path
- inkscape:connector-curvature="0"
- id="path3059"
- d="m 402.68583,413.59883 c -2.48732,2.5e-4 -4.50412,2.24066 -4.50385,5.00427 4e-5,0.0425 0.01,0.0829 0.01,0.12498 -0.003,0.37553 -0.0216,0.82791 -0.01,1.15483 0.0593,1.59399 0.40679,2.81394 0.61591,4.28251 0.37888,3.14319 0.69635,5.7487 0.50043,8.17042 -0.19062,0.91322 -0.86313,1.74839 -1.46279,2.32891 l -0.10592,1.90548 c -2.70285,0.22389 -5.42381,0.63402 -8.14156,1.25107 -11.69445,2.65524 -21.7632,8.67911 -29.42894,16.81242 -0.49741,-0.33935 -1.36762,-0.96365 -1.6264,-1.15482 -0.8 [...]
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill-opacity:1;stroke:#ffffff;stroke-width:0.07698 [...]
- sodipodi:nodetypes="ccccccccsccccscssccsccccccccscccsccccccccccccccscccscsccsccccscscsccccccccscccscsccccsccccscscscccccccccccccccscccsccccccccccccscccccscccccccccccccccccccccccscccscccccccccscccscccc"
- inkscape:export-filename="./path3059.png"
- inkscape:export-xdpi="250.55"
- inkscape:export-ydpi="250.55" /></g></svg>
diff --git a/ui/src/components/header/CreateMenu.vue b/ui/src/components/header/CreateMenu.vue
new file mode 100644
index 00000000000..a477c98b1a1
--- /dev/null
+++ b/ui/src/components/header/CreateMenu.vue
@@ -0,0 +1,152 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+<template>
+ <a-dropdown>
+ <template #overlay>
+ <a-menu>
+ <a-menu-item style="width: 100%; padding: 12px">
+ <router-link :to="{ path: '/action/deployVirtualMachine'}">
+ <a-row>
+ <a-col style="margin-right: 12px">
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <cloud-server-outlined/>
+ </template>
+ </a-avatar>
+ </a-col>
+ <a-col>
+ <h3 style="margin-bottom: 0px;">
+ {{ $t('label.instance') }}
+ </h3>
+ <small>{{ $t('label.create.instance') }}</small>
+ </a-col>
+ </a-row>
+ </router-link>
+ </a-menu-item>
+ <a-menu-item style="width: 100%; padding: 12px" v-if="'listKubernetesClusters' in $store.getters.apis">
+ <router-link :to="{ path: '/kubernetes', query: { action: 'createKubernetesCluster' } }">
+ <a-row>
+ <a-col style="margin-right: 12px">
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <font-awesome-icon :icon="['fa-solid', 'fa-dharmachakra']" />
+ </template>
+ </a-avatar>
+ </a-col>
+ <a-col>
+ <h3 style="margin-bottom: 0px;">
+ {{ $t('label.kubernetes') }}
+ </h3>
+ <small>{{ $t('label.kubernetes.cluster.create') }}</small>
+ </a-col>
+ </a-row>
+ </router-link>
+ </a-menu-item>
+ <a-menu-item style="width: 100%; padding: 12px">
+ <router-link :to="{ path: '/volume', query: { action: 'createVolume' } }">
+ <a-row>
+ <a-col style="margin-right: 12px">
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <hdd-outlined />
+ </template>
+ </a-avatar>
+ </a-col>
+ <a-col>
+ <h3 style="margin-bottom: 0px;">
+ {{ $t('label.volume') }}
+ </h3>
+ <small>{{ $t('label.action.create.volume') }}</small>
+ </a-col>
+ </a-row>
+ </router-link>
+ </a-menu-item>
+ <a-menu-item style="width: 100%; padding: 12px">
+ <router-link :to="{ path: '/guestnetwork', query: { action: 'createNetwork' } }">
+ <a-row>
+ <a-col style="margin-right: 12px">
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <apartment-outlined />
+ </template>
+ </a-avatar>
+ </a-col>
+ <a-col>
+ <h3 style="margin-bottom: 0px;">
+ {{ $t('label.network') }}
+ </h3>
+ <small>{{ $t('label.add.network') }}</small>
+ </a-col>
+ </a-row>
+ </router-link>
+ </a-menu-item>
+ <a-menu-item style="width: 100%; padding: 12px">
+ <router-link :to="{ path: '/vpc', query: { action: 'createVPC' } }">
+ <a-row>
+ <a-col style="margin-right: 12px">
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <deployment-unit-outlined />
+ </template>
+ </a-avatar>
+ </a-col>
+ <a-col>
+ <h3 style="margin-bottom: 0px;">
+ {{ $t('label.vpc') }}
+ </h3>
+ <small>{{ $t('label.add.vpc') }}</small>
+ </a-col>
+ </a-row>
+ </router-link>
+ </a-menu-item>
+ <a-menu-item style="width: 100%; padding: 12px">
+ <router-link :to="{ path: '/template', query: { action: 'registerTemplate' } }">
+ <a-row>
+ <a-col style="margin-right: 12px">
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <picture-outlined />
+ </template>
+ </a-avatar>
+ </a-col>
+ <a-col>
+ <h3 style="margin-bottom: 0px;">
+ {{ $t('label.templatename') }}
+ </h3>
+ <small>{{ $t('label.action.register.template') }}</small>
+ </a-col>
+ </a-row>
+ </router-link>
+ </a-menu-item>
+ </a-menu>
+ </template>
+ <a-button type="primary">
+ {{ $t('label.create') }}
+ <DownOutlined />
+ </a-button>
+ </a-dropdown>
+</template>
+
+<script>
+
+export default {
+ name: 'CreateMenu',
+ components: {
+ }
+}
+</script>
diff --git a/ui/src/components/header/ProjectMenu.vue b/ui/src/components/header/ProjectMenu.vue
index 9e8625f0024..e2f365344d9 100644
--- a/ui/src/components/header/ProjectMenu.vue
+++ b/ui/src/components/header/ProjectMenu.vue
@@ -81,7 +81,7 @@ export default {
const projects = []
const getNextPage = () => {
this.loading = true
- api('listProjects', { listAll: true, details: 'min', page: page, pageSize: 500, showIcon: true }).then(json => {
+ api('listProjects', { listAll: true, page: page, pageSize: 500, showIcon: true }).then(json => {
if (json?.listprojectsresponse?.project) {
projects.push(...json.listprojectsresponse.project)
}
@@ -130,7 +130,7 @@ export default {
<style lang="less" scoped>
.project {
&-select {
- width: 30vw;
+ width: 27vw;
}
&-icon {
diff --git a/ui/src/components/header/UserMenu.vue b/ui/src/components/header/UserMenu.vue
index dfa84c77b65..c1aa9d7baaa 100644
--- a/ui/src/components/header/UserMenu.vue
+++ b/ui/src/components/header/UserMenu.vue
@@ -17,6 +17,9 @@
<template>
<div class="user-menu">
+ <span class="action">
+ <create-menu v-if="device === 'desktop'" />
+ </span>
<external-link class="action"/>
<translation-menu class="action"/>
<header-notice class="action"/>
@@ -69,6 +72,7 @@
<script>
import { api } from '@/api'
+import CreateMenu from './CreateMenu'
import ExternalLink from './ExternalLink'
import HeaderNotice from './HeaderNotice'
import TranslationMenu from './TranslationMenu'
@@ -80,11 +84,19 @@ import { SERVER_MANAGER } from '@/store/mutation-types'
export default {
name: 'UserMenu',
components: {
+ CreateMenu,
ExternalLink,
TranslationMenu,
HeaderNotice,
ResourceIcon
},
+ props: {
+ device: {
+ type: String,
+ required: false,
+ default: 'desktop'
+ }
+ },
data () {
return {
image: '',
diff --git a/ui/src/components/menu/SMenu.vue b/ui/src/components/menu/SMenu.vue
index 2c828a86a84..67603b7b924 100644
--- a/ui/src/components/menu/SMenu.vue
+++ b/ui/src/components/menu/SMenu.vue
@@ -41,6 +41,11 @@
<render-icon
v-if="children.meta.icon && typeof (children.meta.icon) === 'string'"
:icon="children.meta.icon" />
+ <font-awesome-icon
+ v-else-if="children.meta.icon && Array.isArray(children.meta.icon)"
+ :icon="children.meta.icon"
+ class="anticon"
+ :style="[$store.getters.darkMode ? { color: 'rgba(255, 255, 255, 0.65)' } : { color: '#888' }]" />
<render-icon v-else :svgIcon="children.meta.icon" />
<span>{{ $t(children.meta.title) }}</span>
</router-link>
diff --git a/ui/src/components/page/GlobalHeader.vue b/ui/src/components/page/GlobalHeader.vue
index 59c9184abec..dd51278b483 100644
--- a/ui/src/components/page/GlobalHeader.vue
+++ b/ui/src/components/page/GlobalHeader.vue
@@ -18,7 +18,7 @@
<template>
<a-layout-header v-if="!headerBarFixed" :class="[fixedHeader && 'ant-header-fixedHeader', sidebarOpened ? 'ant-header-side-opened' : 'ant-header-side-closed', theme ]" :style="{ padding: '0' }">
<div v-if="mode === 'sidemenu'" class="header">
- <template v-if="device==='mobile'">
+ <template v-if="device === 'mobile'">
<menu-fold-outlined class="trigger" v-if="collapsed" @click="toggle" />
<menu-unfold-outlined class="trigger" v-else @click="toggle" />
</template>
@@ -28,7 +28,7 @@
</template>
<project-menu v-if="device !== 'mobile'" />
<saml-domain-switcher style="margin-left: 20px" />
- <user-menu></user-menu>
+ <user-menu :device="device"></user-menu>
</div>
<div v-else :class="['top-nav-header-index', theme]">
<div class="header-index-wide">
diff --git a/ui/src/components/page/GlobalLayout.vue b/ui/src/components/page/GlobalLayout.vue
index 7a26599a2ba..85ca9f2c8c1 100644
--- a/ui/src/components/page/GlobalLayout.vue
+++ b/ui/src/components/page/GlobalLayout.vue
@@ -279,6 +279,11 @@ export default {
&.dark {
.ant-drawer-content {
background-color: rgb(0, 21, 41);
+ max-width: 256px;
+ }
+
+ .ant-drawer-content-wrapper {
+ width: 256px !important;;
}
}
@@ -287,11 +292,16 @@ export default {
.ant-drawer-content {
background-color: #fff;
+ max-width: 256px;
+ }
+
+ .ant-drawer-content-wrapper {
+ width: 256px !important;
}
}
.ant-drawer-body {
- padding: 0
+ padding: 0;
}
}
diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue
index 90952b0ea42..69c40233d08 100644
--- a/ui/src/components/view/InfoCard.vue
+++ b/ui/src/components/view/InfoCard.vue
@@ -36,6 +36,12 @@
<span v-else>
<os-logo v-if="resource.ostypeid || resource.ostypename" :osId="resource.ostypeid" :osName="resource.ostypename" size="4x" @update-osname="setResourceOsType"/>
<render-icon v-else-if="typeof $route.meta.icon ==='string'" style="font-size: 36px" :icon="$route.meta.icon" />
+ <font-awesome-icon
+ v-else-if="$route.meta.icon && Array.isArray($route.meta.icon)"
+ :icon="$route.meta.icon"
+ size="4x"
+ class="anticon"
+ :style="[$store.getters.darkMode ? { color: 'rgba(255, 255, 255, 0.65)' } : { color: '#888' }]" />
<render-icon v-else style="font-size: 36px" :svgIcon="$route.meta.icon" />
</span>
</slot>
diff --git a/ui/src/components/view/ResourceView.vue b/ui/src/components/view/ResourceView.vue
index 8ff0dcb8f55..440b45e640a 100644
--- a/ui/src/components/view/ResourceView.vue
+++ b/ui/src/components/view/ResourceView.vue
@@ -37,7 +37,7 @@
</keep-alive>
<a-tabs
v-else
- style="width: 100%"
+ style="width: 100%; margin-top: -12px"
:animated="false"
:activeKey="activeTab || tabs[0].name"
@change="onTabChange" >
diff --git a/ui/src/components/widgets/ChartCard.vue b/ui/src/components/widgets/ChartCard.vue
index 8d5e413c9db..a41cd69a3f1 100644
--- a/ui/src/components/widgets/ChartCard.vue
+++ b/ui/src/components/widgets/ChartCard.vue
@@ -93,7 +93,6 @@ export default {
}
&-footer {
- border-top: 1px solid #e8e8e8;
padding-top: 9px;
margin-top: 8px;
}
diff --git a/ui/src/components/widgets/Drawer.vue b/ui/src/components/widgets/Drawer.vue
index 38636522dbd..0a1c535e5f8 100644
--- a/ui/src/components/widgets/Drawer.vue
+++ b/ui/src/components/widgets/Drawer.vue
@@ -134,7 +134,7 @@ export default {
text-align: center;
transition: all 0.5s;
cursor: pointer;
- top: calc(50% - 45px);
+ top: calc(100% - 45px);
z-index: 100;
&.left{
diff --git a/ui/src/components/widgets/OsLogo.vue b/ui/src/components/widgets/OsLogo.vue
index b15aba90c59..570cb40f3d5 100644
--- a/ui/src/components/widgets/OsLogo.vue
+++ b/ui/src/components/widgets/OsLogo.vue
@@ -24,29 +24,15 @@
:icon="['fab', logo]"
:size="size"
:style="[$store.getters.darkMode ? { color: 'rgba(255, 255, 255, 0.65)' } : { color: '#666' }]"
- v-if="logo !== 'debian'" />
- <debian-icon
- v-else-if="logo === 'debian'"
- :width="size === '4x' ? 56 : 16"
- :height="size === '4x' ? 56 : 16"
- :style="{
- height: size === '4x' ? '56px' : '16px',
- width: size === '4x' ? '56px' : '16px',
- marginBottom: '-4px',
- background: $store.getters.darkMode ? 'rgba(255, 255, 255, 0.65)' : ''
- }" />
+ />
</a-tooltip>
</template>
<script>
import { api } from '@/api'
-import DebianIcon from '@/assets/icons/debian.svg?inline'
export default {
name: 'OsLogo',
- components: {
- DebianIcon
- },
props: {
osId: {
type: String,
diff --git a/ui/src/config/router.js b/ui/src/config/router.js
index e7e8e642877..502a0246edf 100644
--- a/ui/src/config/router.js
+++ b/ui/src/config/router.js
@@ -20,7 +20,7 @@ import { UserLayout, BasicLayout, RouteView } from '@/layouts'
import AutogenView from '@/views/AutogenView.vue'
import IFramePlugin from '@/views/plugins/IFramePlugin.vue'
-import { shallowRef, defineAsyncComponent } from 'vue'
+import { shallowRef } from 'vue'
import { vueProps } from '@/vue-app'
import compute from '@/config/section/compute'
@@ -201,26 +201,7 @@ export function asyncRouterMap () {
name: 'dashboard',
meta: {
title: 'label.dashboard',
- icon: 'DashboardOutlined',
- tabs: [
- {
- name: 'dashboard',
- component: shallowRef(defineAsyncComponent(() => import('@/views/dashboard/UsageDashboardChart')))
- },
- {
- name: 'accounts',
- show: (record, route, user) => { return record.account === user.account || ['Admin', 'DomainAdmin'].includes(user.roletype) },
- component: shallowRef(defineAsyncComponent(() => import('@/views/project/AccountsTab')))
- },
- {
- name: 'limits',
- params: {
- projectid: 'id'
- },
- show: (record, route, user) => { return ['Admin'].includes(user.roletype) },
- component: shallowRef(defineAsyncComponent(() => import('@/components/view/ResourceLimitTab.vue')))
- }
- ]
+ icon: 'DashboardOutlined'
},
component: () => import('@/views/dashboard/Dashboard')
},
diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js
index 22ee2b007f5..e09fab34792 100644
--- a/ui/src/config/section/compute.js
+++ b/ui/src/config/section/compute.js
@@ -16,7 +16,6 @@
// under the License.
import { shallowRef, defineAsyncComponent } from 'vue'
-import kubernetes from '@/assets/icons/kubernetes.svg?inline'
import store from '@/store'
export default {
@@ -27,7 +26,7 @@ export default {
{
name: 'vm',
title: 'label.instances',
- icon: 'desktop-outlined',
+ icon: 'cloud-server-outlined',
docHelp: 'adminguide/virtual_machines.html',
permission: ['listVirtualMachinesMetrics'],
resourceType: 'UserVm',
@@ -456,7 +455,7 @@ export default {
{
name: 'kubernetes',
title: 'label.kubernetes',
- icon: shallowRef(kubernetes),
+ icon: ['fa-solid', 'fa-dharmachakra'],
docHelp: 'plugins/cloudstack-kubernetes-service.html',
permission: ['listKubernetesClusters'],
columns: (store) => {
@@ -557,7 +556,7 @@ export default {
{
name: 'autoscalevmgroup',
title: 'label.autoscale.vm.groups',
- icon: 'ordered-list-outlined',
+ icon: 'fullscreen-outlined',
docHelp: 'adminguide/autoscale_without_netscaler.html',
resourceType: 'AutoScaleVmGroup',
permission: ['listAutoScaleVmGroups'],
diff --git a/ui/src/config/section/image.js b/ui/src/config/section/image.js
index c1961fe216d..62409d78103 100644
--- a/ui/src/config/section/image.js
+++ b/ui/src/config/section/image.js
@@ -16,7 +16,6 @@
// under the License.
import { shallowRef, defineAsyncComponent } from 'vue'
-import kubernetes from '@/assets/icons/kubernetes.svg?inline'
import store from '@/store'
export default {
@@ -340,7 +339,7 @@ export default {
{
name: 'kubernetesiso',
title: 'label.kubernetes.isos',
- icon: shallowRef(kubernetes),
+ icon: ['fa-solid', 'fa-dharmachakra'],
docHelp: 'plugins/cloudstack-kubernetes-service.html#kubernetes-supported-versions',
permission: ['listKubernetesSupportedVersions'],
columns: ['name', 'state', 'semanticversion', 'isostate', 'mincpunumber', 'minmemory', 'zonename'],
diff --git a/ui/src/config/section/infra/hosts.js b/ui/src/config/section/infra/hosts.js
index 22a9afc79cd..af3ad1dbcb5 100644
--- a/ui/src/config/section/infra/hosts.js
+++ b/ui/src/config/section/infra/hosts.js
@@ -21,7 +21,7 @@ import store from '@/store'
export default {
name: 'host',
title: 'label.hosts',
- icon: 'desktop-outlined',
+ icon: 'database-outlined',
docHelp: 'conceptsandterminology/concepts.html#about-hosts',
permission: ['listHostsMetrics'],
resourceType: 'Host',
diff --git a/ui/src/config/section/infra/primaryStorages.js b/ui/src/config/section/infra/primaryStorages.js
index 4537b993a06..2e732a3344a 100644
--- a/ui/src/config/section/infra/primaryStorages.js
+++ b/ui/src/config/section/infra/primaryStorages.js
@@ -21,7 +21,7 @@ import store from '@/store'
export default {
name: 'storagepool',
title: 'label.primary.storage',
- icon: 'database-outlined',
+ icon: 'hdd-outlined',
docHelp: 'adminguide/storage.html#primary-storage',
permission: ['listStoragePoolsMetrics'],
columns: () => {
diff --git a/ui/src/config/section/storage.js b/ui/src/config/section/storage.js
index c19adc88916..228def0a763 100644
--- a/ui/src/config/section/storage.js
+++ b/ui/src/config/section/storage.js
@@ -21,7 +21,7 @@ import store from '@/store'
export default {
name: 'storage',
title: 'label.storage',
- icon: 'database-outlined',
+ icon: 'hdd-outlined',
children: [
{
name: 'volume',
diff --git a/ui/src/core/ext.js b/ui/src/core/ext.js
index 3cea5189583..f6cfb353b13 100644
--- a/ui/src/core/ext.js
+++ b/ui/src/core/ext.js
@@ -22,11 +22,11 @@ import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
// import { fas } from '@fortawesome/free-solid-svg-icons'
// import { far } from '@fortawesome/free-regular-svg-icons'
-import { faCentos, faUbuntu, faSuse, faRedhat, faFedora, faLinux, faFreebsd, faApple, faWindows, faJava } from '@fortawesome/free-brands-svg-icons'
-import { faCompactDisc, faCameraRetro } from '@fortawesome/free-solid-svg-icons'
+import { faCentos, faUbuntu, faDebian, faSuse, faRedhat, faFedora, faLinux, faFreebsd, faApple, faWindows, faJava } from '@fortawesome/free-brands-svg-icons'
+import { faCompactDisc, faCameraRetro, faDharmachakra } from '@fortawesome/free-solid-svg-icons'
-library.add(faCentos, faUbuntu, faSuse, faRedhat, faFedora, faLinux, faFreebsd, faApple, faWindows, faJava)
-library.add(faCompactDisc, faCameraRetro)
+library.add(faCentos, faUbuntu, faDebian, faSuse, faRedhat, faFedora, faLinux, faFreebsd, faApple, faWindows, faJava)
+library.add(faCompactDisc, faCameraRetro, faDharmachakra)
export default {
install: (app) => {
diff --git a/ui/src/core/lazy_lib/components_use.js b/ui/src/core/lazy_lib/components_use.js
index 1c2e8ee2cd8..98fc9e0c816 100644
--- a/ui/src/core/lazy_lib/components_use.js
+++ b/ui/src/core/lazy_lib/components_use.js
@@ -63,7 +63,8 @@ import {
Slider,
AutoComplete,
Collapse,
- Space
+ Space,
+ Statistic
} from 'ant-design-vue'
import VueClipboard from 'vue3-clipboard'
import VueCropper from 'vue-cropper'
@@ -131,5 +132,6 @@ export default {
app.use(Collapse)
app.use(Descriptions)
app.use(Space)
+ app.use(Statistic)
}
}
diff --git a/ui/src/style/dark-mode.less b/ui/src/style/dark-mode.less
index 5ff6d5dd403..608e147df12 100644
--- a/ui/src/style/dark-mode.less
+++ b/ui/src/style/dark-mode.less
@@ -36,7 +36,7 @@
.dark-mode {
background: @dark-bgColor;
- h1, h2, h3, h4, h5, h6 {
+ h1, h2, h3, h4, h5, h6, .ant-statistic-title, .ant-statistic-content {
color: @dark-text-color-3;
}
diff --git a/ui/src/style/vars.less b/ui/src/style/vars.less
index b80e2b0914e..fc6fdf75170 100644
--- a/ui/src/style/vars.less
+++ b/ui/src/style/vars.less
@@ -519,6 +519,11 @@ a {
padding: 16px;
}
+.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab {
+ padding: 8px 24px 8px 8px;
+ text-align: center;
+}
+
.ant-steps {
&-item-container {
&:hover {
diff --git a/ui/src/utils/device.js b/ui/src/utils/device.js
index ce6deab7b39..86c7b1e7d84 100644
--- a/ui/src/utils/device.js
+++ b/ui/src/utils/device.js
@@ -43,7 +43,7 @@ export const deviceEnquire = function (callback) {
}
enquireJs
- .register('screen and (max-width: 800px)', matchMobile)
- .register('screen and (min-width: 800px) and (max-width: 1366px)', matchTablet)
- .register('screen and (min-width: 1367px)', matchDesktop)
+ .register('screen and (max-width: 765px)', matchMobile)
+ .register('screen and (min-width: 766px) and (max-width: 1279px)', matchTablet)
+ .register('screen and (min-width: 1280px)', matchDesktop)
}
diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue
index fa33be8d1b0..8513c0341c9 100644
--- a/ui/src/views/AutogenView.vue
+++ b/ui/src/views/AutogenView.vue
@@ -393,8 +393,8 @@
</a-modal>
</div>
- <div :style="this.$store.getters.shutdownTriggered ? 'margin-top: 25px;' : null">
- <div v-if="dataView" style="margin-top: -10px">
+ <div :style="this.$store.getters.shutdownTriggered ? 'margin-top: 24px; margin-bottom: 12px' : null">
+ <div v-if="dataView">
<slot name="resource" v-if="$route.path.startsWith('/quotasummary') || $route.path.startsWith('/publicip')"></slot>
<resource-view
v-else
@@ -1059,6 +1059,19 @@ export default {
this.loading = false
this.searchParams = params
})
+
+ if ('action' in this.$route.query) {
+ const actionName = this.$route.query.action
+ for (const action of this.actions) {
+ if (action.listView && action.api === actionName) {
+ this.execAction(action, false)
+ const query = Object.assign({}, this.$route.query)
+ delete query.action
+ this.$router.replace({ query })
+ break
+ }
+ }
+ }
},
closeAction () {
this.actionLoading = false
diff --git a/ui/src/views/dashboard/CapacityDashboard.vue b/ui/src/views/dashboard/CapacityDashboard.vue
index 07227ad5687..b6fa854efb5 100644
--- a/ui/src/views/dashboard/CapacityDashboard.vue
+++ b/ui/src/views/dashboard/CapacityDashboard.vue
@@ -16,8 +16,8 @@
// under the License.
<template>
- <a-row class="capacity-dashboard" :gutter="12">
- <a-col :xl="18">
+ <a-row class="capacity-dashboard" :gutter="[12,12]">
+ <a-col :span="24">
<div class="capacity-dashboard-wrapper">
<div class="capacity-dashboard-select">
<a-select
@@ -41,91 +41,282 @@
<div class="capacity-dashboard-button">
<a-button
shape="round"
- @click="() => { listCapacity(zoneSelected, true); listEvents() }">
+ @click="() => { updateData(zoneSelected); listAlerts(); listEvents(); }">
+ <reload-outlined/>
{{ $t('label.fetch.latest') }}
</a-button>
</div>
</div>
- <a-row :gutter="12">
- <a-col
- :xs="12"
- :sm="8"
- :md="6"
- :style="{ marginBottom: '12px' }"
- v-for="stat in stats"
- :key="stat.type">
- <chart-card :loading="loading">
- <router-link :to="{ path: '/zone/' + zoneSelected.id }">
- <div class="capacity-dashboard-chart-card-inner">
- <h3>{{ $t(ts[stat.name]) }}</h3>
- <a-progress
- type="dashboard"
- :status="getStatus(parseFloat(stat.percentused))"
- :percent="parseFloat(stat.percentused)"
- :format="percent => `${parseFloat(stat.percentused).toFixed(2)}%`"
- :strokeColor="getStrokeColour(parseFloat(stat.percentused))"
- :width="100" />
- </div>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <router-link :to="{ path: '/infrasummary' }" v-if="!zoneSelected.id">
+ <h3>
+ <bank-outlined />
+ {{ $t('label.infrastructure') }}
+ </h3>
+ </router-link>
+ <router-link :to="{ path: '/zone/' + zoneSelected.id }" v-else>
+ <h3>
+ <global-outlined />
+ {{ $t('label.zone') }}
+ </h3>
+ </router-link>
+ </div>
+ </template>
+ <a-divider style="margin: 0px 0px; border-width: 0px"/>
+ <a-row :gutter="[12, 12]">
+ <a-col :span="12">
+ <router-link :to="{ path: '/pod', query: { zoneid: zoneSelected.id } }">
+ <a-statistic
+ :title="$t('label.pods')"
+ :value="data.pods"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <appstore-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/cluster', query: { zoneid: zoneSelected.id } }">
+ <a-statistic
+ :title="$t('label.clusters')"
+ :value="data.clusters"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <cluster-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/host', query: { zoneid: zoneSelected.id } }">
+ <a-statistic
+ :title="$t('label.hosts')"
+ :value="data.totalHosts"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <database-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/host', query: { zoneid: zoneSelected.id, state: 'alert' } }">
+ <a-statistic
+ :title="$t('label.host.alerts')"
+ :value="data.alertHosts"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <database-outlined/>
+ <status class="status" text="Alert" style="margin-left: -10px"/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/storagepool', query: { zoneid: zoneSelected.id } }">
+ <a-statistic
+ :title="$t('label.primary.storage')"
+ :value="data.pools"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <hdd-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/systemvm', query: { zoneid: zoneSelected.id } }">
+ <a-statistic
+ :title="$t('label.system.vms')"
+ :value="data.systemvms"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <thunderbolt-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/router', query: { zoneid: zoneSelected.id } }">
+ <a-statistic
+ :title="$t('label.virtual.routers')"
+ :value="data.routers"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <fork-outlined/>
+ </template>
+ </a-statistic>
</router-link>
- <template #footer>
- <div class="center">{{ displayData(stat.name, stat.capacityused) }} / {{ displayData(stat.name, stat.capacitytotal) }}</div>
- </template>
- </chart-card>
- </a-col>
- </a-row>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/vm', query: { zoneid: zoneSelected.id, projectid: '-1' } }">
+ <a-statistic
+ :title="$t('label.instances')"
+ :value="data.instances"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <cloud-server-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ </a-row>
+ </chart-card>
</a-col>
-
- <a-col :xl="6" class="dashboard-event">
- <chart-card :loading="loading">
- <div style="text-align: center">
- <a-tooltip placement="bottom" class="capacity-dashboard-button-wrapper">
- <template #title>
- {{ $t('label.view') + ' ' + $t('label.host.alerts') }}
- </template>
- <a-button type="primary" danger shape="circle">
- <router-link :to="{ name: 'host', query: {'state': 'Alert'} }">
- <desktop-outlined class="capacity-dashboard-button-icon" />
- </router-link>
- </a-button>
- </a-tooltip>
- <a-tooltip placement="bottom" class="capacity-dashboard-button-wrapper">
- <template #title>
- {{ $t('label.view') + ' ' + $t('label.alerts') }}
- </template>
- <a-button shape="circle">
- <router-link :to="{ name: 'alert' }">
- <flag-outlined class="capacity-dashboard-button-icon" />
- </router-link>
- </a-button>
- </a-tooltip>
- <a-tooltip placement="bottom" class="capacity-dashboard-button-wrapper">
- <template #title>
- {{ $t('label.view') + ' ' + $t('label.events') }}
- </template>
- <a-button shape="circle">
- <router-link :to="{ name: 'event' }">
- <schedule-outlined class="capacity-dashboard-button-icon" />
- </router-link>
- </a-button>
- </a-tooltip>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3><cloud-outlined /> {{ $t('label.compute') }}</h3>
+ </div>
+ </template>
+ <div>
+ <div v-for="ctype in ['MEMORY', 'CPU', 'CPU_CORE', 'GPU']" :key="ctype" >
+ <div v-if="statsMap[ctype]">
+ <div>
+ <strong>{{ $t(ts[ctype]) }}</strong>
+ </div>
+ <a-progress
+ status="active"
+ :percent="statsMap[ctype]?.capacitytotal > 0 ? parseFloat(100.0 * statsMap[ctype]?.capacityused / statsMap[ctype]?.capacitytotal).toFixed(2) : 0"
+ :format="p => statsMap[ctype]?.capacitytotal > 0 ? parseFloat(100.0 * statsMap[ctype]?.capacityused / statsMap[ctype]?.capacitytotal).toFixed(2) + '%' : '0%'"
+ stroke-color="#52c41a"
+ size="small"
+ style="width:95%; float: left"
+ />
+ <br/>
+ <div style="text-align: center">
+ {{ displayData(ctype, statsMap[ctype]?.capacityused) }} {{ $t('label.allocated') }} | {{ displayData(ctype, statsMap[ctype]?.capacitytotal) }} {{ $t('label.total') }}
+ </div>
+ </div>
+ </div>
+ </div>
+ </chart-card>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3><hdd-outlined /> {{ $t('label.storage') }}</h3>
+ </div>
+ </template>
+ <div>
+ <div v-for="ctype in ['STORAGE', 'STORAGE_ALLOCATED', 'LOCAL_STORAGE', 'SECONDARY_STORAGE']" :key="ctype" >
+ <div v-if="statsMap[ctype]">
+ <div>
+ <strong>{{ $t(ts[ctype]) }}</strong>
+ </div>
+ <a-progress
+ status="active"
+ :percent="statsMap[ctype]?.capacitytotal > 0 ? parseFloat(100.0 * statsMap[ctype]?.capacityused / statsMap[ctype]?.capacitytotal).toFixed(2) : 0"
+ :format="p => statsMap[ctype]?.capacitytotal > 0 ? parseFloat(100.0 * statsMap[ctype]?.capacityused / statsMap[ctype]?.capacitytotal).toFixed(2) + '%' : '0%'"
+ stroke-color="#52c41a"
+ size="small"
+ style="width:95%; float: left"
+ />
+ <br/>
+ <div style="text-align: center">
+ {{ displayData(ctype, statsMap[ctype]?.capacityused) }} <span v-if="ctype !== 'STORAGE'">{{ $t('label.allocated') }}</span><span v-else>{{ $t('label.used') }}</span> | {{ displayData(ctype, statsMap[ctype]?.capacitytotal) }} {{ $t('label.total') }}
+ </div>
+ </div>
+ </div>
</div>
- <template #footer>
- <div class="capacity-dashboard-footer">
- <a-timeline>
- <a-timeline-item
- v-for="event in events"
- :key="event.id"
- :color="getEventColour(event)">
- <span :style="{ color: '#999' }"><small>{{ $toLocaleDate(event.created) }}</small></span><br/>
- <span :style="{ color: '#666' }"><small><router-link :to="{ path: '/event/' + event.id }">{{ event.type }}</router-link></small></span><br/>
- <resource-label :resourceType="event.resourcetype" :resourceId="event.resourceid" :resourceName="event.resourcename" />
- <span :style="{ color: '#aaa' }">({{ event.username }}) {{ event.description }}</span>
- </a-timeline-item>
- </a-timeline>
+ </chart-card>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3><apartment-outlined /> {{ $t('label.network') }}</h3>
</div>
</template>
+ <div>
+ <div v-for="ctype in ['VLAN', 'VIRTUAL_NETWORK_PUBLIC_IP', 'VIRTUAL_NETWORK_IPV6_SUBNET', 'DIRECT_ATTACHED_PUBLIC_IP', 'PRIVATE_IP']" :key="ctype" >
+ <div v-if="statsMap[ctype]">
+ <div>
+ <strong>{{ $t(ts[ctype]) }}</strong>
+ </div>
+ <a-progress
+ status="active"
+ :percent="statsMap[ctype]?.capacitytotal > 0 ? parseFloat(100.0 * statsMap[ctype]?.capacityused / statsMap[ctype]?.capacitytotal).toFixed(2) : 0"
+ :format="p => statsMap[ctype]?.capacitytotal > 0 ? parseFloat(100.0 * statsMap[ctype]?.capacityused / statsMap[ctype]?.capacitytotal).toFixed(2) + '%' : '0%'"
+ stroke-color="#52c41a"
+ size="small"
+ style="width:95%; float: left"
+ />
+ <br/>
+ <div style="text-align: center">
+ {{ displayData(ctype, statsMap[ctype]?.capacityused) }} {{ $t('label.allocated') }} | {{ displayData(ctype, statsMap[ctype]?.capacitytotal) }} {{ $t('label.total') }}
+ </div>
+ </div>
+ </div>
+ </div>
</chart-card>
</a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <router-link :to="{ path: '/alert' }">
+ <a-card :loading="loading" :bordered="false" class="dashboard-card dashboard-event">
+ <div class="center" style="margin-top: -8px">
+ <h3>
+ <flag-outlined />
+ {{ $t('label.alerts') }}
+ </h3>
+ </div>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <a-timeline>
+ <a-timeline-item
+ v-for="alert in alerts"
+ :key="alert.id"
+ color="red">
+ <span :style="{ color: '#999' }"><small>{{ $toLocaleDate(alert.sent) }}</small></span>
+ <span :style="{ color: '#666' }"><small><router-link :to="{ path: '/alert/' + alert.id }">{{ alert.name }}</router-link></small></span><br/>
+ <span :style="{ color: '#aaa' }">{{ alert.description }}</span>
+ </a-timeline-item>
+ </a-timeline>
+ <router-link :to="{ path: '/alert' }">
+ <a-button>
+ {{ $t('label.view') }} {{ $t('label.alerts') }}
+ </a-button>
+ </router-link>
+ </a-card>
+ </router-link>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <router-link :to="{ path: '/event' }">
+ <a-card :loading="loading" :bordered="false" class="dashboard-card dashboard-event">
+ <div class="center" style="margin-top: -8px">
+ <h3>
+ <schedule-outlined />
+ {{ $t('label.events') }}
+ </h3>
+ </div>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <a-timeline>
+ <a-timeline-item
+ v-for="event in events"
+ :key="event.id"
+ :color="getEventColour(event)">
+ <span :style="{ color: '#999' }"><small>{{ $toLocaleDate(event.created) }}</small></span>
+ <span :style="{ color: '#666' }"><small><router-link :to="{ path: '/event/' + event.id }">{{ event.type }}</router-link></small></span><br/>
+ <span>
+ <resource-label :resourceType="event.resourcetype" :resourceId="event.resourceid" :resourceName="event.resourcename" />
+ </span>
+ <span :style="{ color: '#aaa' }">({{ event.username }}) {{ event.description }}</span>
+ </a-timeline-item>
+ </a-timeline>
+ <router-link :to="{ path: '/event' }">
+ <a-button>
+ {{ $t('label.view') }} {{ $t('label.events') }}
+ </a-button>
+ </router-link>
+ </a-card>
+ </router-link>
+ </a-col>
</a-row>
</template>
@@ -135,21 +326,35 @@ import { api } from '@/api'
import ChartCard from '@/components/widgets/ChartCard'
import ResourceIcon from '@/components/view/ResourceIcon'
import ResourceLabel from '@/components/widgets/ResourceLabel'
+import Status from '@/components/widgets/Status'
export default {
name: 'CapacityDashboard',
components: {
ChartCard,
ResourceIcon,
- ResourceLabel
+ ResourceLabel,
+ Status
},
data () {
return {
loading: true,
+ tabKey: 'alerts',
+ alerts: [],
events: [],
zones: [],
zoneSelected: {},
- stats: [],
+ statsMap: {},
+ data: {
+ pods: 0,
+ clusters: 0,
+ totalHosts: 0,
+ alertHosts: 0,
+ pools: 0,
+ instances: 0,
+ systemvms: 0,
+ routers: 0
+ },
ts: {
CPU: 'label.cpu',
CPU_CORE: 'label.cpunumber',
@@ -159,8 +364,8 @@ export default {
MEMORY: 'label.memory',
PRIVATE_IP: 'label.management.ips',
SECONDARY_STORAGE: 'label.secondary.storage',
- STORAGE: 'label.storage',
- STORAGE_ALLOCATED: 'label.primary.storage',
+ STORAGE: 'label.primary.storage.used',
+ STORAGE_ALLOCATED: 'label.primary.storage.allocated',
VIRTUAL_NETWORK_PUBLIC_IP: 'label.public.ips',
VLAN: 'label.vlan',
VIRTUAL_NETWORK_IPV6_SUBNET: 'label.ipv6.subnets'
@@ -196,13 +401,10 @@ export default {
}
return 'normal'
},
- getStrokeColour (value) {
- if (value >= 80) {
- return this.$config.theme['@graph-exception-color'] || 'red'
- }
- return this.$config.theme['@graph-normal-color'] || 'primary'
- },
displayData (dataType, value) {
+ if (!value) {
+ value = 0
+ }
switch (dataType) {
case 'CPU':
value = parseFloat(value / 1000.0, 10).toFixed(2) + ' GHz'
@@ -214,9 +416,9 @@ export default {
case 'LOCAL_STORAGE':
value = parseFloat(value / (1024 * 1024 * 1024.0), 10).toFixed(2)
if (value >= 1024.0) {
- value = parseFloat(value / 1024.0).toFixed(2) + ' TB'
+ value = parseFloat(value / 1024.0).toFixed(2) + ' TiB'
} else {
- value = value + ' GB'
+ value = value + ' GiB'
}
break
}
@@ -224,26 +426,134 @@ export default {
},
fetchData () {
this.listZones()
+ this.listAlerts()
this.listEvents()
},
- listCapacity (zone, latest = false) {
+ listCapacity (zone, latest = false, additive = false) {
+ this.loading = true
+ api('listCapacity', { zoneid: zone.id, fetchlatest: latest }).then(json => {
+ this.loading = false
+ let stats = []
+ if (json && json.listcapacityresponse && json.listcapacityresponse.capacity) {
+ stats = json.listcapacityresponse.capacity
+ }
+ for (const stat of stats) {
+ if (additive) {
+ for (const [key, value] of Object.entries(stat)) {
+ if (stat.name in this.statsMap) {
+ if (key in this.statsMap[stat.name]) {
+ this.statsMap[stat.name][key] += value
+ } else {
+ this.statsMap[stat.name][key] = value
+ }
+ } else {
+ this.statsMap[stat.name] = { key: value }
+ }
+ }
+ } else {
+ this.statsMap[stat.name] = stat
+ }
+ }
+ })
+ },
+ updateData (zone) {
+ if (!zone.id) {
+ this.statsMap = {}
+ for (const zone of this.zones.slice(1)) {
+ this.listCapacity(zone, true, true)
+ }
+ } else {
+ this.statsMap = {}
+ this.listCapacity(this.zoneSelected, true)
+ }
+
+ this.data = {
+ pods: 0,
+ clusters: 0,
+ totalHosts: 0,
+ alertHosts: 0,
+ pools: 0,
+ instances: 0,
+ systemvms: 0,
+ routers: 0
+ }
+ this.loading = true
+ api('listPods', { zoneid: zone.id }).then(json => {
+ this.loading = false
+ this.data.pods = json?.listpodsresponse?.count
+ if (!this.data.pods) {
+ this.data.pods = 0
+ }
+ })
+ api('listClusters', { zoneid: zone.id }).then(json => {
+ this.loading = false
+ this.data.clusters = json?.listclustersresponse?.count
+ if (!this.data.clusters) {
+ this.data.clusters = 0
+ }
+ })
+ api('listHosts', { zoneid: zone.id, listall: true, details: 'min', type: 'routing', page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.totalHosts = json?.listhostsresponse?.count
+ if (!this.data.totalHosts) {
+ this.data.totalHosts = 0
+ }
+ })
+ api('listHosts', { zoneid: zone.id, listall: true, details: 'min', type: 'routing', state: 'alert', page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.alertHosts = json?.listhostsresponse?.count
+ if (!this.data.alertHosts) {
+ this.data.alertHosts = 0
+ }
+ })
+ api('listStoragePools', { zoneid: zone.id }).then(json => {
+ this.loading = false
+ this.data.pools = json?.liststoragepoolsresponse?.count
+ if (!this.data.pools) {
+ this.data.pools = 0
+ }
+ })
+ api('listSystemVms', { zoneid: zone.id }).then(json => {
+ this.loading = false
+ this.data.systemvms = json?.listsystemvmsresponse?.count
+ if (!this.data.systemvms) {
+ this.data.systemvms = 0
+ }
+ })
+ api('listRouters', { zoneid: zone.id, listall: true }).then(json => {
+ this.loading = false
+ this.data.routers = json?.listroutersresponse?.count
+ if (!this.data.routers) {
+ this.data.routers = 0
+ }
+ })
+ api('listVirtualMachines', { zoneid: zone.id, listall: true, projectid: '-1', details: 'min', page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.instances = json?.listvirtualmachinesresponse?.count
+ if (!this.data.instances) {
+ this.data.instances = 0
+ }
+ })
+ },
+ listAlerts () {
const params = {
- zoneid: zone.id,
- fetchlatest: latest
+ page: 1,
+ pagesize: 8,
+ listall: true
}
this.loading = true
- api('listCapacity', params).then(json => {
- this.stats = []
+ api('listAlerts', params).then(json => {
+ this.alerts = []
this.loading = false
- if (json && json.listcapacityresponse && json.listcapacityresponse.capacity) {
- this.stats = json.listcapacityresponse.capacity
+ if (json && json.listalertsresponse && json.listalertsresponse.alert) {
+ this.alerts = json.listalertsresponse.alert
}
})
},
listEvents () {
const params = {
page: 1,
- pagesize: 6,
+ pagesize: 8,
listall: true
}
this.loading = true
@@ -269,15 +579,16 @@ export default {
if (json && json.listzonesresponse && json.listzonesresponse.zone) {
this.zones = json.listzonesresponse.zone
if (this.zones.length > 0) {
+ this.zones.splice(0, 0, { name: this.$t('label.all.zone') })
this.zoneSelected = this.zones[0]
- this.listCapacity(this.zones[0])
+ this.updateData(this.zones[0])
}
}
})
},
changeZone (index) {
this.zoneSelected = this.zones[index]
- this.listCapacity(this.zoneSelected)
+ this.updateData(this.zoneSelected)
},
filterZone (input, option) {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
@@ -290,7 +601,6 @@ export default {
.capacity-dashboard {
&-wrapper {
display: flex;
- margin-bottom: 12px;
}
&-chart-card-inner {
@@ -313,7 +623,7 @@ export default {
&-button {
width: auto;
- padding-left: 12px;
+ padding-left: 8px;
}
&-button-icon {
@@ -321,21 +631,28 @@ export default {
padding: 2px;
}
- &-footer {
+ &-title {
padding-top: 12px;
padding-left: 3px;
white-space: normal;
}
}
+.dashboard-card {
+ width: 100%;
+ min-height: 370px;
+}
+
+.dashboard-event {
+ width: 100%;
+ overflow-x:hidden;
+ overflow-y: auto;
+ max-height: 370px;
+}
+
.center {
display: block;
text-align: center;
}
-@media (max-width: 1200px) {
- .dashboard-event {
- width: 100%;
- }
-}
</style>
diff --git a/ui/src/views/dashboard/UsageDashboard.vue b/ui/src/views/dashboard/UsageDashboard.vue
index 28a892ac71e..e7420b55c28 100644
--- a/ui/src/views/dashboard/UsageDashboard.vue
+++ b/ui/src/views/dashboard/UsageDashboard.vue
@@ -16,82 +16,331 @@
// under the License.
<template>
- <a-row class="usage-dashboard" :gutter="12">
- <a-col :xl="16" style="padding-left: 0; padding-right: 0;">
- <a-row>
- <a-card style="width: 100%">
- <a-tabs
- v-if="showProject"
- :animated="false"
- @change="onTabChange">
- <template v-for="tab in $route.meta.tabs" :key="tab.name">
- <a-tab-pane
- v-if="'show' in tab ? tab.show(project, $route, $store.getters.userInfo) : true"
- :tab="$t('label.' + tab.name)"
- :key="tab.name">
- <keep-alive>
- <component
- :is="tab.component"
- :resource="project"
- :loading="loading"
- :bordered="false"
- :stats="stats" />
- </keep-alive>
- </a-tab-pane>
- </template>
- </a-tabs>
- <a-row :gutter="24" v-else>
- <a-col
- class="usage-dashboard-chart-tile"
- :xs="12"
- :md="8"
- v-for="stat in stats"
- :key="stat.type">
- <a-card
- class="usage-dashboard-chart-card"
- :bordered="false"
- :loading="loading"
- :style="stat.bgcolor ? { 'background': stat.bgcolor } : {}">
- <router-link v-if="stat.path" :to="{ path: stat.path, query: stat.query }">
- <div
- class="usage-dashboard-chart-card-inner">
- <h3>{{ stat.name }}</h3>
- <h2>
- <render-icon :icon="stat.icon" />
- {{ stat.count == undefined ? 0 : stat.count }}
- </h2>
- </div>
- </router-link>
- </a-card>
- </a-col>
- </a-row>
- </a-card>
- </a-row>
+ <a-row class="capacity-dashboard" :gutter="[12,12]">
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3>
+ <dashboard-outlined /> {{ $t('label.resources') }}
+ <span style="float: right" v-if="showProject">
+ <a-dropdown>
+ <template #overlay>
+ <a-menu>
+ <a-menu-item>
+ <router-link :to="{ path: '/project/' + project.id }">
+ <project-outlined/>
+ {{ $t('label.view') }} {{ $t('label.project') }}
+ </router-link>
+ </a-menu-item>
+ <a-menu-item v-if="showProject && ['Admin'].includes($store.getters.userInfo.roletype)">
+ <router-link :to="{ path: '/project/' + project.id, query: { tab: 'limits.configure' } }">
+ <setting-outlined/>
+ {{ $t('label.configure') }} {{ $t('label.project') }} {{ $t('label.limits') }}
+ </router-link>
+ </a-menu-item>
+ </a-menu>
+ </template>
+ <a-button size="small" type="text">
+ <more-outlined />
+ </a-button>
+ </a-dropdown>
+ </span>
+ </h3>
+ </div>
+ </template>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <a-row :gutter="[10, 10]">
+ <a-col :span="12">
+ <router-link :to="{ path: '/vm' }">
+ <a-statistic
+ :title="$t('label.instances')"
+ :value="data.instances"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <cloud-server-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/kubernetes' }">
+ <a-statistic
+ :title="$t('label.kubernetes.cluster')"
+ :value="data.kubernetes"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <cluster-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/volume' }">
+ <a-statistic
+ :title="$t('label.volumes')"
+ :value="data.volumes"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <hdd-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/snapshot' }">
+ <a-statistic
+ :title="$t('label.snapshots')"
+ :value="data.snapshots"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <build-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/guestnetwork' }">
+ <a-statistic
+ :title="$t('label.guest.networks')"
+ :value="data.networks"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <apartment-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/vpc' }">
+ <a-statistic
+ :title="$t('label.vpcs')"
+ :value="data.vpcs"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <deployment-unit-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/publicip' }">
+ <a-statistic
+ :title="$t('label.public.ips')"
+ :value="data.ips"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <environment-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/template', query: { templatefilter: 'self', filter: 'self' } }">
+ <a-statistic
+ :title="$t('label.templates')"
+ :value="data.templates"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <picture-outlined/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ </a-row>
+ </chart-card>
</a-col>
- <a-col :xl="8">
- <chart-card :loading="loading" >
- <div class="usage-dashboard-chart-card-inner">
- <a-button>
- <router-link :to="{ name: 'event' }">
- {{ $t('label.view') + ' ' + $t('label.events') }}
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3>
+ <cloud-outlined /> {{ $t('label.compute') }}
+ </h3>
+ </div>
+ </template>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <a-row>
+ <a-col :span="12">
+ <router-link :to="{ path: '/vm', query: { state: 'running', filter: 'running' } }">
+ <a-statistic
+ :title="$t('label.running') + ' ' + $t('label.instances')"
+ :value="data.running"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <status class="status" text="Running"/>
+ </template>
+ </a-statistic>
</router-link>
- </a-button>
+ </a-col>
+ <a-col :span="12">
+ <router-link :to="{ path: '/vm', query: { state: 'stopped', filter: 'stopped' } }">
+ <a-statistic
+ :title="$t('label.stopped') + ' ' + $t('label.instances')"
+ :value="data.stopped"
+ :value-style="{ color: $config.theme['@primary-color'] }">
+ <template #prefix>
+ <status class="status" text="Stopped"/>
+ </template>
+ </a-statistic>
+ </router-link>
+ </a-col>
+ </a-row>
+ <a-divider style="margin: 1px 0px; border-width: 0px;"/>
+ <div
+ v-for="usageType in ['vm', 'cpu', 'memory', 'project']"
+ :key="usageType">
+ <div v-if="usageType + 'total' in entity">
+ <div>
+ <strong>
+ {{ $t(getLabel(usageType)) }}
+ </strong>
+ <span style="float: right">
+ {{ getValue(usageType, entity[usageType + 'total']) }} {{ $t('label.used') }}
+ </span>
+ </div>
+ <a-progress
+ status="active"
+ :percent="parseFloat(getPercentUsed(entity[usageType + 'total'], entity[usageType + 'limit']))"
+ :format="p => resource[item + 'limit'] !== '-1' && resource[item + 'limit'] !== 'Unlimited' ? p.toFixed(0) + '%' : ''"
+ stroke-color="#52c41a"
+ size="small"
+ />
+ <br/>
+ <div style="text-align: center">
+ {{ entity[usageType + 'available'] === 'Unlimited' ? $t('label.unlimited') : getValue(usageType, entity[usageType + 'available']) }} {{ $t('label.available') }}
+ {{ entity[usageType + 'limit'] === 'Unlimited' ? '' : (' | ' + getValue(usageType, entity[usageType + 'limit']) + ' ' + $t('label.limit')) }}
+ </div>
+ </div>
+ </div>
+ </chart-card>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3><hdd-outlined /> {{ $t('label.storage') }}</h3>
+ </div>
+ </template>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <div
+ v-for="usageType in ['volume', 'snapshot', 'template', 'primarystorage', 'secondarystorage']"
+ :key="usageType">
+ <div>
+ <div>
+ <strong>
+ {{ $t(getLabel(usageType)) }}
+ </strong>
+ <span style="float: right">
+ {{ getValue(usageType, entity[usageType + 'total']) }} {{ $t('label.used') }}
+ </span>
+ </div>
+ <a-progress
+ status="active"
+ :percent="parseFloat(getPercentUsed(entity[usageType + 'total'], entity[usageType + 'limit']))"
+ :format="p => resource[item + 'limit'] !== '-1' && resource[item + 'limit'] !== 'Unlimited' ? p.toFixed(0) + '%' : ''"
+ stroke-color="#52c41a"
+ size="small"
+ />
+ <br/>
+ <div style="text-align: center">
+ {{ entity[usageType + 'available'] === 'Unlimited' ? $t('label.unlimited') : getValue(usageType, entity[usageType + 'available']) }} {{ $t('label.available') }}
+ {{ entity[usageType + 'limit'] === 'Unlimited' ? '' : (' | ' + getValue(usageType, entity[usageType + 'limit']) + ' ' + $t('label.limit')) }}
+ </div>
+ </div>
</div>
- <template #footer>
- <div class="usage-dashboard-chart-footer">
- <a-timeline>
- <a-timeline-item
- v-for="event in events"
- :key="event.id"
- :color="getEventColour(event)">
- <span :style="{ color: '#999' }"><small>{{ $toLocaleDate(event.created) }}</small></span><br/>
- <span :style="{ color: '#666' }"><small><router-link :to="{ path: '/event/' + event.id }">{{ event.type }}</router-link></small></span><br/>
- <resource-label :resourceType="event.resourcetype" :resourceId="event.resourceid" :resourceName="event.resourcename" />
- <span :style="{ color: '#aaa' }">({{ event.username }}) {{ event.description }}</span>
- </a-timeline-item>
- </a-timeline>
+ </chart-card>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }" class="dashboard-card">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3><apartment-outlined /> {{ $t('label.network') }}</h3>
+ </div>
+ </template>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <div
+ v-for="usageType in ['ip', 'network', 'vpc']"
+ :key="usageType">
+ <div>
+ <div>
+ <strong>
+ {{ $t(getLabel(usageType)) }}
+ </strong>
+ <span style="float: right">
+ {{ getValue(usageType, entity[usageType + 'total']) }} {{ $t('label.used') }}
+ </span>
+ </div>
+ <a-progress
+ status="active"
+ :percent="parseFloat(getPercentUsed(entity[usageType + 'total'], entity[usageType + 'limit']))"
+ :format="p => resource[item + 'limit'] !== '-1' && resource[item + 'limit'] !== 'Unlimited' ? p.toFixed(0) + '%' : ''"
+ stroke-color="#52c41a"
+ size="small"
+ />
+ <br/>
+ <div style="text-align: center">
+ {{ entity[usageType + 'available'] === 'Unlimited' ? $t('label.unlimited') : getValue(usageType, entity[usageType + 'available']) }} {{ $t('label.available') }}
+ {{ entity[usageType + 'limit'] === 'Unlimited' ? '' : (' | ' + getValue(usageType, entity[usageType + 'limit']) + ' ' + $t('label.limit')) }}
+ </div>
+ </div>
+ </div>
+ </chart-card>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }" class="dashboard-card">
+ <chart-card :loading="loading" class="dashboard-card">
+ <template #title>
+ <div class="center">
+ <h3><render-icon :icon="$config.userCard.icon" /> {{ $t($config.userCard.title) }}</h3>
</div>
</template>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <a-list item-layout="horizontal" :data-source="$config.userCard.links">
+ <template #renderItem="{ item }">
+ <a-list-item>
+ <a-list-item-meta :description="item.text">
+ <template #title>
+ <a :href="item.link" target="_blank"><h4>{{ item.title }}</h4></a>
+ </template>
+ <template #avatar>
+ <a-avatar :style="{ backgroundColor: $config.theme['@primary-color'] }">
+ <template #icon>
+ <render-icon :icon="item.icon" />
+ </template>
+ </a-avatar>
+ </template>
+ </a-list-item-meta>
+ </a-list-item>
+ </template>
+ </a-list>
+ </chart-card>
+ </a-col>
+ <a-col :xs="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 8 }" :xxl="{ span: 8 }">
+ <chart-card :loading="loading" class="dashboard-card dashboard-event">
+ <template #title>
+ <div class="center">
+ <h3><schedule-outlined /> {{ $t('label.events') }}</h3>
+ </div>
+ </template>
+ <a-divider style="margin: 6px 0px; border-width: 0px"/>
+ <a-timeline>
+ <a-timeline-item
+ v-for="event in events"
+ :key="event.id"
+ :color="getEventColour(event)">
+ <span :style="{ color: '#999' }"><small>{{ $toLocaleDate(event.created) }}</small></span>
+ <span :style="{ color: '#666' }"><small><router-link :to="{ path: '/event/' + event.id }">{{ event.type }}</router-link></small></span><br/>
+ <span>
+ <resource-label :resourceType="event.resourcetype" :resourceId="event.resourceid" :resourceName="event.resourcename" />
+ </span>
+ <span :style="{ color: '#aaa' }">({{ event.username }}) {{ event.description }}</span>
+ </a-timeline-item>
+ </a-timeline>
+ <router-link :to="{ path: '/event' }">
+ <a-button>
+ {{ $t('label.view') }} {{ $t('label.events') }}
+ </a-button>
+ </router-link>
</chart-card>
</a-col>
</a-row>
@@ -104,13 +353,15 @@ import store from '@/store'
import ChartCard from '@/components/widgets/ChartCard'
import UsageDashboardChart from '@/views/dashboard/UsageDashboardChart'
import ResourceLabel from '@/components/widgets/ResourceLabel'
+import Status from '@/components/widgets/Status'
export default {
name: 'UsageDashboard',
components: {
ChartCard,
UsageDashboardChart,
- ResourceLabel
+ ResourceLabel,
+ Status
},
props: {
resource: {
@@ -129,9 +380,29 @@ export default {
loading: false,
showAction: false,
showAddAccount: false,
+ project: {},
+ account: {},
events: [],
- stats: [],
- project: {}
+ data: {
+ running: 0,
+ stopped: 0,
+ instances: 0,
+ kubernetes: 0,
+ volumes: 0,
+ snapshots: 0,
+ networks: 0,
+ vpcs: 0,
+ ips: 0,
+ templates: 0
+ }
+ }
+ },
+ computed: {
+ entity: function () {
+ if (this.showProject) {
+ return this.project
+ }
+ return this.account
}
},
created () {
@@ -158,6 +429,9 @@ export default {
deep: true,
handler (newData, oldData) {
this.project = newData
+ if (newData.id) {
+ this.fetchData()
+ }
}
},
'$i18n.global.locale' (to, from) {
@@ -168,61 +442,95 @@ export default {
},
methods: {
fetchData () {
- this.stats = [{}, {}, {}, {}, {}, {}]
- api('listVirtualMachines', { state: 'Running', listall: true, retrieveonlyresourcecount: true }).then(json => {
- var count = 0
- if (json && json.listvirtualmachinesresponse) {
- count = json.listvirtualmachinesresponse.count
+ if (store.getters.project.id) {
+ this.listProject()
+ } else {
+ this.listAccount()
+ }
+ this.updateData()
+ },
+ listAccount () {
+ this.loading = true
+ api('listAccounts', { id: this.$store.getters.userInfo.accountid }).then(json => {
+ this.loading = false
+ if (json && json.listaccountsresponse && json.listaccountsresponse.account) {
+ this.account = json.listaccountsresponse.account[0]
}
- var tileColor = this.$config.theme['@dashboard-tile-runningvms-bg'] || '#dfe9cc'
- this.stats.splice(0, 1, { name: this.$t('label.running.vms'), count: count, icon: 'desktop-outlined', bgcolor: tileColor, path: '/vm', query: { state: 'running', filter: 'running' } })
})
- api('listVirtualMachines', { state: 'Stopped', listall: true, retrieveonlyresourcecount: true }).then(json => {
- var count = 0
- if (json && json.listvirtualmachinesresponse) {
- count = json.listvirtualmachinesresponse.count
+ },
+ listProject () {
+ this.loading = true
+ api('listProjects', { id: store.getters.project.id }).then(json => {
+ this.loading = false
+ if (json && json.listprojectsresponse && json.listprojectsresponse.project) {
+ this.project = json.listprojectsresponse.project[0]
}
- var tileColor = this.$config.theme['@dashboard-tile-stoppedvms-bg'] || '#edcbce'
- this.stats.splice(1, 1, { name: this.$t('label.stopped.vms'), count: count, icon: 'poweroff-outlined', bgcolor: tileColor, path: '/vm', query: { state: 'stopped', filter: 'stopped' } })
})
- api('listVirtualMachines', { listall: true, retrieveonlyresourcecount: true }).then(json => {
- var count = 0
- if (json && json.listvirtualmachinesresponse) {
- count = json.listvirtualmachinesresponse.count
- }
- var tileColor = this.$config.theme['@dashboard-tile-totalvms-bg'] || '#ffffff'
- this.stats.splice(2, 1, { name: this.$t('label.total.vms'), count: count, icon: 'number-outlined', bgcolor: tileColor, path: '/vm' })
+ },
+ updateData () {
+ this.data = {
+ running: 0,
+ stopped: 0,
+ instances: 0,
+ kubernetes: 0,
+ volumes: 0,
+ snapshots: 0,
+ networks: 0,
+ vpcs: 0,
+ ips: 0,
+ templates: 0
+ }
+ this.listInstances()
+ this.listEvents()
+ this.loading = true
+ api('listKubernetesClusters', { listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.kubernetes = json?.listkubernetesclustersresponse?.count
})
- api('listVolumes', { listall: true, retrieveonlyresourcecount: true }).then(json => {
- var count = 0
- if (json && json.listvolumesresponse) {
- count = json.listvolumesresponse.count
- }
- var tileColor = this.$config.theme['@dashboard-tile-totalvolumes-bg'] || '#ffffff'
- this.stats.splice(3, 1, { name: this.$t('label.total.volume'), count: count, icon: 'database-outlined', bgcolor: tileColor, path: '/volume' })
+ api('listVolumes', { listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.volumes = json?.listvolumesresponse?.count
})
- api('listNetworks', { listall: true, retrieveonlyresourcecount: true }).then(json => {
- var count = 0
- if (json && json.listnetworksresponse) {
- count = json.listnetworksresponse.count
- }
- var tileColor = this.$config.theme['@dashboard-tile-totalnetworks-bg'] || '#ffffff'
- this.stats.splice(4, 1, { name: this.$t('label.total.network'), count: count, icon: 'apartment-outlined', bgcolor: tileColor, path: '/guestnetwork' })
+ api('listSnapshots', { listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.snapshots = json?.listsnapshotsresponse?.count
})
- api('listPublicIpAddresses', { listall: true, retrieveonlyresourcecount: true }).then(json => {
- var count = 0
- if (json && json.listpublicipaddressesresponse) {
- count = json.listpublicipaddressesresponse.count
- }
- var tileColor = this.$config.theme['@dashboard-tile-totalips-bg'] || '#ffffff'
- this.stats.splice(5, 1, { name: this.$t('label.public.ip.addresses'), count: count, icon: 'environment-outlined', bgcolor: tileColor, path: '/publicip' })
+ api('listNetworks', { listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.networks = json?.listnetworksresponse?.count
+ })
+ api('listVPCs', { listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.vpcs = json?.listvpcsresponse?.count
+ })
+ api('listPublicIpAddresses', { listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.ips = json?.listpublicipaddressesresponse?.count
+ })
+ api('listTemplates', { templatefilter: 'self', listall: true, page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.templates = json?.listtemplatesresponse?.count
+ })
+ },
+ listInstances (zone) {
+ this.loading = true
+ api('listVirtualMachines', { listall: true, details: 'min', page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.instances = json?.listvirtualmachinesresponse?.count
+ })
+ api('listVirtualMachines', { listall: true, details: 'min', state: 'running', page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.running = json?.listvirtualmachinesresponse?.count
+ })
+ api('listVirtualMachines', { listall: true, details: 'min', state: 'stopped', page: 1, pagesize: 1 }).then(json => {
+ this.loading = false
+ this.data.stopped = json?.listvirtualmachinesresponse?.count
})
- this.listEvents()
},
listEvents () {
const params = {
page: 1,
- pagesize: 6,
+ pagesize: 8,
listall: true
}
this.loading = true
@@ -234,6 +542,37 @@ export default {
}
})
},
+ getLabel (usageType) {
+ switch (usageType) {
+ case 'vm':
+ return 'label.instances'
+ case 'cpu':
+ return 'label.cpunumber'
+ case 'memory':
+ return 'label.memory'
+ case 'primarystorage':
+ return 'label.primary.storage'
+ case 'secondarystorage':
+ return 'label.secondary.storage'
+ case 'ip':
+ return 'label.public.ips'
+ }
+ return 'label.' + usageType + 's'
+ },
+ getValue (usageType, value) {
+ switch (usageType) {
+ case 'memory':
+ return parseFloat(value / 1024.0).toFixed(2) + ' GiB'
+ case 'primarystorage':
+ return parseFloat(value).toFixed(2) + ' GiB'
+ case 'secondarystorage':
+ return parseFloat(value).toFixed(2) + ' GiB'
+ }
+ return value
+ },
+ getPercentUsed (total, limit) {
+ return (limit === 'Unlimited') ? 0 : (total / limit) * 100
+ },
getEventColour (event) {
if (event.level === 'ERROR') {
return 'red'
@@ -242,13 +581,6 @@ export default {
return 'green'
}
return 'blue'
- },
- onTabChange (key) {
- this.showAddAccount = false
-
- if (key !== 'Dashboard') {
- this.showAddAccount = true
- }
}
}
}
@@ -276,6 +608,23 @@ export default {
}
}
+ .dashboard-card {
+ width: 100%;
+ min-height: 420px;
+ }
+
+ .dashboard-event {
+ width: 100%;
+ overflow-x:hidden;
+ overflow-y: scroll;
+ max-height: 420px;
+ }
+
+ .center {
+ display: block;
+ text-align: center;
+ }
+
@media (max-width: 1200px) {
.ant-col-xl-8 {
width: 100%;
diff --git a/ui/src/views/network/CreateIsolatedNetworkForm.vue b/ui/src/views/network/CreateIsolatedNetworkForm.vue
index e9830bba847..c7aa3f8d5f9 100644
--- a/ui/src/views/network/CreateIsolatedNetworkForm.vue
+++ b/ui/src/views/network/CreateIsolatedNetworkForm.vue
@@ -293,11 +293,11 @@
</div>
<a-form-item v-if="selectedNetworkOfferingSupportsSourceNat" name="sourcenatipaddress" ref="sourcenatipaddress">
<template #label>
- <tooltip-label :title="$t('label.routerip')" :tooltip="apiParams.sourcenatipaddress.description"/>
+ <tooltip-label :title="$t('label.routerip')" :tooltip="apiParams.sourcenatipaddress?.description"/>
</template>
<a-input
v-model:value="form.sourcenatipaddress"
- :placeholder="apiParams.sourcenatipaddress.description"/>
+ :placeholder="apiParams.sourcenatipaddress?.description"/>
</a-form-item>
<a-form-item
ref="networkdomain"
diff --git a/ui/src/views/network/CreateNetwork.vue b/ui/src/views/network/CreateNetwork.vue
index 4ead6ba6525..44921f45e9a 100644
--- a/ui/src/views/network/CreateNetwork.vue
+++ b/ui/src/views/network/CreateNetwork.vue
@@ -106,7 +106,8 @@ export default {
fetchActionZoneData () {
this.loading = true
const params = {}
- if (this.resource.zoneid && this.$route.name === 'deployVirtualMachine') {
+ console.log(this.resource)
+ if (this.$route.name === 'deployVirtualMachine' && this.resource.zoneid) {
params.id = this.resource.zoneid
}
this.actionZoneLoading = true
diff --git a/ui/src/views/network/CreateVpc.vue b/ui/src/views/network/CreateVpc.vue
index 363dd440562..64e5cdd1959 100644
--- a/ui/src/views/network/CreateVpc.vue
+++ b/ui/src/views/network/CreateVpc.vue
@@ -157,11 +157,11 @@
</a-row>
<a-form-item v-if="selectedNetworkOfferingSupportsSourceNat" name="sourcenatipaddress" ref="sourcenatipaddress">
<template #label>
- <tooltip-label :title="$t('label.routerip')" :tooltip="apiParams.sourcenatipaddress.description"/>
+ <tooltip-label :title="$t('label.routerip')" :tooltip="apiParams.sourcenatipaddress?.description"/>
</template>
<a-input
v-model:value="form.sourcenatipaddress"
- :placeholder="apiParams.sourcenatipaddress.description"/>
+ :placeholder="apiParams.sourcenatipaddress?.description"/>
</a-form-item>
<a-form-item name="start" ref="start">
<template #label>