From 9ba9556d7ed22a08615dd0779a3b44c7ed13d58e Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 27 Dec 2022 19:06:03 +0000 Subject: [PATCH] --- client/.eslintignore | 1 - client/.gitignore | 24 - client/README.md | 36 - client/appdev.bat | 1 - client/audit.txt | 947 -- client/babel.config.js | 10 - client/build/binding.sln | 19 - client/build/binding.vcxproj | 148 - client/build/binding.vcxproj.filters | 58 - client/build/config.gypi | 360 - client/cypress.json | 9 - client/devdocs/todo.txt | 1 - client/package-lock.json | 13748 ---------------- client/package.json | 89 - client/public/browserconfig.xml | 9 - client/public/favicon.ico | Bin 113054 -> 0 bytes client/public/index.html | 18 - client/public/manifest.json | 8 - client/public/robots.txt | 2 - client/src/App.vue | 419 - client/src/api/authorizationroles.js | 184 - client/src/api/authutil.js | 124 - client/src/api/biz-role-rights.js | 47 - client/src/api/dash-registry.js | 400 - client/src/api/enums.js | 101 - client/src/api/errorhandler.js | 230 - client/src/api/eventbus.js | 2 - client/src/api/form-custom-template.js | 83 - client/src/api/gzapi.js | 672 - client/src/api/gzdialog.js | 188 - client/src/api/gzform.js | 1002 -- client/src/api/gzmenu.js | 438 - client/src/api/gzutil.js | 931 -- client/src/api/initialize.js | 614 - client/src/api/locale.js | 604 - client/src/api/notifypoll.js | 46 - client/src/api/open-object-handler.js | 277 - client/src/api/palette.js | 60 - .../api/relative-date-filter-calculator.js | 620 - client/src/api/sockeye-version.js | 4 - client/src/api/socktype.js | 48 - client/src/api/translation.js | 327 - client/src/assets/css/main.css | 23 - client/src/assets/img/sockeye-128.png | Bin 45027 -> 0 bytes client/src/assets/img/sockeye-64.png | Bin 12513 -> 0 bytes client/src/assets/img/sockeye.ico | Bin 113054 -> 0 bytes client/src/assets/img/sockeye.jpg | Bin 154590 -> 0 bytes client/src/assets/img/sockeye.svg | 1414 -- client/src/assets/logo.svg | 1414 -- client/src/components/_barebones_template.vue | 42 - client/src/components/alert-control.vue | 38 - client/src/components/attachment-control.vue | 387 - client/src/components/chart-bar-control.vue | 43 - .../chart-bar-horizontal-control.vue | 43 - client/src/components/chart-line-control.vue | 42 - client/src/components/currency-control.vue | 78 - .../src/components/custom-fields-control.vue | 479 - client/src/components/dash-base.vue | 229 - .../src/components/dash-today-reminders.vue | 164 - client/src/components/dash-today-reviews.vue | 154 - .../components/dash-today-scheduled-wo.vue | 153 - .../components/data-table-filter-control.vue | 1076 -- .../data-table-filter-manager-control.vue | 212 - ...-mobile-filter-column-selector-control.vue | 52 - client/src/components/data-table.vue | 1399 -- client/src/components/date-control.vue | 170 - client/src/components/date-time-control.vue | 249 - .../src/components/days-of-week-control.vue | 71 - client/src/components/decimal-control.vue | 64 - client/src/components/duration-control.vue | 162 - client/src/components/email-control.vue | 26 - client/src/components/error-control.vue | 23 - .../components/extension-delete-control.vue | 148 - .../components/extension-export-control.vue | 63 - .../src/components/extension-tags-control.vue | 186 - client/src/components/extensions-control.vue | 158 - client/src/components/gzconfirm.vue | 135 - client/src/components/gznotify.vue | 79 - client/src/components/percent-control.vue | 62 - client/src/components/phone-control.vue | 26 - client/src/components/pick-list.vue | 411 - client/src/components/report-control.vue | 299 - client/src/components/role-control.vue | 84 - client/src/components/tag-picker.vue | 154 - client/src/components/time-control.vue | 173 - client/src/components/url-control.vue | 28 - client/src/components/wiki-control.vue | 1000 -- client/src/main.js | 233 - client/src/plugins/vuetify.js | 1624 -- client/src/registerServiceWorker.js | 40 - client/src/router.js | 603 - client/src/store.js | 210 - client/src/sw.js | 25 - client/src/views/adm-attachments.vue | 315 - client/src/views/adm-global-logo.vue | 282 - client/src/views/adm-global-seeds.vue | 298 - .../src/views/adm-global-select-templates.vue | 479 - client/src/views/adm-global-settings.vue | 764 - client/src/views/adm-history.vue | 68 - client/src/views/adm-import.vue | 635 - client/src/views/adm-integration.vue | 418 - client/src/views/adm-integrations.vue | 84 - client/src/views/adm-report-templates.vue | 119 - client/src/views/adm-translation.vue | 626 - client/src/views/adm-translations.vue | 119 - client/src/views/adm-user.vue | 1137 -- client/src/views/adm-users.vue | 173 - client/src/views/biz-gzcase-list.vue | 177 - client/src/views/biz-gzcase.vue | 613 - client/src/views/biz-license-list.vue | 179 - client/src/views/biz-product-list.vue | 179 - client/src/views/biz-product.vue | 671 - client/src/views/biz-purchase-list.vue | 181 - client/src/views/biz-purchase.vue | 774 - .../views/biz-subscription-server-list.vue | 181 - client/src/views/biz-subscription-server.vue | 1487 -- client/src/views/biz-trial-request-list.vue | 183 - client/src/views/biz-vendor-list.vue | 179 - client/src/views/biz-vendor.vue | 1209 -- client/src/views/cust-customer-note.vue | 465 - client/src/views/cust-customer-notes.vue | 171 - client/src/views/cust-customer.vue | 1420 -- client/src/views/cust-customers.vue | 182 - client/src/views/cust-head-office.vue | 1339 -- client/src/views/cust-head-offices.vue | 151 - client/src/views/cust-user.vue | 1084 -- client/src/views/cust-users.vue | 157 - .../views/customer-notify-subscription.vue | 1353 -- .../views/customer-notify-subscriptions.vue | 238 - client/src/views/home-dashboard.vue | 381 - client/src/views/home-memo.vue | 689 - client/src/views/home-memos.vue | 146 - client/src/views/home-notifications.vue | 321 - client/src/views/home-notify-direct.vue | 310 - client/src/views/home-notify-subscription.vue | 789 - .../src/views/home-notify-subscriptions.vue | 258 - client/src/views/home-password.vue | 280 - client/src/views/home-reminder.vue | 592 - client/src/views/home-reminders.vue | 150 - client/src/views/home-reset.vue | 179 - client/src/views/home-review.vue | 676 - client/src/views/home-reviews.vue | 181 - client/src/views/home-schedule.vue | 1289 -- client/src/views/home-search.vue | 363 - client/src/views/home-security.vue | 273 - client/src/views/home-user-settings.vue | 543 - client/src/views/login.vue | 501 - client/src/views/nofeaturesavailable.vue | 26 - client/src/views/notfound.vue | 46 - client/src/views/ops-backup.vue | 487 - client/src/views/ops-customer-notify-log.vue | 78 - client/src/views/ops-jobs.vue | 257 - client/src/views/ops-log.vue | 236 - client/src/views/ops-metrics.vue | 528 - .../src/views/ops-notification-settings.vue | 460 - client/src/views/ops-notify-log.vue | 78 - client/src/views/ops-notify-queue.vue | 253 - client/src/views/ops-profile.vue | 125 - client/src/views/ops-server-state.vue | 285 - client/src/views/ops-view-configuration.vue | 322 - client/src/views/sock-about.vue | 379 - client/src/views/sock-customize.vue | 451 - .../src/views/sock-data-list-column-view.vue | 477 - client/src/views/sock-evaluate.vue | 365 - client/src/views/sock-history.vue | 470 - client/src/views/sock-log.vue | 54 - client/src/views/sock-open.vue | 24 - client/src/views/sock-report-edit.vue | 1163 -- client/src/views/sock-report-view.vue | 43 - client/src/views/svc-schedule.vue | 1215 -- client/vue.config.js | 53 - client/webpack.config.js | 28 - server/biz/GlobalBizSettingsBiz.cs | 26 +- 173 files changed, 24 insertions(+), 70773 deletions(-) delete mode 100644 client/.eslintignore delete mode 100644 client/.gitignore delete mode 100644 client/README.md delete mode 100644 client/appdev.bat delete mode 100644 client/audit.txt delete mode 100644 client/babel.config.js delete mode 100644 client/build/binding.sln delete mode 100644 client/build/binding.vcxproj delete mode 100644 client/build/binding.vcxproj.filters delete mode 100644 client/build/config.gypi delete mode 100644 client/cypress.json delete mode 100644 client/devdocs/todo.txt delete mode 100644 client/package-lock.json delete mode 100644 client/package.json delete mode 100644 client/public/browserconfig.xml delete mode 100644 client/public/favicon.ico delete mode 100644 client/public/index.html delete mode 100644 client/public/manifest.json delete mode 100644 client/public/robots.txt delete mode 100644 client/src/App.vue delete mode 100644 client/src/api/authorizationroles.js delete mode 100644 client/src/api/authutil.js delete mode 100644 client/src/api/biz-role-rights.js delete mode 100644 client/src/api/dash-registry.js delete mode 100644 client/src/api/enums.js delete mode 100644 client/src/api/errorhandler.js delete mode 100644 client/src/api/eventbus.js delete mode 100644 client/src/api/form-custom-template.js delete mode 100644 client/src/api/gzapi.js delete mode 100644 client/src/api/gzdialog.js delete mode 100644 client/src/api/gzform.js delete mode 100644 client/src/api/gzmenu.js delete mode 100644 client/src/api/gzutil.js delete mode 100644 client/src/api/initialize.js delete mode 100644 client/src/api/locale.js delete mode 100644 client/src/api/notifypoll.js delete mode 100644 client/src/api/open-object-handler.js delete mode 100644 client/src/api/palette.js delete mode 100644 client/src/api/relative-date-filter-calculator.js delete mode 100644 client/src/api/sockeye-version.js delete mode 100644 client/src/api/socktype.js delete mode 100644 client/src/api/translation.js delete mode 100644 client/src/assets/css/main.css delete mode 100644 client/src/assets/img/sockeye-128.png delete mode 100644 client/src/assets/img/sockeye-64.png delete mode 100644 client/src/assets/img/sockeye.ico delete mode 100644 client/src/assets/img/sockeye.jpg delete mode 100644 client/src/assets/img/sockeye.svg delete mode 100644 client/src/assets/logo.svg delete mode 100644 client/src/components/_barebones_template.vue delete mode 100644 client/src/components/alert-control.vue delete mode 100644 client/src/components/attachment-control.vue delete mode 100644 client/src/components/chart-bar-control.vue delete mode 100644 client/src/components/chart-bar-horizontal-control.vue delete mode 100644 client/src/components/chart-line-control.vue delete mode 100644 client/src/components/currency-control.vue delete mode 100644 client/src/components/custom-fields-control.vue delete mode 100644 client/src/components/dash-base.vue delete mode 100644 client/src/components/dash-today-reminders.vue delete mode 100644 client/src/components/dash-today-reviews.vue delete mode 100644 client/src/components/dash-today-scheduled-wo.vue delete mode 100644 client/src/components/data-table-filter-control.vue delete mode 100644 client/src/components/data-table-filter-manager-control.vue delete mode 100644 client/src/components/data-table-mobile-filter-column-selector-control.vue delete mode 100644 client/src/components/data-table.vue delete mode 100644 client/src/components/date-control.vue delete mode 100644 client/src/components/date-time-control.vue delete mode 100644 client/src/components/days-of-week-control.vue delete mode 100644 client/src/components/decimal-control.vue delete mode 100644 client/src/components/duration-control.vue delete mode 100644 client/src/components/email-control.vue delete mode 100644 client/src/components/error-control.vue delete mode 100644 client/src/components/extension-delete-control.vue delete mode 100644 client/src/components/extension-export-control.vue delete mode 100644 client/src/components/extension-tags-control.vue delete mode 100644 client/src/components/extensions-control.vue delete mode 100644 client/src/components/gzconfirm.vue delete mode 100644 client/src/components/gznotify.vue delete mode 100644 client/src/components/percent-control.vue delete mode 100644 client/src/components/phone-control.vue delete mode 100644 client/src/components/pick-list.vue delete mode 100644 client/src/components/report-control.vue delete mode 100644 client/src/components/role-control.vue delete mode 100644 client/src/components/tag-picker.vue delete mode 100644 client/src/components/time-control.vue delete mode 100644 client/src/components/url-control.vue delete mode 100644 client/src/components/wiki-control.vue delete mode 100644 client/src/main.js delete mode 100644 client/src/plugins/vuetify.js delete mode 100644 client/src/registerServiceWorker.js delete mode 100644 client/src/router.js delete mode 100644 client/src/store.js delete mode 100644 client/src/sw.js delete mode 100644 client/src/views/adm-attachments.vue delete mode 100644 client/src/views/adm-global-logo.vue delete mode 100644 client/src/views/adm-global-seeds.vue delete mode 100644 client/src/views/adm-global-select-templates.vue delete mode 100644 client/src/views/adm-global-settings.vue delete mode 100644 client/src/views/adm-history.vue delete mode 100644 client/src/views/adm-import.vue delete mode 100644 client/src/views/adm-integration.vue delete mode 100644 client/src/views/adm-integrations.vue delete mode 100644 client/src/views/adm-report-templates.vue delete mode 100644 client/src/views/adm-translation.vue delete mode 100644 client/src/views/adm-translations.vue delete mode 100644 client/src/views/adm-user.vue delete mode 100644 client/src/views/adm-users.vue delete mode 100644 client/src/views/biz-gzcase-list.vue delete mode 100644 client/src/views/biz-gzcase.vue delete mode 100644 client/src/views/biz-license-list.vue delete mode 100644 client/src/views/biz-product-list.vue delete mode 100644 client/src/views/biz-product.vue delete mode 100644 client/src/views/biz-purchase-list.vue delete mode 100644 client/src/views/biz-purchase.vue delete mode 100644 client/src/views/biz-subscription-server-list.vue delete mode 100644 client/src/views/biz-subscription-server.vue delete mode 100644 client/src/views/biz-trial-request-list.vue delete mode 100644 client/src/views/biz-vendor-list.vue delete mode 100644 client/src/views/biz-vendor.vue delete mode 100644 client/src/views/cust-customer-note.vue delete mode 100644 client/src/views/cust-customer-notes.vue delete mode 100644 client/src/views/cust-customer.vue delete mode 100644 client/src/views/cust-customers.vue delete mode 100644 client/src/views/cust-head-office.vue delete mode 100644 client/src/views/cust-head-offices.vue delete mode 100644 client/src/views/cust-user.vue delete mode 100644 client/src/views/cust-users.vue delete mode 100644 client/src/views/customer-notify-subscription.vue delete mode 100644 client/src/views/customer-notify-subscriptions.vue delete mode 100644 client/src/views/home-dashboard.vue delete mode 100644 client/src/views/home-memo.vue delete mode 100644 client/src/views/home-memos.vue delete mode 100644 client/src/views/home-notifications.vue delete mode 100644 client/src/views/home-notify-direct.vue delete mode 100644 client/src/views/home-notify-subscription.vue delete mode 100644 client/src/views/home-notify-subscriptions.vue delete mode 100644 client/src/views/home-password.vue delete mode 100644 client/src/views/home-reminder.vue delete mode 100644 client/src/views/home-reminders.vue delete mode 100644 client/src/views/home-reset.vue delete mode 100644 client/src/views/home-review.vue delete mode 100644 client/src/views/home-reviews.vue delete mode 100644 client/src/views/home-schedule.vue delete mode 100644 client/src/views/home-search.vue delete mode 100644 client/src/views/home-security.vue delete mode 100644 client/src/views/home-user-settings.vue delete mode 100644 client/src/views/login.vue delete mode 100644 client/src/views/nofeaturesavailable.vue delete mode 100644 client/src/views/notfound.vue delete mode 100644 client/src/views/ops-backup.vue delete mode 100644 client/src/views/ops-customer-notify-log.vue delete mode 100644 client/src/views/ops-jobs.vue delete mode 100644 client/src/views/ops-log.vue delete mode 100644 client/src/views/ops-metrics.vue delete mode 100644 client/src/views/ops-notification-settings.vue delete mode 100644 client/src/views/ops-notify-log.vue delete mode 100644 client/src/views/ops-notify-queue.vue delete mode 100644 client/src/views/ops-profile.vue delete mode 100644 client/src/views/ops-server-state.vue delete mode 100644 client/src/views/ops-view-configuration.vue delete mode 100644 client/src/views/sock-about.vue delete mode 100644 client/src/views/sock-customize.vue delete mode 100644 client/src/views/sock-data-list-column-view.vue delete mode 100644 client/src/views/sock-evaluate.vue delete mode 100644 client/src/views/sock-history.vue delete mode 100644 client/src/views/sock-log.vue delete mode 100644 client/src/views/sock-open.vue delete mode 100644 client/src/views/sock-report-edit.vue delete mode 100644 client/src/views/sock-report-view.vue delete mode 100644 client/src/views/svc-schedule.vue delete mode 100644 client/vue.config.js delete mode 100644 client/webpack.config.js diff --git a/client/.eslintignore b/client/.eslintignore deleted file mode 100644 index 9c88d44..0000000 --- a/client/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -src/libs/*.js \ No newline at end of file diff --git a/client/.gitignore b/client/.gitignore deleted file mode 100644 index f188498..0000000 --- a/client/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -.DS_Store -node_modules -/dist - -/tests/e2e/videos/ -/tests/e2e/screenshots/ - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw* diff --git a/client/README.md b/client/README.md deleted file mode 100644 index 951ecb1..0000000 --- a/client/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# sockeye - -## Project setup -``` -npm install -``` - -### Compiles and hot-reloads for development -``` -npm run serve -``` - -### Compiles and minifies for production -``` -npm run build -``` - -### Run your tests -``` -npm run test -``` - -### Lints and fixes files -``` -npm run lint -``` - -### Run your end-to-end tests -``` -npm run test:e2e -``` - -### Run your unit tests -``` -npm run test:unit -``` diff --git a/client/appdev.bat b/client/appdev.bat deleted file mode 100644 index eb1cffd..0000000 --- a/client/appdev.bat +++ /dev/null @@ -1 +0,0 @@ -npm run serve \ No newline at end of file diff --git a/client/audit.txt b/client/audit.txt deleted file mode 100644 index 63f4116..0000000 --- a/client/audit.txt +++ /dev/null @@ -1,947 +0,0 @@ -=== npm audit security report === - -# Run npm install --save-dev babel-jest@24.1.0 to resolve 1 vulnerability -SEMVER WARNING: Recommended action is a potentially breaking change - - Low Regular Expression Denial of Service - - Package braces - - Dependency of babel-jest [dev] - - Path babel-jest > babel-plugin-istanbul > test-exclude > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - - - Manual Review - Some vulnerabilities require your attention to resolve - - Visit https://go.npm.me/audit-guide for additional guidance - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > babel-jest > - babel-plugin-istanbul > test-exclude > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - babel-jest > babel-plugin-istanbul > test-exclude > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-environment-jsdom > jest-util > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-environment-node > jest-util > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-jasmine2 > expect > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-jasmine2 > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-jasmine2 > jest-snapshot > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-jasmine2 > jest-util > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - jest-util > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-config > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > - jest-environment-jsdom > jest-util > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-haste-map - > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > - jest-resolve-dependencies > jest-snapshot > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > babel-jest > babel-plugin-istanbul > - test-exclude > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-environment-jsdom > jest-util > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-environment-node > jest-util > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-jasmine2 > expect > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-jasmine2 > jest-message-util > micromatch - > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-jasmine2 > jest-snapshot > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-jasmine2 > jest-util > jest-message-util - > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > jest-util > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-config > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-haste-map > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-jasmine2 > expect > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-jasmine2 > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-jasmine2 > jest-snapshot > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-jasmine2 > jest-util > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > babel-plugin-istanbul > test-exclude > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > babel-jest > - babel-plugin-istanbul > test-exclude > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-environment-jsdom > - jest-util > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-environment-node > - jest-util > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-jasmine2 > expect > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-jasmine2 > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-jasmine2 > jest-snapshot > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-jasmine2 > jest-util > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > jest-util > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-config > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-haste-map > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-snapshot > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > jest-util > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-runtime > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runner > - jest-util > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - babel-plugin-istanbul > test-exclude > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > babel-jest > babel-plugin-istanbul > - test-exclude > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-environment-jsdom > jest-util > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-environment-node > jest-util > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-jasmine2 > expect > jest-message-util > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-jasmine2 > jest-message-util > micromatch - > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-jasmine2 > jest-snapshot > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-jasmine2 > jest-util > jest-message-util - > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > jest-util > jest-message-util > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-config > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-haste-map > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-snapshot > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - jest-util > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-runtime > - micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-snapshot - > jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > jest-util > - jest-message-util > micromatch > braces - - More info https://nodesecurity.io/advisories/786 - - - Low Regular Expression Denial of Service - - Package braces - - Patched in >=2.3.1 - - Dependency of @vue/cli-plugin-unit-jest [dev] - - Path @vue/cli-plugin-unit-jest > jest > jest-cli > micromatch > - braces - - More info https://nodesecurity.io/advisories/786 - -found 64 low severity vulnerabilities in 40594 scanned packages - 1 vulnerability requires semver-major dependency updates. - 63 vulnerabilities require manual review. See the full report for details. diff --git a/client/babel.config.js b/client/babel.config.js deleted file mode 100644 index c253857..0000000 --- a/client/babel.config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - presets: [ - [ - "@vue/cli-plugin-babel/preset", - { - useBuiltIns: "entry" - } - ] - ] -}; diff --git a/client/build/binding.sln b/client/build/binding.sln deleted file mode 100644 index 900534a..0000000 --- a/client/build/binding.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2015 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "binding", "binding.vcxproj", "{2A7051B2-EC6A-582D-A375-8C69A961C66B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|x64 = Release|x64 - Debug|x64 = Debug|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2A7051B2-EC6A-582D-A375-8C69A961C66B}.Release|x64.ActiveCfg = Release|x64 - {2A7051B2-EC6A-582D-A375-8C69A961C66B}.Release|x64.Build.0 = Release|x64 - {2A7051B2-EC6A-582D-A375-8C69A961C66B}.Debug|x64.ActiveCfg = Debug|x64 - {2A7051B2-EC6A-582D-A375-8C69A961C66B}.Debug|x64.Build.0 = Debug|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/client/build/binding.vcxproj b/client/build/binding.vcxproj deleted file mode 100644 index 03654c9..0000000 --- a/client/build/binding.vcxproj +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {2A7051B2-EC6A-582D-A375-8C69A961C66B} - Win32Proj - binding - true - x64 - 10.0.19041.0 - - - - DynamicLibrary - - - v142 - - - - - - - - - - $(ExecutablePath);$(MSBuildProjectDirectory)\..\bin\;$(MSBuildProjectDirectory)\..\bin\ - true - $(Configuration)\obj\$(ProjectName)\ - false - true - $(SolutionDir)$(Configuration)\ - .node - .node - .node - .node - $(ProjectName) - $(OutDir)\$(ProjectName).node - - - - C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\include\node;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\src;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\config;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\openssl\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\uv\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\zlib;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\v8\include;%(AdditionalIncludeDirectories) - /Zc:__cplusplus %(AdditionalOptions) - EnableFastChecks - true - OldStyle - 4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings) - false - false - true - false - Disabled - NotUsing - NODE_GYP_MODULE_NAME=binding;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;V8_DEPRECATION_WARNINGS;V8_IMMINENT_DEPRECATION_WARNINGS;_GLIBCXX_USE_CXX11_ABI=1;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";DEBUG;_DEBUG;V8_ENABLE_CHECKS;%(PreprocessorDefinitions) - MultiThreadedDebug - true - true - false - Level3 - true - - - /LTCG:INCREMENTAL %(AdditionalOptions) - - - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;DelayImp.lib;"C:\\Users\\cardj\\AppData\\Local\\node-gyp\\Cache\\16.13.1\\x64\\node.lib" - /LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions) - node.exe;%(DelayLoadDLLs) - true - true - true - $(OutDir)$(ProjectName).node - true - .node - MachineX64 - - - C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\include\node;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\src;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\config;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\openssl\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\uv\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\zlib;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\v8\include;%(AdditionalIncludeDirectories) - NODE_GYP_MODULE_NAME=binding;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;V8_DEPRECATION_WARNINGS;V8_IMMINENT_DEPRECATION_WARNINGS;_GLIBCXX_USE_CXX11_ABI=1;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";DEBUG;_DEBUG;V8_ENABLE_CHECKS;%(PreprocessorDefinitions);%(PreprocessorDefinitions) - - - - - C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\include\node;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\src;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\config;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\openssl\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\uv\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\zlib;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\v8\include;%(AdditionalIncludeDirectories) - /Zc:__cplusplus %(AdditionalOptions) - true - OldStyle - 4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings) - false - Speed - true - AnySuitable - true - true - true - Full - NotUsing - NODE_GYP_MODULE_NAME=binding;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;V8_DEPRECATION_WARNINGS;V8_IMMINENT_DEPRECATION_WARNINGS;_GLIBCXX_USE_CXX11_ABI=1;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";%(PreprocessorDefinitions) - MultiThreaded - false - true - true - false - Level3 - true - - - /LTCG:INCREMENTAL %(AdditionalOptions) - - - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;DelayImp.lib;"C:\\Users\\cardj\\AppData\\Local\\node-gyp\\Cache\\16.13.1\\x64\\node.lib" - /LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions) - node.exe;%(DelayLoadDLLs) - true - true - true - $(OutDir)$(ProjectName).node - true - .node - MachineX64 - - - C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\include\node;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\src;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\config;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\openssl\openssl\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\uv\include;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\zlib;C:\Users\cardj\AppData\Local\node-gyp\Cache\16.13.1\deps\v8\include;%(AdditionalIncludeDirectories) - NODE_GYP_MODULE_NAME=binding;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;V8_DEPRECATION_WARNINGS;V8_IMMINENT_DEPRECATION_WARNINGS;_GLIBCXX_USE_CXX11_ABI=1;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";%(PreprocessorDefinitions);%(PreprocessorDefinitions) - - - - - - - - $(IntDir)\src\binding.obj - - - - - - - diff --git a/client/build/binding.vcxproj.filters b/client/build/binding.vcxproj.filters deleted file mode 100644 index 4a8b3d9..0000000 --- a/client/build/binding.vcxproj.filters +++ /dev/null @@ -1,58 +0,0 @@ - - - - - {739DB09A-CC57-A953-A6CF-F64FA08E4FA7} - - - {8CDEE807-BC53-E450-C8B8-4DEBB66742D4} - - - {7B735499-E5DD-1C2B-6C26-70023832A1CF} - - - {E9F714C1-DA89-54E2-60CF-39FEB20BF756} - - - {2FED1623-A556-91A0-589D-0214C37A7125} - - - {F852EB63-437C-846A-220F-8D9ED6DAEC1D} - - - {D51E5808-912B-5C70-4BB7-475D1DBFA067} - - - {741E0E76-39B2-B1AB-9FA1-F1A20B16F295} - - - {56DF7A98-063D-FB9D-485C-089023B4C16A} - - - {741E0E76-39B2-B1AB-9FA1-F1A20B16F295} - - - {56DF7A98-063D-FB9D-485C-089023B4C16A} - - - {77348C0E-2034-7791-74D5-63C077DF5A3B} - - - {8CDEE807-BC53-E450-C8B8-4DEBB66742D4} - - - {739DB09A-CC57-A953-A6CF-F64FA08E4FA7} - - - - - ..\src - - - C:\Users\cardj\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src - - - .. - - - diff --git a/client/build/config.gypi b/client/build/config.gypi deleted file mode 100644 index 41cb2bf..0000000 --- a/client/build/config.gypi +++ /dev/null @@ -1,360 +0,0 @@ -# Do not edit. File was generated by node-gyp's "configure" step -{ - "target_defaults": { - "cflags": [], - "default_configuration": "Release", - "defines": [], - "include_dirs": [], - "libraries": [], - "msbuild_toolset": "v142", - "msvs_windows_target_platform_version": "10.0.19041.0" - }, - "variables": { - "asan": 0, - "coverage": "false", - "dcheck_always_on": 0, - "debug_nghttp2": "false", - "debug_node": "false", - "enable_lto": "false", - "enable_pgo_generate": "false", - "enable_pgo_use": "false", - "error_on_warn": "false", - "force_dynamic_crt": 0, - "host_arch": "x64", - "icu_data_in": "..\\..\\deps\\icu-tmp\\icudt69l.dat", - "icu_endianness": "l", - "icu_gyp_path": "tools/icu/icu-generic.gyp", - "icu_path": "deps/icu-small", - "icu_small": "false", - "icu_ver_major": "69", - "is_debug": 0, - "llvm_version": "0.0", - "napi_build_version": "8", - "nasm_version": "2.15", - "node_byteorder": "little", - "node_debug_lib": "false", - "node_enable_d8": "false", - "node_install_npm": "true", - "node_library_files": [ - "lib/assert.js", - "lib/async_hooks.js", - "lib/buffer.js", - "lib/child_process.js", - "lib/cluster.js", - "lib/console.js", - "lib/constants.js", - "lib/crypto.js", - "lib/dgram.js", - "lib/diagnostics_channel.js", - "lib/dns.js", - "lib/domain.js", - "lib/events.js", - "lib/fs.js", - "lib/http.js", - "lib/http2.js", - "lib/https.js", - "lib/inspector.js", - "lib/module.js", - "lib/net.js", - "lib/os.js", - "lib/path.js", - "lib/perf_hooks.js", - "lib/process.js", - "lib/punycode.js", - "lib/querystring.js", - "lib/readline.js", - "lib/repl.js", - "lib/stream.js", - "lib/string_decoder.js", - "lib/sys.js", - "lib/timers.js", - "lib/tls.js", - "lib/trace_events.js", - "lib/tty.js", - "lib/url.js", - "lib/util.js", - "lib/v8.js", - "lib/vm.js", - "lib/wasi.js", - "lib/worker_threads.js", - "lib/zlib.js", - "lib/_http_agent.js", - "lib/_http_client.js", - "lib/_http_common.js", - "lib/_http_incoming.js", - "lib/_http_outgoing.js", - "lib/_http_server.js", - "lib/_stream_duplex.js", - "lib/_stream_passthrough.js", - "lib/_stream_readable.js", - "lib/_stream_transform.js", - "lib/_stream_wrap.js", - "lib/_stream_writable.js", - "lib/_tls_common.js", - "lib/_tls_wrap.js", - "lib/assert/strict.js", - "lib/dns/promises.js", - "lib/fs/promises.js", - "lib/internal/abort_controller.js", - "lib/internal/assert.js", - "lib/internal/async_hooks.js", - "lib/internal/blob.js", - "lib/internal/blocklist.js", - "lib/internal/buffer.js", - "lib/internal/child_process.js", - "lib/internal/cli_table.js", - "lib/internal/constants.js", - "lib/internal/dgram.js", - "lib/internal/dtrace.js", - "lib/internal/encoding.js", - "lib/internal/errors.js", - "lib/internal/error_serdes.js", - "lib/internal/event_target.js", - "lib/internal/fixed_queue.js", - "lib/internal/freelist.js", - "lib/internal/freeze_intrinsics.js", - "lib/internal/heap_utils.js", - "lib/internal/histogram.js", - "lib/internal/http.js", - "lib/internal/idna.js", - "lib/internal/inspector_async_hook.js", - "lib/internal/js_stream_socket.js", - "lib/internal/linkedlist.js", - "lib/internal/net.js", - "lib/internal/options.js", - "lib/internal/priority_queue.js", - "lib/internal/querystring.js", - "lib/internal/repl.js", - "lib/internal/socketaddress.js", - "lib/internal/socket_list.js", - "lib/internal/stream_base_commons.js", - "lib/internal/timers.js", - "lib/internal/trace_events_async_hooks.js", - "lib/internal/tty.js", - "lib/internal/url.js", - "lib/internal/util.js", - "lib/internal/v8_prof_polyfill.js", - "lib/internal/v8_prof_processor.js", - "lib/internal/validators.js", - "lib/internal/watchdog.js", - "lib/internal/worker.js", - "lib/internal/assert/assertion_error.js", - "lib/internal/assert/calltracker.js", - "lib/internal/bootstrap/environment.js", - "lib/internal/bootstrap/loaders.js", - "lib/internal/bootstrap/node.js", - "lib/internal/bootstrap/pre_execution.js", - "lib/internal/bootstrap/switches/does_not_own_process_state.js", - "lib/internal/bootstrap/switches/does_own_process_state.js", - "lib/internal/bootstrap/switches/is_main_thread.js", - "lib/internal/bootstrap/switches/is_not_main_thread.js", - "lib/internal/child_process/serialization.js", - "lib/internal/cluster/child.js", - "lib/internal/cluster/primary.js", - "lib/internal/cluster/round_robin_handle.js", - "lib/internal/cluster/shared_handle.js", - "lib/internal/cluster/utils.js", - "lib/internal/cluster/worker.js", - "lib/internal/console/constructor.js", - "lib/internal/console/global.js", - "lib/internal/crypto/aes.js", - "lib/internal/crypto/certificate.js", - "lib/internal/crypto/cipher.js", - "lib/internal/crypto/diffiehellman.js", - "lib/internal/crypto/dsa.js", - "lib/internal/crypto/ec.js", - "lib/internal/crypto/hash.js", - "lib/internal/crypto/hashnames.js", - "lib/internal/crypto/hkdf.js", - "lib/internal/crypto/keygen.js", - "lib/internal/crypto/keys.js", - "lib/internal/crypto/mac.js", - "lib/internal/crypto/pbkdf2.js", - "lib/internal/crypto/random.js", - "lib/internal/crypto/rsa.js", - "lib/internal/crypto/scrypt.js", - "lib/internal/crypto/sig.js", - "lib/internal/crypto/util.js", - "lib/internal/crypto/webcrypto.js", - "lib/internal/crypto/x509.js", - "lib/internal/debugger/inspect.js", - "lib/internal/debugger/inspect_client.js", - "lib/internal/debugger/inspect_repl.js", - "lib/internal/dns/promises.js", - "lib/internal/dns/utils.js", - "lib/internal/fs/dir.js", - "lib/internal/fs/promises.js", - "lib/internal/fs/read_file_context.js", - "lib/internal/fs/rimraf.js", - "lib/internal/fs/streams.js", - "lib/internal/fs/sync_write_stream.js", - "lib/internal/fs/utils.js", - "lib/internal/fs/watchers.js", - "lib/internal/fs/cp/cp-sync.js", - "lib/internal/fs/cp/cp.js", - "lib/internal/http2/compat.js", - "lib/internal/http2/core.js", - "lib/internal/http2/util.js", - "lib/internal/legacy/processbinding.js", - "lib/internal/main/check_syntax.js", - "lib/internal/main/eval_stdin.js", - "lib/internal/main/eval_string.js", - "lib/internal/main/inspect.js", - "lib/internal/main/print_help.js", - "lib/internal/main/prof_process.js", - "lib/internal/main/repl.js", - "lib/internal/main/run_main_module.js", - "lib/internal/main/worker_thread.js", - "lib/internal/modules/package_json_reader.js", - "lib/internal/modules/run_main.js", - "lib/internal/modules/cjs/helpers.js", - "lib/internal/modules/cjs/loader.js", - "lib/internal/modules/esm/create_dynamic_module.js", - "lib/internal/modules/esm/get_format.js", - "lib/internal/modules/esm/get_source.js", - "lib/internal/modules/esm/load.js", - "lib/internal/modules/esm/loader.js", - "lib/internal/modules/esm/module_job.js", - "lib/internal/modules/esm/module_map.js", - "lib/internal/modules/esm/resolve.js", - "lib/internal/modules/esm/translators.js", - "lib/internal/perf/event_loop_delay.js", - "lib/internal/perf/event_loop_utilization.js", - "lib/internal/perf/nodetiming.js", - "lib/internal/perf/observe.js", - "lib/internal/perf/performance.js", - "lib/internal/perf/performance_entry.js", - "lib/internal/perf/timerify.js", - "lib/internal/perf/usertiming.js", - "lib/internal/perf/utils.js", - "lib/internal/per_context/domexception.js", - "lib/internal/per_context/messageport.js", - "lib/internal/per_context/primordials.js", - "lib/internal/policy/manifest.js", - "lib/internal/policy/sri.js", - "lib/internal/process/esm_loader.js", - "lib/internal/process/execution.js", - "lib/internal/process/per_thread.js", - "lib/internal/process/policy.js", - "lib/internal/process/promises.js", - "lib/internal/process/report.js", - "lib/internal/process/signal.js", - "lib/internal/process/task_queues.js", - "lib/internal/process/warning.js", - "lib/internal/process/worker_thread_only.js", - "lib/internal/readline/callbacks.js", - "lib/internal/readline/emitKeypressEvents.js", - "lib/internal/readline/utils.js", - "lib/internal/repl/await.js", - "lib/internal/repl/history.js", - "lib/internal/repl/utils.js", - "lib/internal/source_map/prepare_stack_trace.js", - "lib/internal/source_map/source_map.js", - "lib/internal/source_map/source_map_cache.js", - "lib/internal/streams/add-abort-signal.js", - "lib/internal/streams/buffer_list.js", - "lib/internal/streams/compose.js", - "lib/internal/streams/destroy.js", - "lib/internal/streams/duplex.js", - "lib/internal/streams/duplexify.js", - "lib/internal/streams/end-of-stream.js", - "lib/internal/streams/from.js", - "lib/internal/streams/lazy_transform.js", - "lib/internal/streams/legacy.js", - "lib/internal/streams/passthrough.js", - "lib/internal/streams/pipeline.js", - "lib/internal/streams/readable.js", - "lib/internal/streams/state.js", - "lib/internal/streams/transform.js", - "lib/internal/streams/utils.js", - "lib/internal/streams/writable.js", - "lib/internal/test/binding.js", - "lib/internal/test/transfer.js", - "lib/internal/tls/parse-cert-string.js", - "lib/internal/tls/secure-context.js", - "lib/internal/tls/secure-pair.js", - "lib/internal/util/comparisons.js", - "lib/internal/util/debuglog.js", - "lib/internal/util/inspect.js", - "lib/internal/util/inspector.js", - "lib/internal/util/iterable_weak_map.js", - "lib/internal/util/types.js", - "lib/internal/vm/module.js", - "lib/internal/webstreams/encoding.js", - "lib/internal/webstreams/queuingstrategies.js", - "lib/internal/webstreams/readablestream.js", - "lib/internal/webstreams/transfer.js", - "lib/internal/webstreams/transformstream.js", - "lib/internal/webstreams/util.js", - "lib/internal/webstreams/writablestream.js", - "lib/internal/worker/io.js", - "lib/internal/worker/js_transferable.js", - "lib/path/posix.js", - "lib/path/win32.js", - "lib/stream/consumers.js", - "lib/stream/promises.js", - "lib/stream/web.js", - "lib/timers/promises.js", - "lib/util/types.js" - ], - "node_module_version": 93, - "node_no_browser_globals": "false", - "node_prefix": "/usr/local", - "node_release_urlbase": "https://nodejs.org/download/release/", - "node_shared": "false", - "node_shared_brotli": "false", - "node_shared_cares": "false", - "node_shared_http_parser": "false", - "node_shared_libuv": "false", - "node_shared_nghttp2": "false", - "node_shared_nghttp3": "false", - "node_shared_ngtcp2": "false", - "node_shared_openssl": "false", - "node_shared_zlib": "false", - "node_tag": "", - "node_target_type": "executable", - "node_use_bundled_v8": "true", - "node_use_dtrace": "false", - "node_use_etw": "true", - "node_use_node_code_cache": "true", - "node_use_node_snapshot": "true", - "node_use_openssl": "true", - "node_use_v8_platform": "true", - "node_with_ltcg": "true", - "node_without_node_options": "false", - "openssl_fips": "", - "openssl_is_fips": "false", - "openssl_quic": "true", - "ossfuzz": "false", - "shlib_suffix": "so.93", - "target_arch": "x64", - "v8_enable_31bit_smis_on_64bit_arch": 0, - "v8_enable_gdbjit": 0, - "v8_enable_i18n_support": 1, - "v8_enable_inspector": 1, - "v8_enable_lite_mode": 0, - "v8_enable_object_print": 1, - "v8_enable_pointer_compression": 0, - "v8_enable_webassembly": 1, - "v8_no_strict_aliasing": 1, - "v8_optimized_debug": 1, - "v8_promise_internal_field_count": 1, - "v8_random_seed": 0, - "v8_trace_maps": 0, - "v8_use_siphash": 1, - "want_separate_host_toolset": 0, - "nodedir": "C:\\Users\\cardj\\AppData\\Local\\node-gyp\\Cache\\16.13.1", - "standalone_static_library": 1, - "msbuild_path": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\MSBuild\\Current\\Bin\\MSBuild.exe", - "cache": "C:\\Users\\cardj\\AppData\\Local\\npm-cache", - "globalconfig": "C:\\Users\\cardj\\AppData\\Roaming\\npm\\etc\\npmrc", - "global_prefix": "C:\\Users\\cardj\\AppData\\Roaming\\npm", - "init_module": "C:\\Users\\cardj\\.npm-init.js", - "local_prefix": "C:\\data\\code\\sockeye\\client", - "metrics_registry": "https://registry.npmjs.org/", - "node_gyp": "C:\\Users\\cardj\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js", - "prefix": "C:\\Users\\cardj\\AppData\\Roaming\\npm", - "userconfig": "C:\\Users\\cardj\\.npmrc", - "user_agent": "npm/8.3.0 node/v16.13.1 win32 x64 workspaces/false" - } -} diff --git a/client/cypress.json b/client/cypress.json deleted file mode 100644 index 1e80b2b..0000000 --- a/client/cypress.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "pluginsFile": "tests/e2e/plugins/index.js", - "baseUrl": "http://localhost:7676", - "defaultCommandTimeout":10000, - "env": { - "adminusername": "john", - "adminpassword": "abraxis" - } -} \ No newline at end of file diff --git a/client/devdocs/todo.txt b/client/devdocs/todo.txt deleted file mode 100644 index c5d3833..0000000 --- a/client/devdocs/todo.txt +++ /dev/null @@ -1 +0,0 @@ -test new svn \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json deleted file mode 100644 index 47502b8..0000000 --- a/client/package-lock.json +++ /dev/null @@ -1,13748 +0,0 @@ -{ - "name": "sockeye", - "version": "8.0.28", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.1.tgz", - "integrity": "sha512-Aolwjd7HSC2PyY0fDj/wA/EimQT4HfEnFYNp5s9CQlrdhyvWTtvZ5YzrUPu6R6/1jKiUlxu8bUhkdSnKHNAHMA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true - }, - "@babel/core": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", - "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.5", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.5", - "@babel/types": "^7.18.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", - "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" - } - }, - "@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", - "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz", - "integrity": "sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.16.7" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", - "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz", - "integrity": "sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz", - "integrity": "sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", - "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", - "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.5", - "@babel/types": "^7.18.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", - "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@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-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==", - "requires": { - "@fortawesome/fontawesome-common-types": "^0.3.0" - }, - "dependencies": { - "@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==" - } - } - }, - "@fortawesome/free-regular-svg-icons": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz", - "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==", - "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - } - }, - "@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==", - "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - } - }, - "@fortawesome/vue-fontawesome": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.7.tgz", - "integrity": "sha512-D1a5FJQeiCFG5a29Re5uNAUAI8SdkCPZlvf0EyfEy9XBVB7tEsL/tfXO6ToXoEOE8CAzJCwuM/PXSCHusXT5/Q==" - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", - "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", - "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "error-stack-parser": "^2.0.6", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@soda/get-current-script": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", - "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/chart.js": { - "version": "2.9.35", - "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.35.tgz", - "integrity": "sha512-MWx/zZlh4wHBbM4Tm4YsZyYGb1/LkTiFLFwX/FXb0EJCvXX2xWTRHwlJ2RAAEXWxLrOdaAWP8vFtJXny+4CpEw==", - "requires": { - "moment": "^2.10.2" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/node": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/tapable": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "dev": true - }, - "@types/uglify-js": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", - "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@types/webpack": { - "version": "4.41.32", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", - "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@types/webpack-dev-server": { - "version": "3.11.6", - "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz", - "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==", - "dev": true, - "requires": { - "@types/connect-history-api-fallback": "*", - "@types/express": "*", - "@types/serve-static": "*", - "@types/webpack": "^4", - "http-proxy-middleware": "^1.0.0" - } - }, - "@types/webpack-sources": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", - "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", - "dev": true - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", - "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", - "dev": true - } - } - }, - "@vue/babel-preset-app": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.15.tgz", - "integrity": "sha512-J+YttzvwRfV1BPczf8r3qCevznYk+jh531agVF+5EYlHF4Sgh/cGXTz9qkkiux3LQgvhEGXgmCteg1n38WuuKg==", - "dev": true, - "requires": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - } - }, - "@vue/babel-preset-jsx": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", - "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", - "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", - "@vue/babel-sugar-functional-vue": "^1.2.2", - "@vue/babel-sugar-inject-h": "^1.2.2", - "@vue/babel-sugar-v-model": "^1.2.3", - "@vue/babel-sugar-v-on": "^1.2.3" - } - }, - "@vue/babel-sugar-composition-api-inject-h": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", - "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-composition-api-render-instance": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", - "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", - "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-inject-h": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", - "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-v-model": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", - "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", - "dev": true - } - } - }, - "@vue/babel-sugar-v-on": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", - "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "@vue/cli-overlay": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.15.tgz", - "integrity": "sha512-0zI0kANAVmjFO2LWGUIzdGPMeE3+9k+KeRDXsUqB30YfRF7abjfiiRPq5BU9pOzlJbVdpRkisschBrvdJqDuDg==", - "dev": true - }, - "@vue/cli-plugin-babel": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.15.tgz", - "integrity": "sha512-hBLrwYfFkHldEe34op/YNgPhpOWI5n5DB2Qt9I/1Epeif4M4iFaayrgjvOR9AVM6WbD3Yx7WCFszYpWrQZpBzQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.0", - "@vue/babel-preset-app": "^4.5.15", - "@vue/cli-shared-utils": "^4.5.15", - "babel-loader": "^8.1.0", - "cache-loader": "^4.1.0", - "thread-loader": "^2.1.3", - "webpack": "^4.0.0" - } - }, - "@vue/cli-plugin-eslint": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.15.tgz", - "integrity": "sha512-/2Fl6wY/5bz3HD035oSnFRMsKNxDxU396KqBdpCQdwdvqk4mm6JAbXqihpcBRTNPeTO6w+LwGe6FE56PVbJdbg==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.15", - "eslint-loader": "^2.2.1", - "globby": "^9.2.0", - "inquirer": "^7.1.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - } - }, - "@vue/cli-plugin-pwa": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.15.tgz", - "integrity": "sha512-yQzsspaIkjeQyN6btF8ATgbJFU023q1HC8uUpmiBa4QE9EyBlR8fSrKFhcJ0EmT6KnU7PMwlnOJ/OqjguFnufA==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.15", - "webpack": "^4.0.0", - "workbox-webpack-plugin": "^4.3.1" - } - }, - "@vue/cli-plugin-router": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.15.tgz", - "integrity": "sha512-q7Y6kP9b3k55Ca2j59xJ7XPA6x+iSRB+N4ac0ZbcL1TbInVQ4j5wCzyE+uqid40hLy4fUdlpl4X9fHJEwuVxPA==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.15" - } - }, - "@vue/cli-plugin-vuex": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.15.tgz", - "integrity": "sha512-fqap+4HN+w+InDxlA3hZTOGE0tzBTgXhKLoDydhywqgmhQ1D9JA6Feh94ze6tG8DsWX58/ujYUqA8jAz17FJtg==", - "dev": true - }, - "@vue/cli-service": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.15.tgz", - "integrity": "sha512-sFWnLYVCn4zRfu45IcsIE9eXM0YpDV3S11vlM2/DVbIPAGoYo5ySpSof6aHcIvkeGsIsrHFpPHzNvDZ/efs7jA==", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@soda/get-current-script": "^1.0.0", - "@types/minimist": "^1.2.0", - "@types/webpack": "^4.0.0", - "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.15", - "@vue/cli-plugin-router": "^4.5.15", - "@vue/cli-plugin-vuex": "^4.5.15", - "@vue/cli-shared-utils": "^4.5.15", - "@vue/component-compiler-utils": "^3.1.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.4.0", - "acorn-walk": "^7.1.1", - "address": "^1.1.2", - "autoprefixer": "^9.8.6", - "browserslist": "^4.12.0", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.3.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.5.3", - "cssnano": "^4.1.10", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.5", - "pnp-webpack-plugin": "^1.6.4", - "portfinder": "^1.0.26", - "postcss-loader": "^3.0.0", - "ssri": "^8.0.1", - "terser-webpack-plugin": "^1.4.4", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.9.2", - "vue-loader-v16": "npm:vue-loader@^16.1.0", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.8.0", - "webpack-chain": "^6.4.0", - "webpack-dev-server": "^3.11.0", - "webpack-merge": "^4.2.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } - } - } - }, - "@vue/cli-shared-utils": { - "version": "4.5.15", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.15.tgz", - "integrity": "sha512-SKaej9hHzzjKSOw1NlFmc6BSE0vcqUQMQiv1cxQ2DhVyy4QxZXBmzmiLBUBe+hYZZs1neXW7n//udeN9bCAY+Q==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "@vue/eslint-config-prettier": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz", - "integrity": "sha512-wFQmv45c3ige5EA+ngijq40YpVcIkAy0Lihupnsnd1Dao5CBbPyfCzqtejFLZX1EwH/kCJdpz3t6s+5wd3+KxQ==", - "dev": true, - "requires": { - "eslint-config-prettier": "^6.0.0" - } - }, - "@vue/preload-webpack-plugin": { - "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 - }, - "@vue/test-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.3.0.tgz", - "integrity": "sha512-Xk2Xiyj2k5dFb8eYUKkcN9PzqZSppTlx7LaQWBbdA8tqh3jHr/KHX2/YLhNFc/xwDrgeLybqd+4ZCPJSGPIqeA==", - "dev": true, - "requires": { - "dom-event-types": "^1.0.0", - "lodash": "^4.17.15", - "pretty": "^2.0.0" - } - }, - "@vue/web-component-wrapper": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", - "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", - "dev": true - }, - "@webassemblyjs/ast": { - "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", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@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 - }, - "@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 - }, - "@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 - }, - "@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" - } - }, - "@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 - }, - "@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" - } - }, - "@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 - }, - "@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", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "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" - } - }, - "@webassemblyjs/leb128": { - "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" - } - }, - "@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 - }, - "@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", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "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", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "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", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "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", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "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", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "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", - "@xtuc/long": "4.2.2" - } - }, - "@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 - }, - "@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 - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "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 - }, - "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 - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "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 - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "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", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "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 - } - } - }, - "assert": { - "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" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "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 - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "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 - }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "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" - } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "dev": true, - "requires": { - "babylon": "^6.18.0" - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.0.tgz", - "integrity": "sha512-Hcrgnmkf+4JTj73GbK3bBhlVPiLL47owUAnoJIf69Hakl3q+KfodbDXiZWGMM7iqCZTxCG3Z2VRfPNYES4rXqQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.20.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - } - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "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" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base": { - "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", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "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 - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": 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, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "dev": true, - "requires": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "dependencies": { - "debug": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "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", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "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", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "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", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "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", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "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" - } - }, - "browserify-sign": { - "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", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "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", - "util-deprecate": "^1.0.1" - } - }, - "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 - } - } - }, - "browserify-zlib": { - "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" - } - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } - } - }, - "buffer": { - "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", - "isarray": "^1.0.0" - } - }, - "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 - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", - "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "dev": true - }, - "cacache": { - "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", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "ssri": { - "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" - } - } - } - }, - "cache-base": { - "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", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", - "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", - "dev": true, - "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001339", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001339.tgz", - "integrity": "sha512-Es8PiVqCe+uXdms0Gu5xP5PF2bxLR7OBp3wUzUnuO7OHzhOfCyg3hdiGWVPVxhiuniOzng+hTc1u3fEQ0TlkSQ==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chart.js": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", - "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "chartjs-adapter-luxon": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/chartjs-adapter-luxon/-/chartjs-adapter-luxon-0.2.2.tgz", - "integrity": "sha512-LIZnrTj4FewFWnuyqbkdU8JjsZc0KrstFOIcNwDDpnMlVofCOkV9w4WMaa8A9fgpTsFMmqKAroFYa8NN5uCKWQ==" - }, - "chartjs-color": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", - "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", - "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "requires": { - "color-name": "^1.0.0" - } - }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": 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, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "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 - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "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" - } - }, - "class-utils": { - "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", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "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", - "kind-of": "^5.0.0" - } - }, - "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 - } - } - }, - "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - } - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-string": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", - "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "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 - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "debug": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "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", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "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 - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "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 - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "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", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dev": true, - "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "find-cache-dir": { - "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", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "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" - } - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "locate-path": { - "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" - } - }, - "make-dir": { - "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" - } - }, - "p-locate": { - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "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" - } - }, - "schema-utils": { - "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", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "core-js": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.1.tgz", - "integrity": "sha512-wfMYHWi1WQjpgZNC9kAlN4ut04TM9fUTdi7CqIoTVM7yaiOUQTklOzfb+oWH3r9edQcT3F887swuVmxrV+CC8w==" - }, - "core-js-compat": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.2.tgz", - "integrity": "sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==", - "dev": true, - "requires": { - "browserslist": "^4.19.1", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "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" - }, - "dependencies": { - "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 - } - } - }, - "create-hash": { - "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", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "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", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "crypto-browserify": { - "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", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decache": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.1.tgz", - "integrity": "sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==", - "dev": true, - "requires": { - "callsite": "^1.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "default-gateway": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", - "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", - "dev": true, - "requires": { - "execa": "^3.3.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "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" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "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" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "diffie-hellman": { - "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", - "randombytes": "^2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-event-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", - "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", - "dev": true - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "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 - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "dompurify": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.8.tgz", - "integrity": "sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==" - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - }, - "dependencies": { - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - } - } - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexify": { - "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", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "easy-stack": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", - "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "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 - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", - "dev": true - }, - "elliptic": { - "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", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "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 - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "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", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "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" - } - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "errno": { - "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" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", - "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", - "dev": true, - "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-vue": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", - "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", - "dev": true, - "requires": { - "natural-compare": "^1.4.0", - "semver": "^5.6.0", - "vue-eslint-parser": "^7.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "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" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "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" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "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", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "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 - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", - "dev": true, - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "dev": true - }, - "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 - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "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", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fibers": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fibers/-/fibers-4.0.3.tgz", - "integrity": "sha512-MW5VrDtTOLpKK7lzw4qD7Z9tXaAhdOmOED5RHzg3+HjUk+ibkjVW0Py2ERtdqgTXaerLkVkBy2AEmJiT6RMyzg==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "file-uri-to-path": { - "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, - "optional": true - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "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" - } - }, - "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", - "dev": true - }, - "fontsource-roboto": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/fontsource-roboto/-/fontsource-roboto-3.1.5.tgz", - "integrity": "sha512-DXSE7/F/6AsKcRJX4VSi3bGrEx0xiaqieeV2W7UH9JFk6tt1U86NoWwy2iNPoUzGtEyQsasilwhTrMJm7wM+Ew==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "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 - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-markdown-css": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/github-markdown-css/-/github-markdown-css-4.0.0.tgz", - "integrity": "sha512-mH0bcIKv4XAN0mQVokfTdKo2OD5K8WJE9+lbMdM32/q0Ie5tXgVN/2o+zvToRMxSTUuiTRcLg5hzkFfOyBYreg==" - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "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", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "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", - "util-deprecate": "^1.0.1" - } - }, - "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 - } - } - }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, - "hash.js": { - "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" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - } - }, - "html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "dev": true - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", - "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "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" - } - }, - "locate-path": { - "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" - } - }, - "p-locate": { - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "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" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "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" - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "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, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "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" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-descriptor": { - "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", - "kind-of": "^6.0.2" - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "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" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "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" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "dev": true - }, - "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 - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true - }, - "js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", - "dev": true, - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" - } - }, - "js-message": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", - "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", - "dev": true - }, - "js-queue": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", - "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", - "dev": true, - "requires": { - "easy-stack": "^1.0.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "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 - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "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 - }, - "launch-editor": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.3.0.tgz", - "integrity": "sha512-3QrsCXejlWYHjBPFXTyGNhPj4rrQdB+5+r5r3wArpLH201aR+nWUgw/zKKkTmilCfY/sv6u8qo98pNvtg8LUTA==", - "dev": true, - "requires": { - "picocolors": "^1.0.0", - "shell-quote": "^1.6.1" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } - } - }, - "launch-editor-middleware": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.3.0.tgz", - "integrity": "sha512-GJR64trLdFFwCoL9DMn/d1SZX0OzTDPixu4mcfWTShQ4tIqCHCGvlg9fOEYQXyBlrSMQwylsJfUWncheShfV2w==", - "dev": true, - "requires": { - "launch-editor": "^2.3.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "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 - }, - "loader-utils": { - "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", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "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" - } - } - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.transform": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", - "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "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" - } - }, - "luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==" - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.9.tgz", - "integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==" - }, - "md5.js": { - "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", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "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", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "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" - }, - "dependencies": { - "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 - } - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, - "requires": { - "mime-db": "1.51.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "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", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "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 - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "mississippi": { - "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", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "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" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - }, - "monaco-editor": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.30.1.tgz", - "integrity": "sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg==" - }, - "monaco-editor-webpack-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-6.0.0.tgz", - "integrity": "sha512-vC886Mzpd2AkSM35XLkfQMjH+Ohz6RISVwhAejDUzZDheJAiz6G34lky1vyO8fZ702v7IrcKmsGwL1rRFnwvUA==", - "requires": { - "loader-utils": "^2.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, - "nanomatch": { - "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", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "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 - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-ipc": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", - "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" - } - }, - "node-libs-browser": { - "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", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "null-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", - "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "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", - "kind-of": "^5.0.0" - }, - "dependencies": { - "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 - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "papaparse": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", - "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" - }, - "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", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-asn1": { - "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", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "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 - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "pbkdf2": { - "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", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "pnp-webpack-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", - "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", - "dev": true, - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "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", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", - "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "dev": true, - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "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", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "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 - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "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", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "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" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "randombytes": { - "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" - } - }, - "randomfill": { - "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" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dev": true, - "requires": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "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" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "register-service-worker": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz", - "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==" - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "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 - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", - "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", - "dev": true, - "requires": { - "is-core-module": "^2.8.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - } - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "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 - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "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" - } - }, - "ripemd160": { - "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" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.52.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.3.tgz", - "integrity": "sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "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" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serialize-javascript": { - "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" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "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" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "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", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "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" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shvl": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", - "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true - }, - "signature_pad": { - "version": "3.0.0-beta.4", - "resolved": "https://registry.npmjs.org/signature_pad/-/signature_pad-3.0.0-beta.4.tgz", - "integrity": "sha512-cOf2NhVuTiuNqe2X/ycEmizvCDXk0DoemhsEpnkcGnA4kS5iJYTCqZ9As7tFBbsch45Q1EdX61833+6sjJ8rrw==" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "snapdragon": { - "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", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "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", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "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 - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "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", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "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" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, - "sockjs-client": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz", - "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.3" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", - "dev": true - }, - "source-map-resolve": { - "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", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "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 - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "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", - "util-deprecate": "^1.0.1" - } - } - } - }, - "split-string": { - "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" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "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", - "kind-of": "^5.0.0" - } - }, - "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 - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stream-browserify": { - "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" - } - }, - "stream-each": { - "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" - } - }, - "stream-http": { - "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", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "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 - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "dev": true, - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - } - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - } - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "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", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "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 - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "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" - } - } - } - }, - "terser-webpack-plugin": { - "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", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "find-cache-dir": { - "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", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "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" - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "locate-path": { - "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" - } - }, - "make-dir": { - "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" - } - }, - "p-locate": { - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "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" - } - }, - "schema-utils": { - "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", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", - "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "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" - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "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" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "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", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "union-value": { - "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", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz", - "integrity": "sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "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 - }, - "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" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - } - } - }, - "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 - }, - "vue": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", - "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" - }, - "vue-chartjs": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-3.5.1.tgz", - "integrity": "sha512-foocQbJ7FtveICxb4EV5QuVpo6d8CmZFmAopBppDIGKY+esJV8IJgwmEW0RexQhxqXaL/E1xNURsgFFYyKzS/g==", - "requires": { - "@types/chart.js": "^2.7.55" - } - }, - "vue-cli-plugin-vuetify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.5.0.tgz", - "integrity": "sha512-wc8/dTJp+C5ik+xi9DdakOT4n14sRPb4Xb+L8ukpsb4r7K6lzgPriLF7JrnIi9cYJwqU29UaT0f7xx5ixDdUdg==", - "dev": true, - "requires": { - "null-loader": "^4.0.1", - "semver": "^7.1.2", - "shelljs": "^0.8.3" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "vue-currency-input": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/vue-currency-input/-/vue-currency-input-1.22.3.tgz", - "integrity": "sha512-vrOaaiCSG8Hh7Fw7CYROIymFvVprWKaze3h67sihqJ4QAI9F+YElTQYv0fJwFK1NkKUS8H/MvAL0mwg9qrUfgg==" - }, - "vue-eslint-parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^6.3.0" - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-loader": { - "version": "15.9.8", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", - "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - } - } - }, - "vue-router": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.4.tgz", - "integrity": "sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ==" - }, - "vue-signature": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/vue-signature/-/vue-signature-2.5.5.tgz", - "integrity": "sha512-dZaDyIW+69mZMRogkDwZv/5xyJCWOI/d3yYpfMLLnGJgh32FPohG5eAx/IGTKgAtzqdz+07a70qQiK89vSZVWg==", - "requires": { - "signature_pad": "^3.0.0-beta.3", - "vue": "^2.5.9" - } - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - } - } - }, - "vue-template-compiler": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", - "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuetify": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.6.tgz", - "integrity": "sha512-H4KtxDFmDN8QiTRiGfBySyjMhVaHAJTKB0llGGKZT5jKxtnx9gvEtMWXKtVuRP0NJJP0H6xBPJHNOH7nT18qiQ==" - }, - "vuetify-loader": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.3.tgz", - "integrity": "sha512-1Kt6Rfvuw3i9BBlxC9WTMnU3WEU7IBWQmDX+fYGAVGpzWCX7oHythUIwPCZGShHSYcPMKSDbXTPP8UvT5RNw8Q==", - "dev": true, - "requires": { - "decache": "^4.6.0", - "file-loader": "^6.2.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" - }, - "vuex-persistedstate": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-2.7.1.tgz", - "integrity": "sha512-Ktvp6Bt6ApYj35MuxTClu+9Lpukcgl3Z/0o4PU12+Z4jU6lyOMzos0k6zGT5xrukAkGM1VV3EYNwz1TnHPhgFA==", - "requires": { - "deepmerge": "^4.2.2", - "shvl": "^2.0.0" - } - }, - "watchpack": { - "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", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "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" - }, - "dependencies": { - "anymatch": { - "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", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "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", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "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", - "nan": "^2.12.1" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "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", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "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", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "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 - }, - "eslint-scope": { - "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" - } - }, - "schema-utils": { - "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", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", - "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "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 - } - } - }, - "webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "dependencies": { - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "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" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "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" - } - }, - "p-locate": { - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "requires": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "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" - } - }, - "fsevents": { - "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", - "nan": "^2.12.1" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "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" - } - }, - "p-locate": { - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "readdirp": { - "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, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "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", - "ajv-keywords": "^3.1.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "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" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", - "common-tags": "^1.8.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.3", - "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==", - "dev": true - }, - "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", - "dev": true, - "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" - } - }, - "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==", - "dev": true - }, - "workbox-webpack-plugin": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", - "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "json-stable-stringify": "^1.0.1", - "workbox-build": "^4.3.1" - } - }, - "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", - "dev": true, - "requires": { - "workbox-core": "^4.3.1" - } - }, - "worker-farm": { - "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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "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 - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - } - } -} diff --git a/client/package.json b/client/package.json deleted file mode 100644 index 287f04d..0000000 --- a/client/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "name": "sockeye", - "version": "8.0.28", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint", - "myLint": "npm run lint" - }, - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^1.3.0", - "@fortawesome/free-regular-svg-icons": "^5.15.4", - "@fortawesome/free-solid-svg-icons": "^5.15.4", - "@fortawesome/vue-fontawesome": "^2.0.7", - "chart.js": "^2.9.4", - "chartjs-adapter-luxon": "^0.2.2", - "core-js": "^3.23.1", - "dompurify": "^2.3.8", - "fontsource-roboto": "^3.1.5", - "github-markdown-css": "^4.0.0", - "jwt-decode": "^3.1.2", - "luxon": "^1.28.0", - "marked": "^1.2.9", - "monaco-editor": "^0.30.1", - "monaco-editor-webpack-plugin": "^6.0.0", - "nprogress": "^0.2.0", - "papaparse": "^5.3.2", - "register-service-worker": "^1.7.2", - "vue": "^2.6.14", - "vue-chartjs": "^3.5.1", - "vue-currency-input": "1.22.3", - "vue-router": "^3.5.4", - "vue-signature": "^2.5.5", - "vuetify": "^2.6.6", - "vuex": "^3.6.2", - "vuex-persistedstate": "^2.7.1" - }, - "devDependencies": { - "@babel/core": "^7.18.5", - "@vue/cli-plugin-babel": "^4.5.15", - "@vue/cli-plugin-eslint": "^4.5.15", - "@vue/cli-plugin-pwa": "^4.5.15", - "@vue/cli-plugin-router": "^4.5.15", - "@vue/cli-plugin-vuex": "^4.5.15", - "@vue/cli-service": "^4.5.15", - "@vue/eslint-config-prettier": "^6.0.0", - "@vue/test-utils": "^1.3.0", - "babel-core": "6.26.3", - "babel-eslint": "^10.1.0", - "deepmerge": "^4.2.2", - "eslint": "^6.8.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-vue": "^6.2.2", - "fibers": "^4.0.3", - "prettier": "^1.19.1", - "sass": "^1.52.3", - "sass-loader": "^8.0.2", - "vue-cli-plugin-vuetify": "^2.5.0", - "vue-template-compiler": "^2.6.14", - "vuetify-loader": "^1.7.3", - "webpack": "^4.46.0", - "webpack-cli": "^3.3.12" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "plugin:vue/recommended", - "eslint:recommended", - "@vue/prettier" - ], - "parserOptions": { - "parser": "babel-eslint" - } - }, - "postcss": { - "plugins": { - "autoprefixer": {} - } - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead" - ] -} diff --git a/client/public/browserconfig.xml b/client/public/browserconfig.xml deleted file mode 100644 index 2a929bc..0000000 --- a/client/public/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #ffc40d - - - diff --git a/client/public/favicon.ico b/client/public/favicon.ico deleted file mode 100644 index 369e8bf02ba67d7e88ad061ffe9cc3fc4057a65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113054 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:KL*PT0ne&)Dm4 z9HLHhS5WUd zdOou*?qe1v{V+y6PCvYv$Uif2>4{T1fq8#JW?FV{W@HTq`={SkAw6+g&R%Zq7j3Z~ zuN=1FukEu>zxZ|j%m3T2{h#sahQ2^u-51OwUk5h$l*Qch_97S&IUoAgI9~u4FS;JLTnXz)tPNW^E&e-3FI%3wFE;J9Ze`UX84tB0q2*z5pDeAs2}SE+GF`Y&3dc z%-Ab7VZsfk4@Qo}PZ-VX;Wuo^&}-<28+`5>vBh(q|p))#2dZ}068;NtGW7@Yrhg?%b)$pO(zH{iEQ%(w?oq z)W-)s><6cFoICih!t0ca^HT$-nPKACOIL^B#fVFL*PZj=;?Q%6z9sG3zGIKhJ!m_3 zT(i$U`}V(h;QmTJ{A;^-@uscYSZxcRt+F|fpSB4zs;wUwf9F2cR^IKjbsuonCeOHJ zn?C-O^CblTx03(*3v7rZUcCCLJ-_CVO?|i0#$c~UzEEicX1-`0Ml$bm6t(WdsfC|F z4-I_$(h+l*VM7hfY0UpMpxp2kL`Bqey6QTn+A(E(A_Xk&AP5r!R>^cps56?vq0 ziHFzY6RaTq-GqOz$;#Uw!tXweoSa66nE%%Kgu@8>tG-~+1s5NT1Sc3f=CX|+e+}73 z7mQED3c?LW5-*G&|0&zA+lUd@d4C;$;TnF#b#%j3Fh|7~$UW<^V?Vc{_z+`83vavu zFX&ST>`b4=4_V;FguWQskAm8{K z`b=;1OfR-~M5enT(>>8Y72Pkm&-Uqejr<1kj!o~_>8y2Udw1d*$$9&ZClfk>I_jRi zF7TPN*1p{d?n#xCcVTu#%*x2lqJLgGSUtG6FxPkl?hV{KHvVzDiGVuiL(Zmu>gHtG0dDRolD&8r#2ikB$4xZ)E%334iooLp^Y&_PV{ezS4$2 zztbixtF-a2thWL4-)80&GcQLyVr?cpOK*)u^unA)ojtYxcQ3Z$yPsv|&(l`Gy8I#L zTr&Hk&BQmDmHnP|WG-(1#apcBD+g@lzBBHd8-Cx9F6H0it$u$!4!U(KeBPXw94-(6 z2T;E`)nx5-mJ zwXx%F*tl`mSUzRBj{M(X|4ok5XW56|xO?*F~Ykn>-ZGci7l>KMNje*_!eEd z)gr^h9YdrSz%0Ne1`NE4|A6iocHLnVefkrdaBMGOmtYpXS$g7&$Oq|KQS0!F&hVW& zV$(ZzIfuPR4|F)oa)LQg$M7>wf^D8=eT+Ei0R9nNoP7G?G7lpy4%b3?c;r4R{tbA& zdX)yjToQf7)Zd4`3iSTc{BA$koO)t}17LNm)$9EBKQaUJ&S%jhZ`ss)KDLimRaxD+ z&wlcpO0OsWu0PrJlMRw*E&s^z4bsX#InQsoLC<5uw8HV~i}uV%`)%qw2W-qc`)trl z8?4(S%&Wb7p>>-54p_j;^t`6`4SDX;>2F%$JYj=rT6tiZ_@+x9qaknTI7F& z^>}QPb$fP)y}G5!UGl%P{crd;tLJH4yY_{R82*vnew%v!sV}c$PH<#lO+GlH^l!SGAY50DQq46I-razBFD;hrfson9D+yicF;8TjI5n>p)Kn=l4}5M@r+rTS@-;pu|KJ9G#5MeaEBFIfi6<^1-^xjz#}~QAcjM!Cw>6KF64y>Mfs^-o2fh|hj_k-PS zbNVkUb2axuIK6sw(iczt@4)B+0rgZ;4;9@<`Bud9tbOp^bYDZxuNQt#e==ql-3EWY zNs~vddDFLS%H&UM{o1qk<(EIS@si)~zD>w{!@udTd0npyqz@V{+Wve0lWf-8CVhA1 z>GL)p>~7>+du`XCRg!ei%NS7=UvQ6u#J9_06*B;BZ~2cch-NEArp7 zXC1GpW$0dupMp<-9_ZZpEQ@f0YU27D@VYbD^D6KTIJQlxwWEHjxOguy&rW_9v)Zzm zgOT}x!|c@eNhr6y!J#LyxyzFjdUvd6~D@lZ}0WIXm{TEG_^F; zx+XENzUdow|9#ttdPeL3inIgz*DR~&OVk9vZSCi8vYs#Puz|?`l=qI< z=YL9Y82=f%?SJZ@r(Wml`s(U#+VCMO?ate%y`ryf7!Ia-G=_uH1Na2!1Ld0h#0Ki| z5W;2!#XE_CRZ|ZhgI^qvQ!`Fn8;!v+B!8v8Pl|uDvJza?LiB-nY^_?IChvU;J6rAK za*%v;e=uO+CA;sw&&W4i2gAI8FYuYmFAPU-RJb@_ zxq%D#`^qKMV#}+YoJ*c7y4T>V*ASzhp^mA_`RyG#o(8KsfuBO1b2IW!&31Eb`{CMe z2dkqmV)}X(=4jFnGY;1#=JF%V$EA-|SUEZFNhG8-dQq5s039H|N%}HC?JPdMA3dq~ z-Up`Qxh3y^_>TqHdH5}9&!Y!FuqPMpvz+|aTfm;^)&wu{2 zeYod@O@8m7O8o}ddO&lwBh2{-Q75M7I!HXAUX6*q zjpzWl+nPJA9@xPE9COu>gJDJCajM^Y2#$(mArzt?COu{~V=B=*jvn*ryYLglb)l}c zpc33n{I_F?{CKl7b^kA5d=xdOZjy1RHSkcAQ^8o(g|JF|P7fL1JF% z2XV}m!}b$51jSKdrjB|C%Rfj}4^iYR7+gcmFMXWYKF*{io8> zsl})FrTSCFRNI%f)77|3cc|Vqmp-()>QkMGk6y4JKHpyAk^S&(D~ZvM;kz@BnkAb) z)#-3-(wIq=9_PF0c@Yh(H>G%VTr>W<>)Y>BKXmowRi6sw<7MB$<ueEpHtFbNH&)GNMCi2m` z=fdi>{&%(W|A_SI-h6lK2L1KBZ*4Vr{@u&=*hKWeq@_EoH}OEl!(jajH_-#^4eLC2 zxeb1u*#FhtHtdc4Hh9@ldve2ZzUqexBbuG9{@uZVcsB4&@l}M&>o>XiJ@lQ4@EaqjRo0fHj&>qmFvHc-#UwHycaz=0Zt9|XazH^xCOnR+dgUK z9qHH5_IWFAwUjxz&)ID=$sO>{?tBV4T8u7GY#>e={a%#2c6J}!n;H|N*|Y$oTX zw$yt+u{-wNcQ4LTc&AsW2}q zJ!ctm|BmGpQ)`jG#CGkibAN`0&+|X>cWFE(aR(aSx8vt7+d^#nl$9s!?&W)J^peds zY{@PgzO>Q?zPiVT!zCC?pOR-jsYd)8_3bZthJLIEzWL@awtgM_-`>oj@GgW$I3J(j zQDjDba-zpu0G?_He>pMt3cfmX_*}k=-ZJX>=r}IY0r&}C#SE_J4DkT5f#zOI_BCVA zk00*l-1^W5$gUq8L9!d5FP(Z-1?3<3!4=4_Nl$2QiPz2O(l*V!dWZ9%N2F8uY(V&g zun26uxVABBWaG@J3-}-B^Th1TKk|BJat+vWpM3Z^ED!Nr#PXqs=<$gx=YRtiZlQja z`9bJCFZiFAUX@-j5=7{7qfL{>6j{A}IfFJH0KD+Bn>Ev2*y8Hq1 zY{1CF?13QoZ5yZEE+Y^B2?mgy+@t{ERKuBcAxM$ zY`NCb2l5Gm(h2md)@#KC@-LLL47fGCdag&;l;}-MjuSagNtw<2hgdYj_zChI^sPnz zgy^S{K^|AYv$Jg*a{*u2zNn1kW!JWo}i7{0Fr;sR48fm`D=&j=PvQ+JyOM z$$T!DPA{(fb(UR>PAUG-dJNjgefrAXcllL~|9;y$kcbQZ_Kn4I{kC7$cs7@}k{)Q7 zH_&ala``L!@Pjk(SU12YpwCnCBj5!OgB^kgc%DEXJOSqREVw-!Be(()7Hv!9-sS%j zt2=HD{UGrbq%VTlX7LTw%S?T$m0J-1#xMV#_u?waM+m~R4dH*wx9}tL%H8>pciH+B zdfKLFCb)R__9w{oTI@Kpd|jRaK0xFH^O0`|p$`Ia^{;yl z+s<4HVwV)zdcG$K9hM}&B|?2q20S79*oENugfrk!WYKpik9vySr8aQX+6Mf##s}!X z^A6PO0_PhvivEA+t#;?G#|wX)*ZTUazu5l0=k1C4+u#Ae1(z1PoI20$qEE%0EO*>7 z7v4MeIC;K#Q|BV5s*9m68Gb>cpUunY0{C`ea7MT{VPbCO>@-s{0+tt|r%^ckq{YLF zc)yTig*C$0ah%(PZy|f{_tW#5UWie+yIJ`gsdHzZUBONZ!twKy3rq!f(EJ)7dCUMj zg-FIquzStA-VUa}33&!rq(?$fvu!ii(j%DMWEwsT{q8;F4L$e(nqTkX+We7a$o?9O zs2(VHtL2o^UlXp;J@@T)_o^}V_uu|FHh#fB@eb7Mf*;2Sx}?uO``Qj4zG5H1HC(V@ zH}yWNtxvDF;q0w|xAP`kJoUnO8utdlL-KGAfT7)$`YIoA} z=C0cxrys_1?5BTx6Y-5!z}Kf94;c=trUCwLM$USR;p0a$=&eHyz7IKd+$G@*s=N1- z|4T!r;Tnag-^8&-Mvy6r!3#rEJoY};CETeh6DO&iYIyUUN-E7W$s{9>iO{L*22@7+`O z5!k~AAJp3GuT|S4^Nup-bf;Ae*k!G{ZlUK5JvZXQ3#nhC*Fl7SdVctaA^Om#Wo@L_ z{}yJ4Fn?QfGN|W^^F9h+FhtMvoPzZ%V31K}+K~H?q`zqCxo_ha&^IlM7$b`9r#3$Y zydi}+Bn8~xi_8Zi@ALWhES~eW<(8n2xQ11$Yuv5>O9Otz@Aj(J^KUlDt zvYYjIW4-Q3yszJ$SnG2QwaNJlm+g_o)REqQ+&cByZ#jk3AZ5N!Ur>5)X47voZ4L81 z;2VeEBTiUHAG{50Cw52!=Z}zEB<>F&=feFJBc$hi2)7SikOo!&j+qL!;3c==15@;g zXH0w%$)Fd1_6L?#xYA0?HrTK+TkP9!e^}f5&$`cz-`jWx{vGas>}>t~m;e0o3wr@R z_~6ORLms@>3Y#M5xvQ;phr^al@9k*%8s?=^E09jzAHC?)a_H%iLl2*Ha*SbYeH>l^ zet{>%d2KuPc-@dSHjXn0nt$7sa zrpAAbccAeO{C;;p{y^g2Uu?tnGd6M7e(N{-fR(_JTr4sn4y`%{M=-8 zKoT6nB=UU8^y&7hE*jj=7opcD9Knpd)mG4S4f^CGn=xyf`;GtC4f$PvapRXY-hswD z(C`k_>j3qI+_J0M9$0XYUib&BLpOLuQR@Co!8mU-RIrcfB(G=ucq;J;~i+c z1HbnjXc!M%y>{JRefx;bc;uK39k-Twpv=jopH~3RVUXF0!6>{!mT=nB{=|$e)}{AiW(|Yolj94jPY`wdF2^5*o0vu~v>3Cs@%hE~NmXxD zxXAG=W^$8LC<0Gx-+jB4w*AEJe{iq+`tQHz=dPx4U*jEUyaT`Y9cbtaeDm#B%)&Wk zPrg9UY3iE0_I=J;ls|1*@cjaC2R+mlc&S4O&=Vw*&P>%b@qrS#{{THjVwrEi7kt}V zwO?iJdv3CKKWg;-fA7C%Z_)Uf#yjxO zx&saMfaXWn)LymsSD&;87i_apcdxQ;ec!h>?bcfJvW;*EH#r_*P62hqMVrYRibq7w zzwlj~`@})_6B=>F&es@3sMBciZ9P*W8!?P@nwz>uLOC;~i+c1Hb>)J;~g;=awC?k2ak~cZhIQ&prJ8uei}-n?nouis=&XJf6;Z+GW^+cW)tjsF_&K;s=~yaSDQpz#hg a-hswD(0B(L??B@nXuJcBci=a<1OEpKFve*B diff --git a/client/public/index.html b/client/public/index.html deleted file mode 100644 index fcbd6e6..0000000 --- a/client/public/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - Sockeye - - - -

- - diff --git a/client/public/manifest.json b/client/public/manifest.json deleted file mode 100644 index 2311218..0000000 --- a/client/public/manifest.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "Sockeye", - "short_name": "Sockeye", - "start_url": "/", - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/client/public/robots.txt b/client/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/client/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/client/src/App.vue b/client/src/App.vue deleted file mode 100644 index 88043dc..0000000 --- a/client/src/App.vue +++ /dev/null @@ -1,419 +0,0 @@ - - diff --git a/client/src/api/authorizationroles.js b/client/src/api/authorizationroles.js deleted file mode 100644 index 05e5548..0000000 --- a/client/src/api/authorizationroles.js +++ /dev/null @@ -1,184 +0,0 @@ -import bizrolerights from "./biz-role-rights"; - -export default { - ROLE_RIGHTS: bizrolerights, - AUTHORIZATION_ROLES: { - ///No role set - NoRole: 0, - ///BizAdminRestricted - BizAdminRestricted: 1, - ///BizAdmin - BizAdmin: 2, - ///ServiceRestricted - ServiceRestricted: 4, - ///Service - Service: 8, - ///InventoryRestricted - InventoryRestricted: 16, - ///Inventory - Inventory: 32, - ///Accounting - Accounting: 64, //No restricted role, not sure if there is a need - ///TechRestricted - TechRestricted: 128, - ///Tech - Tech: 256, - ///SubContractorRestricted - SubContractorRestricted: 512, - ///SubContractor - SubContractor: 1024, - ///CustomerRestricted - CustomerRestricted: 2048, - ///Customer - Customer: 4096, - ///OpsAdminRestricted - OpsAdminRestricted: 8192, - ///OpsAdmin - OpsAdmin: 16384, - ///Sales - Sales: 32768, - ///SalesRestricted - SalesRestricted: 65536 - }, - ////////////////////////////////////////////////////////// - // Does current logged in user have role? - // (Can be an array of roles or a single role, if array returns true if any of the array roles are present for this user) - // - hasRole(desiredRole) { - if (!window.$gz.store.state.roles || window.$gz.store.state.roles === 0) { - return false; - } - //array form? - - if (Array.isArray(desiredRole)) { - //it's an array of roles, iterate and if any are present then return true - for (let i = 0; i < desiredRole.length; i++) { - if ((window.$gz.store.state.roles & desiredRole[i]) != 0) { - return true; - } - } - return false; - } else { - return (window.$gz.store.state.roles & desiredRole) != 0; - } - }, - ////////////////////////////////////////////////////////// - // Does current logged in user have *ANY* role? - // - // - hasAnyRole() { - if (!window.$gz.store.state.roles || window.$gz.store.state.roles === 0) { - return false; - } - return true; - }, - /////////////////////////////////////////////////////////////////////// - // Get a default empty rights object so that it can be present when a - // form first loads - // - defaultRightsObject() { - return { - change: false, - read: false, - delete: false - }; - }, - /////////////////////////////////////////////////////////////////////// - // Get a default FULL rights object for forms that don't really need - // to check rights but fits into system for forms in place (e.g. change password) - // - fullRightsObject() { - return { - change: true, - read: true, - delete: true - }; - }, - /////////////////////////////////////////////////////////////////////// - // Get a read only rights object (customer workorder for example) - // - readOnlyRightsObject() { - return { - change: false, - read: true, - delete: false - }; - }, - ///////////////////////////////// - // aType is the name of the object type as defined in socktype.js - // - getRights(aType) { - //from bizroles.cs: - //HOW THIS WORKS / WHATS EXPECTED - //Change = CREATE, RETRIEVE, UPDATE, DELETE - Full rights - // - //ReadFullRecord = You can read *all* the fields of the record, but can't modify it. Change is automatically checked for so only add different roles from change - //PICKLIST NOTE: this does not control getting a list of names for selection which is role independent because it's required for so much indirectly - //DELETE = SAME AS CHANGE FOR NOW (There is no specific delete right for now though it's checked for by routes in Authorized.cs in case we want to add it in future as a separate right from create.) - //NOTE: biz rules can supersede this, this is just for general rights purposes, if an object has restrictive business rules they will take precedence every time. - - const ret = this.defaultRightsObject(); - - //Get the type name from the type enum value - let typeName = undefined; - for (const [key, value] of Object.entries(window.$gz.type)) { - if (value == aType) { - typeName = key; - break; - } - } - - //Get the Sockeye stock REQUIRED role rights for that object - const objectRoleRights = this.ROLE_RIGHTS[typeName]; - if (!objectRoleRights) { - throw new Error( - `authorizationroles::getRights type ${aType} not found in roles collection` - ); - } - - //get the logged in user's role - const userRole = window.$gz.store.state.roles; - //calculate the effective rights - //a non zero result of the bitwise calculation means true and zero means false so using !! to force it into a boolean value - //(contrary to some style guides that say !! is obscure but I say it saves a lot of typing) - - const canChange = !!(userRole & objectRoleRights.Change); - - //sometimes rights to read are false if change is true since change trumps read anyway so accordingly: - let canReadFullRecord = canChange; - if (!canReadFullRecord) { - //can't change but might have special rights to full record: - canReadFullRecord = !!(userRole & objectRoleRights.ReadFullRecord); - } - - ret.change = canChange; - ret.delete = ret.change; //FOR NOW - ret.read = canReadFullRecord; - - // console.log("authorizationroles::canOpen", { - // typeName: typeName, - // userRole: userRole, - // objectRoleRights: objectRoleRights, - // retResultIs: ret - // }); - - return ret; - }, - ///////////////////////////////// - // convenience method for forms that deal with multiple object types - // (i.e. grids, history etc, initialization of main menu etc) - // - canOpen(aType) { - const r = this.getRights(aType); - //convention is change might be defined but not read so canOpen is true eitehr way - return r.change == true || r.read == true; - }, - ///////////////////////////////// - // convenience method for forms that deal with multiple object types - // (i.e. grids, history etc, initialization of main menu etc) - // - canChange(aType) { - const r = this.getRights(aType); - return r.change == true; - } -}; diff --git a/client/src/api/authutil.js b/client/src/api/authutil.js deleted file mode 100644 index da3a2e1..0000000 --- a/client/src/api/authutil.js +++ /dev/null @@ -1,124 +0,0 @@ -import jwt_decode from "jwt-decode"; -import initialize from "./initialize"; -import notifypoll from "./notifypoll"; - -export function processLogin(authResponse, loggedInWithKnownPassword) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async function(resolve, reject) { - try { - //check there is a response of some kind - if (!authResponse) { - window.$gz.store.commit("logItem", "auth::processLogin -> no response"); - return reject(); - } - - //is token present? - if (!authResponse || !authResponse.token) { - window.$gz.store.commit( - "logItem", - "auth::processLogin -> response contains no data" - ); - return reject(); - } - const token = jwt_decode(authResponse.token); - - if (!token || !token.iss) { - window.$gz.store.commit( - "logItem", - "auth::processLogin -> response token empty" - ); - return reject(); - } - - if (token.iss != "rockfish.ayanova.com") { - window.$gz.store.commit( - "logItem", - "auth::processLogin -> token invalid (iss): " + token.iss - ); - return reject(); - } - - //ensure the store is clean first in case we didn't come here from a clean logout - window.$gz.store.commit("logout"); - sessionStorage.clear(); //clear all temporary session storage data - - //encourage password changing if a purchased license - if (loggedInWithKnownPassword) - window.$gz.store.commit("setKnownPassword", true); - - //Put app relevant items into vuex store so app can use them - window.$gz.store.commit("login", { - apiToken: authResponse.token, - authenticated: true, - userId: Number(token.id), - translationId: authResponse.tid, - userName: authResponse.name, - roles: authResponse.roles, - userType: authResponse.usertype, - dlt: authResponse.dlt, - l: authResponse.l, - tfaEnabled: authResponse.tfa, - customerRights: authResponse.customerRights - }); - - //decided to remove this as it is not an out of the ordinary scenario to log - // however left this block here in case in future becomes necessary for some common issue - // //log the login - // window.$gz.store.commit( - // "logItem", - // "auth::processLogin -> User " + token.id + " logged in" - // ); - - //Get global settings - const gsets = await window.$gz.api.get("global-biz-setting/client"); - if (gsets.error) { - //In a form this would trigger a bunch of validation or error display code but for here and now: - //convert error to human readable string for display and popup a notification to user - const msg = window.$gz.api.apiErrorToHumanString(gsets.error); - window.$gz.eventBus.$emit("notify-error", msg); - } else { - //Check if overrides and use them here - //or else use browser defaults - window.$gz.store.commit("setGlobalSettings", gsets.data); - } - await initialize(); - } catch (err) { - reject(err); - } - - //start notification polling - notifypoll.startPolling(); - resolve(); - //------------------------------------------------- - }); -} - -export function processLogout() { - notifypoll.stopPolling(); - window.$gz.store.commit("logout"); - sessionStorage.clear(); //clear all temporary session storage data -} - -export function isLoggedIn() { - return ( - !!window.$gz.store.state.apiToken && - !isTokenExpired(window.$gz.store.state.apiToken) - ); -} - -function getTokenExpirationDate(encodedToken) { - const token = jwt_decode(encodedToken); - if (!token.exp) { - return null; - } - - const date = new Date(0); - date.setUTCSeconds(token.exp); - - return date; -} - -function isTokenExpired(token) { - const expirationDate = getTokenExpirationDate(token); - return expirationDate < new Date(); -} diff --git a/client/src/api/biz-role-rights.js b/client/src/api/biz-role-rights.js deleted file mode 100644 index 74c651d..0000000 --- a/client/src/api/biz-role-rights.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * - * Auto generated by BizRoles.cs in server project, update here whenever that changes - * - * - */ -export default { - Customer: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - CustomerNote: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - CustomerNotifySubscription: { - Change: 10, - ReadFullRecord: 65797, - Select: 131071 - }, - HeadOffice: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - Global: { Change: 2, ReadFullRecord: 1, Select: 0 }, - GlobalOps: { Change: 16384, ReadFullRecord: 8192, Select: 0 }, - User: { Change: 2, ReadFullRecord: 1, Select: 131071 }, - UserOptions: { Change: 2, ReadFullRecord: 1, Select: 0 }, - Vendor: { Change: 106, ReadFullRecord: 98565, Select: 131071 }, - ServerState: { Change: 16384, ReadFullRecord: 131071, Select: 0 }, - LogFile: { Change: 0, ReadFullRecord: 24576, Select: 0 }, - Backup: { Change: 16384, ReadFullRecord: 8195, Select: 0 }, - FileAttachment: { Change: 2, ReadFullRecord: 3, Select: 0 }, - ServerJob: { Change: 16384, ReadFullRecord: 8195, Select: 0 }, - OpsNotificationSettings: { Change: 16384, ReadFullRecord: 8195, Select: 0 }, - ServerMetrics: { Change: 16384, ReadFullRecord: 24576, Select: 0 }, - Translation: { Change: 2, ReadFullRecord: 1, Select: 131071 }, - DataListSavedFilter: { Change: 2, ReadFullRecord: 131071, Select: 0 }, - FormUserOptions: { Change: 131071, ReadFullRecord: 131071, Select: 0 }, - FormCustom: { Change: 2, ReadFullRecord: 131071, Select: 0 }, - PickListTemplate: { Change: 2, ReadFullRecord: 131071, Select: 0 }, - BizMetrics: { Change: 2, ReadFullRecord: 98369, Select: 0 }, - Notification: { Change: 131071, ReadFullRecord: 131071, Select: 0 }, - NotifySubscription: { Change: 131071, ReadFullRecord: 131071, Select: 0 }, - Report: { Change: 3, ReadFullRecord: 131071, Select: 131071 }, - Memo: { Change: 124927, ReadFullRecord: 124927, Select: 124927 }, - Reminder: { Change: 124927, ReadFullRecord: 124927, Select: 124927 }, - Review: { Change: 124927, ReadFullRecord: 124927, Select: 124927 }, - Integration: { Change: 49514, ReadFullRecord: 49514, Select: 49514 }, - License: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - TrialLicenseRequest: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - SubscriptionServer: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - Purchase: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - Product: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }, - GZCase: { Change: 32842, ReadFullRecord: 65797, Select: 131071 } -}; diff --git a/client/src/api/dash-registry.js b/client/src/api/dash-registry.js deleted file mode 100644 index 405de0b..0000000 --- a/client/src/api/dash-registry.js +++ /dev/null @@ -1,400 +0,0 @@ -import authorizationroles from "./authorizationroles"; -const role = authorizationroles.AUTHORIZATION_ROLES; -/* - -*/ -export default { - registry: [ - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting, - role.Tech, - role.TechRestricted - ], - title: "DashboardWorkOrderByStatusList", - icon: "$sockiListAlt", - type: "GzDashWorkorderByStatusList", - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "month", - wostatus: null, - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardWorkOrderStatusCount", - icon: "$sockiChartBar", - type: "GzDashWorkOrderStatusCount", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "month", - wotags: [], - wotagsany: true - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardWorkOrderStatusPct", - icon: "$sockiChartBar", - type: "GzDashWorkOrderStatusPct", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "month", - wotags: [], - wotagsany: true - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardPctWorkOrderCompletedOnTime", - icon: "$sockiChartBar", - type: "GzDashPctWorkOrderCompletedOnTimeBar", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "month", - wotags: [], - wotagsany: true, - color: "#00205BFF" - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardCountWorkOrdersCreated", - icon: "$sockiChartLine", - type: "GzDashWorkOrderCreatedCountLine", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "day", - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true, - color: "#00205BFF" - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardCountWorkOrdersCreated", - icon: "$sockiChartBar", - type: "GzDashWorkOrderCreatedCountBar", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true, - interval: "month", - color: "#00205BFF" - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardOverdueAll", - icon: "$sockiListAlt", - type: "GzDashWorkorderOverdueAllList", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true - } - }, - { - roles: [role.Tech, role.TechRestricted], - title: "DashboardOverdue", - icon: "$sockiListAlt", - type: "GzDashWorkorderOverduePersonalList", - scheduleableUserOnly: true, - singleOnly: true, - settings: { - customTitle: null, - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Tech, - role.TechRestricted - ], - title: "DashboardOpenCSR", - icon: "$sockiListAlt", - type: "GzDashCSROpenList", - singleOnly: false, - settings: { - customTitle: null, - custtags: [], - custtagsany: true - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting, - role.Tech, - role.TechRestricted - ], - title: "DashboardNotScheduled", - icon: "$sockiListAlt", - type: "GzDashWorkorderUnscheduledOpenList", - singleOnly: false, - settings: { - customTitle: null, - wostatus: null, - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.InventoryRestricted, - role.Inventory, - role.Accounting, - role.Tech, - role.TechRestricted, - role.OpsAdmin, - role.OpsAdminRestricted, - role.Sales, - role.SalesRestricted - ], - title: "ReminderList", - icon: "$sockiCalendarDay", - type: "GzDashTodayReminders", - singleOnly: true, - settings: {} - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.InventoryRestricted, - role.Inventory, - role.Accounting, - role.Tech, - role.TechRestricted, - role.OpsAdmin, - role.OpsAdminRestricted, - role.Sales, - role.SalesRestricted - ], - title: "ReviewList", - icon: "$sockiCalendarDay", - type: "GzDashTodayReviews", - singleOnly: true, - settings: {} - }, - { - roles: [role.Tech, role.TechRestricted], - title: "DashboardScheduled", - icon: "$sockiCalendarDay", - type: "GzDashTodayScheduledWo", - scheduleableUserOnly: true, - singleOnly: true, - settings: {} - }, - { - roles: [role.Tech, role.TechRestricted], - title: "WorkOrderItemLaborServiceRateQuantity", - icon: "$sockiChartLine", - type: "GzDashLaborHoursPersonalLine", - scheduleableUserOnly: true, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "day", - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true, - color: "#00205BFF" - } - }, - { - roles: [role.Tech, role.TechRestricted], - title: "WorkOrderItemLaborServiceRateQuantity", - icon: "$sockiChartBar", - type: "GzDashLaborHoursPersonalBar", - scheduleableUserOnly: true, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true, - interval: "month", - color: "#00205BFF" - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardServiceRateQuantityAllUsers", - icon: "$sockiChartLine", - type: "GzDashLaborHoursEveryoneLine", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - interval: "month", - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true, - techtags: [], - techtagsany: true, - userid: null, - color: "#00205BFF" - } - }, - { - roles: [ - role.BizAdmin, - role.BizAdminRestricted, - role.ServiceRestricted, - role.Service, - role.Accounting - ], - title: "DashboardServiceRateQuantityAllUsers", - icon: "$sockiChartBar", - type: "GzDashLaborHoursEveryoneBar", - scheduleableUserOnly: false, - singleOnly: false, - settings: { - customTitle: null, - timeSpan: "*thisyear*", - wotags: [], - wotagsany: true, - woitemtags: [], - woitemtagsany: true, - techtags: [], - techtagsany: true, - userid: null, - interval: "month", - color: "#00205BFF" - } - } - ], - availableItems() { - const ret = []; - for (let i = 0; i < this.registry.length; i++) { - const item = this.registry[i]; - - if (authorizationroles.hasRole(item.roles)) { - //if it's only for sched users and not then skip - if ( - item.scheduleableUserOnly && - !window.$gz.store.getters.isScheduleableUser - ) { - continue; - } - ret.push({ - id: i, - title: item.title, - icon: item.icon, - type: item.type, - singleOnly: item.singleOnly, - settings: item.settings - }); - } - } - return ret; - }, - async cacheTranslationsForAvailableItems() { - const items = this.availableItems(); - - //await window.$gz.translation.cacheTranslations(items.map(z => z.title)); - await window.$gz.translation.cacheTranslations([ - ...new Set(items.map(z => z.title)) - ]); - } -}; diff --git a/client/src/api/enums.js b/client/src/api/enums.js deleted file mode 100644 index bd69ba4..0000000 --- a/client/src/api/enums.js +++ /dev/null @@ -1,101 +0,0 @@ -export default { - get(enumKey, enumValue) { - enumKey = enumKey.toLowerCase(); - if (enumKey != "authorizationroles") { - if (window.$gz.store.state.enums[enumKey] == undefined) { - throw new Error( - "ERROR enums::get -> enumKey " + enumKey + " is missing from store" - ); - } - - const ret = window.$gz.store.state.enums[enumKey][enumValue]; - if (ret == undefined) { - return ""; - } else { - return ret; - } - } else { - const ret = []; - if (enumValue == null || enumValue == 0) { - return ""; - } - const availableRoles = this.getSelectionList("AuthorizationRoles"); - for (let i = 0; i < availableRoles.length; i++) { - const role = availableRoles[i]; - if (enumValue & role.id) { - ret.push(role.name); - } - } - return ret.join(", "); - } - }, - ////////////////////////////////// - // - // Used by forms to fetch selection list data - // Sorts alphabetically by default but can be turned off with do not sort - // - getSelectionList(enumKey, noSort) { - enumKey = enumKey.toLowerCase(); - const e = window.$gz.store.state.enums[enumKey]; - if (!e) { - throw new Error( - "ERROR enums::getSelectionList -> enumKey " + - enumKey + - " is missing from store" - ); - } - const ret = []; - - //turn it into an array suitable for selection lists - for (const [key, value] of Object.entries(e)) { - ret.push({ id: Number(key), name: value }); - } - //sort by name - if (!noSort) { - ret.sort(window.$gz.util.sortByKey("name")); - } - return ret; - }, - /////////////////////////////////// - // - // Fetches enum list from server - // and puts in store. if necessary - // ACCEPTS an ARRAY or a single STRING KEY - // - async fetchEnumList(enumKey) { - if (!Array.isArray(enumKey)) { - enumKey = [enumKey]; - } - for (let i = 0; i < enumKey.length; i++) { - //check if list - //if not then fetch it and store it - const k = enumKey[i].toLowerCase(); - - //de-lodash - // if (!window.$gz. _.has(window.$gz.store.state.enums, k)) { - //enums is an object this is checking if that object has a key with the name in k - if (!window.$gz.util.has(window.$gz.store.state.enums, k)) { - const that = this; - - const dat = await that.fetchEnumKey(k); - //massage the data as necessary - const e = { enumKey: k, items: {} }; - for (let i = 0; i < dat.length; i++) { - const o = dat[i]; - e.items[o.id] = o.name; - } - //stuff the data into the store - window.$gz.store.commit("setEnum", e); - } - } - }, - async fetchEnumKey(enumKey) { - const res = await window.$gz.api.get("enum-list/list/" + enumKey); - //We never expect there to be no data here - //if (!Object.prototype.hasOwnProperty.call(res, "data")) { - if (!Object.prototype.hasOwnProperty.call(res, "data")) { - return Promise.reject(res); - } - return res.data; - } -}; diff --git a/client/src/api/errorhandler.js b/client/src/api/errorhandler.js deleted file mode 100644 index 3e0aad9..0000000 --- a/client/src/api/errorhandler.js +++ /dev/null @@ -1,230 +0,0 @@ -let lastMessageHash = 0; -let lastMessageTimeStamp = new Date(); - -//////////////////////////////////////////////////////// -// -// translate, Log and optionally display errors -// return translated message in case caller needs it -async function dealWithError(msg, vm) { - //Check if this is the same message again as last time within a short time span to avoid endless looping errors of same message - //but still allow for user to repeat operation that causes error so they can view it - const newHash = window.$gz.util.quickHash(msg); - if (newHash == lastMessageHash) { - const tsnow = new Date(); - //don't show the same exact message if it was just shown less than 1 second ago - if (tsnow - lastMessageTimeStamp < 1000) return; - } - lastMessageHash = newHash; - lastMessageTimeStamp = new Date(); - - //translate as necessary - msg = await window.$gz.translation.translateStringWithMultipleKeysAsync(msg); - - //In some cases the error may not be translatable, if this is not a debug run then it should show without the ?? that translating puts in keys not found - //so it's not as weird looking to the user - //vm may be null here so check window gz for dev - if (!window.$gz.dev && msg.includes("??")) { - msg = msg.replace("??", ""); - } - window.$gz.store.commit("logItem", msg); - if (window.$gz.dev) { - const errMsg = "DEV MODE errorHandler.js:: Unexpected error: \r\n" + msg; - // eslint-disable-next-line no-console - console.error(errMsg); - - // eslint-disable-next-line no-debugger - debugger; - } - - //If a form instance was provided (vue instance) - //and it can display and error then put the error into it - if (!vm || vm.formState == undefined) { - //Special work around to not redundantly display errors when Sockeye job fails - // and Vue decides to throw it's own error into the mix when we've already displayed appropriate message - if (msg.includes("Vue error") && msg.includes("Job failed")) { - return; - } - - //popup if no place to display it elsewise - window.$gz.eventBus.$emit("notify-error", msg); - return; - } - - //should be able to display in form... - if (vm.$sock.dev) { - //make sure formState.appError is defined on data - if (!window.$gz.util.has(vm, "formState.appError")) { - throw new Error( - "DEV ERROR errorHandler::dealWithError -> formState.appError seems to be missing from form's vue data object" - ); - } - } - vm.formState.appError = msg; - - //TODO: What is this doing exactly? - //it's related to server errors but I'm setting appError above - //why two error properties? - window.$gz.form.setErrorBoxErrors(vm); -} - -/////////////////////////////////////////////////////////////////////////////////// -// DECODE ERROR TO TEXT -// accept an unknown type of error variable -// and return human readable text -// -function decodeError(e, vm) { - // console.log("decodeError full e object as is: "); - // console.log(e); - // console.log("decodeError full e object stringified: ", JSON.stringify(e)); - // console.log("decodeError is typeof:", typeof e); - // console.log("decodeError e is instanceof Error ", e instanceof Error); - // console.log( - // "decodeError e is a string already: ", - // window.$gz.util.isString(e) - // ); - - //already a string? - if (window.$gz.util.isString(e)) { - return e; //nothing to do here, already a string - } - - if (e instanceof Error) { - //an Error object? - return `Error - Name:${e.name}, Message:${e.message}`; - } - - if ( - e == null || - e == "" || - (typeof e === "object" && Object.keys(e).length === 0) - ) { - return `errorHandler::decodeError - Error is unknown / empty (e:${e})`; - } - - //API error object or error RESPONSE object? - if (e.error || e.code) { - let err = null; - //could be the error RESPONSE or it could be the error object *inside* the error response so sort out here - if (e.error) { - //it's the entire resopnse object - err = e.error; - } else { - //it's the inner error object only - err = e; - } - let msg = ""; - if (err.code) { - msg += err.code; - msg += " - "; - if (vm) { - msg += vm.$sock.t("ErrorAPI" + err.code); - } - msg += "\n"; - } - if (err.target) { - msg += err.target; - msg += "\n"; - } - - if (err.message && !err.message.startsWith("ErrorAPI")) { - //errapi already dealt with above no need to repeat it here - msg += err.message; - msg += "\n"; - } - - if (err.details) { - err.details.forEach(z => { - let zerror = null; - if (z.error) { - zerror = z.error + " - "; - } - msg += `${zerror}${z.message}\n`; - }); - } - - //console.log("errorhandler:decodeError returning message:", msg); - - return msg; - } - - //Javascript Fetch API Response object? - if (e instanceof Response) { - return `http error: ${e.statusText} - ${e.status} Url: ${e.url}`; - } - - //last resort - return JSON.stringify(e); -} -export default { - handleGeneralError(message, source, lineno, colno, error) { - let msg = "General error: \n" + message; - if (source) { - msg += "\nsource: " + source; - } - if (lineno) { - msg += "\nlineno: " + lineno; - } - if (colno) { - msg += "\ncolno: " + colno; - } - if (error) { - if (typeof error === "object") { - error = JSON.stringify(error); - } - msg += "\nerror: " + error; - } - dealWithError(msg); - }, - handleVueError(err, vm, info) { - let msg = "Vue error: \n" + decodeError(err, vm); - if (err.fileName) { - msg += "\nfilename: " + err.fileName; - } - if (err.lineNumber) { - msg += "\nlineNumber: " + err.lineNumber; - } - if (info) { - msg += "\ninfo: " + info; - } - if (err.stack) { - msg += "\nSTACK:\n " + err.stack; - } - dealWithError(msg, vm); - }, - handleVueWarning(wmsg, vm, trace) { - let msg = "Vue warning: \n" + decodeError(wmsg, vm); - if (trace) { - msg += "\ntrace: " + trace; - } - dealWithError(msg, vm); - }, - ///////////////////////////////////////////////// - // translate, log and return error - // - handleFormError(err, vm) { - if (window.$gz.dev) { - console.trace(err); - } - //called inside forms when things go unexpectedly wrong - dealWithError(decodeError(err, vm), vm); - }, - ///////////////////////////////////////////////// - // decode error into string suitable to display - // - errorToString(err, vm) { - //called inside forms when things go unexpectedly wrong - return decodeError(err, vm); - } -}; -/* -ERROR CODES USED: -Client error codes are all in the range of E16 to E999 -Server error codes are all in the range of E1000 to E1999 -API specific (logic) error codes are all in the range of 2000 to 3000 - -CLIENT ERROR CODES: -E16 - ErrorUserNotAuthenticated -E17 - ErrorServerUnresponsive -E18 - Misc error without a translation key, unexpected throws etc or api error during server call, details in the message / Any error without a translation key defined basically - -*/ diff --git a/client/src/api/eventbus.js b/client/src/api/eventbus.js deleted file mode 100644 index 968c96b..0000000 --- a/client/src/api/eventbus.js +++ /dev/null @@ -1,2 +0,0 @@ -import Vue from "vue"; -export default new Vue(); diff --git a/client/src/api/form-custom-template.js b/client/src/api/form-custom-template.js deleted file mode 100644 index 13525a2..0000000 --- a/client/src/api/form-custom-template.js +++ /dev/null @@ -1,83 +0,0 @@ -///Add data key names which make the custom fields control work more easily -///Since the names can be inferred from the data that comes from the server it saves bandwidth to do it here at the client -function addDataKeyNames(obj) { - //iterate the array of objects - //if it has a "type" property then it's a custom field so add its data key name - - for (let i = 0; i < obj.length; i++) { - if (obj[i].type) { - obj[i]["dataKey"] = "c" + parseInt(obj[i].fld.replace(/^\D+/g, "")); - } - } - - //return the whole thing again now translated - return obj; -} - -export default { - //////////////////////////////// - // Cache the form customization data if it's not already present - // NOTE: FORM KEY **MUST** BE THE AYATYPE NAME WHERE POSSIBLE, IF NO TYPE THEN AN EXCEPTION NEEDS TO BE CODED IN - //SERVER FormFieldReference.cs -> public static List FormFieldKeys - // - async get(formKey, vm, forceRefresh) { - if ( - forceRefresh || - !window.$gz.util.has(window.$gz.store.state.formCustomTemplate, formKey) - ) { - //fetch and populate the store - const res = await window.$gz.api.get("form-custom/" + formKey); - if (res.error) { - throw new Error(window.$gz.errorHandler.errorToString(res, vm)); - } - - window.$gz.store.commit("setFormCustomTemplateItem", { - formKey: formKey, - concurrency: res.data.concurrency, - value: addDataKeyNames(JSON.parse(res.data.template)) - }); - } - }, - set(formKey, token, template) { - window.$gz.store.commit("setFormCustomTemplateItem", { - formKey: formKey, - concurrency: token, - value: addDataKeyNames(JSON.parse(template)) - }); - }, - getFieldTemplateValue(formKey, fieldKey) { - if (fieldKey === undefined) { - throw new Error( - "ERROR form-custom-template::getFieldTemplateValue -> fieldKey not specified for template for form [" + - formKey + - "]" - ); - } - - const template = window.$gz.store.state.formCustomTemplate[formKey]; - if (template === undefined) { - throw new Error( - "ERROR form-custom-template::getFieldTemplateValue -> Store is missing form template for [" + - formKey + - "]" - ); - } - - //Note that not every field being requested will exist so it's valid to return undefined - //template is an array of objects that contain a key called "fld" - return template.find(z => z.fld == fieldKey); - }, - getTemplateConcurrencyToken(formKey) { - const tok = - window.$gz.store.state.formCustomTemplate[formKey + "_concurrencyToken"]; - if (tok === undefined) { - throw new Error( - "ERROR form-custom-template::getTemplateConcurrencyToken -> Store is missing concurrency token for [" + - formKey + - "]" - ); - } - - return tok; - } -}; diff --git a/client/src/api/gzapi.js b/client/src/api/gzapi.js deleted file mode 100644 index 877f05f..0000000 --- a/client/src/api/gzapi.js +++ /dev/null @@ -1,672 +0,0 @@ -import router from "../router"; - -function stringifyPrimitive(v) { - switch (typeof v) { - case "string": - return v; - - case "boolean": - return v ? "true" : "false"; - - case "number": - return isFinite(v) ? v : ""; - - default: - return ""; - } -} - -//////////////////////////////////////////// -// Try to handle an api error -// return true if handled or false if not -// -function handleError(action, error, route) { - const errorMessage = - "API error: " + action + " route =" + route + ", message =" + error.message; - window.$gz.store.commit("logItem", errorMessage); - - //Handle 403 not authorized - //popup not authorized, log, then go to HOME - //was going to go back one page, but realized most of the time a not authorized is in - //reaction to directly entered or opened link, not application logic driving it, so home is safest choice - // - if (error.message && error.message.includes("NotAuthorized")) { - window.$gz.eventBus.$emit( - "notify-warning", - window.$gz.translation.get("ErrorUserNotAuthorized") - ); - router.push(window.$gz.store.state.homePage); - - throw new Error("LT:ErrorUserNotAuthorized"); - } - - //Handle 401 not authenticated - if (error.message && error.message.includes("NotAuthenticated")) { - window.$gz.eventBus.$emit( - "notify-error", - window.$gz.translation.get("ErrorUserNotAuthenticated") - ); - - router.push("/login"); - - throw new Error("LT:ErrorUserNotAuthenticated"); - } - - //is it a network error? - //https://medium.com/@vinhlh/how-to-handle-networkerror-when-using-fetch-ff2663220435 - if (error instanceof TypeError) { - if ( - error.message.includes("Failed to fetch") || - error.message.includes("NetworkError") || - error.message.includes("Network request failed") - ) { - let msg = ""; - - if (window.$gz.store.state.authenticated) { - msg = window.$gz.translation.get("ErrorServerUnresponsive"); - } else { - msg = "Could not connect to Sockeye server "; - } - - msg += window.$gz.api.APIUrl("") + "\r\nError: " + error.message; - - window.$gz.eventBus.$emit("notify-error", msg); - //note: using translation key in square brackets - - throw new Error(msg); - } - } - - //Ideally this should never get called because any issue should be addressed above - window.$gz.errorHandler.handleFormError(error); -} - -export default { - status(response) { - //Handle expected api errors - if (response.status == 401) { - throw new Error("LT:ErrorUserNotAuthenticated"); - } - - if (response.status == 403) { - throw new Error("LT:ErrorUserNotAuthorized"); - } - - //404 not found is an expected status not worth logging allow to bubble up - //for client code to deal with - if (response.status == 404) { - return Promise.resolve(response); - } - - if (response.status == 405) { - //Probably a development error - - throw new Error("Method Not Allowed (route issue?) " + response.url); - } - - if (response.status >= 200 && response.status < 300) { - return Promise.resolve(response); - } else { - //log unhandled api error - window.$gz.store.commit( - "logItem", - "API error: status=" + - response.status + - ", statusText=" + - response.statusText + - ", url=" + - response.url - ); - //let it float up for dealing with by caller(s) - return Promise.resolve(response); - } - }, - statusEx(response) { - //Handle expected api errors - if (response.status == 401) { - throw new Error("LT:ErrorUserNotAuthenticated"); - } - - if (response.status == 403) { - throw new Error("LT:ErrorUserNotAuthorized"); - } - - //404 not found is an expected status not worth logging allow to bubble up - //for client code to deal with - if (response.status == 404) { - return; - } - - if (response.status == 405) { - //Probably a development error - - throw new Error("Method Not Allowed (route issue?) " + response.url); - } - - if (response.status >= 200 && response.status < 300) { - return; - } else { - //log unhandled api error - - window.$gz.store.commit( - "logItem", - "API error: status=" + - response.status + - ", statusText=" + - response.statusText + - ", url=" + - response.url - ); - } - }, - async extractBodyEx(response) { - if (response.status == 204) { - //no content, nothing to process - return response; - } - const contentType = response.headers.get("content-type"); - - if (!contentType) { - return response; - } - if (contentType.includes("json")) { - return await response.json(); - } - if (contentType.includes("text/plain")) { - return await response.text(); - } - - if (contentType.includes("application/pdf")) { - return await response.blob(); - } - return response; - }, - extractBody(response) { - if (response.status == 204) { - //no content, nothing to process - return response; - } - const contentType = response.headers.get("content-type"); - if (!contentType) { - return response; - } - if (contentType.includes("json")) { - return response.json(); - } - if (contentType.includes("text/plain")) { - return response.text(); - } - return response; - }, - apiErrorToHumanString(apiError) { - //empty error object? - if (!apiError) { - return "(E18) - apiErrorToHumanString():: Empty API eror, unknown"; - } - //convert to readable string - return "(E18) - " + JSON.stringify(apiError); - }, - patchAuthorizedHeaders() { - return { - Accept: "application/json", - "Content-Type": "application/json-patch+json", - Authorization: "Bearer " + window.$gz.store.state.apiToken - }; - }, - postAuthorizedHeaders() { - return { - Accept: "application/json", - "Content-Type": "application/json", - Authorization: "Bearer " + window.$gz.store.state.apiToken - //this maybe useful in future like batch ops etc so keeping as a reminder - //,"X-AY-Import-Mode": true - }; - }, - postUnAuthorizedHeaders() { - return { - Accept: "application/json", - "Content-Type": "application/json" - }; - }, - fetchPostNoAuthOptions(data) { - return { - method: "post", - mode: "cors", - headers: this.postUnAuthorizedHeaders(), - body: JSON.stringify(data) - }; - }, - fetchPostOptions(data) { - return { - method: "post", - mode: "cors", - headers: this.postAuthorizedHeaders(), - body: JSON.stringify(data) - }; - }, - fetchPutOptions(data) { - return { - method: "put", - mode: "cors", - headers: this.postAuthorizedHeaders(), - body: JSON.stringify(data) - }; - }, - fetchGetOptions() { - /* GET WITH AUTH */ - return { - method: "get", - mode: "cors", - headers: this.postAuthorizedHeaders() - }; - }, - fetchRemoveOptions() { - /* REMOVE WITH AUTH */ - return { - method: "delete", - mode: "cors", - headers: this.postAuthorizedHeaders() - }; - }, - APIUrl(apiPath) { - if ( - window.$gz.dev && - window.location.hostname == "localhost" && - window.location.port == "8080" - ) { - return "http://localhost:7676/api/v8.0/" + apiPath; - } - - return ( - window.location.protocol + - "//" + - window.location.host + - "/api/v8.0/" + - apiPath - ); - }, - helpUrl() { - if ( - window.$gz.dev && - window.location.hostname == "localhost" && - window.location.port == "8080" - ) { - return "http://localhost:7676/docs/"; - } - return window.location.protocol + "//" + window.location.host + "/docs/"; - }, - helpUrlCustomer() { - if ( - window.$gz.dev && - window.location.hostname == "localhost" && - window.location.port == "8080" - ) { - return "http://localhost:7676/cust/"; - } - return window.location.protocol + "//" + window.location.host + "/cust/"; - }, - ///////////////////////////// - // Just the server itself - // used by profiler etc - // - ServerBaseUrl() { - return this.helpUrl().replace("/docs/", "/"); - }, - ///////////////////////////// - // generic routed download URL - // - genericDownloadUrl(route) { - //http://localhost:7676/api/v8/backup/download/100?t=sssss - return this.APIUrl(route + "?t=" + window.$gz.store.state.downloadToken); - }, - ///////////////////////////// - // report file download URL - // - reportDownloadUrl(fileName) { - //http://localhost:7676/api/v8/report/download/filename.pdf?t=sssss - - return this.APIUrl( - "report/download/" + - fileName + - "?t=" + - window.$gz.store.state.downloadToken - ); - }, - ///////////////////////////// - // backup file download URL - // - backupDownloadUrl(fileName) { - //http://localhost:7676/api/v8/backup/download/100?t=sssss - - return this.APIUrl( - "backup/download/" + - fileName + - "?t=" + - window.$gz.store.state.downloadToken - ); - }, - ///////////////////////////// - // attachment download URL - // - attachmentDownloadUrl(fileId, ctype) { - //http://localhost:7676/api/v8/attachment/download/100?t=sssss - //Ctype is optional and is the MIME content type, used to detect image urls at client for drag and drop ops - //in wiki but ignored by server - - let url = - "attachment/download/" + - fileId + - "?t=" + - window.$gz.store.state.downloadToken; - - if (ctype && ctype.includes("image")) { - url += "&i=1"; - } - - return this.APIUrl(url); - }, - ///////////////////////////// - // logo download URL - // (size= 'small', 'medium', 'large') - logoUrl(size) { - //http://localhost:7676/api/v8/logo/small - return this.APIUrl("logo/" + size); - }, - ///////////////////////////// - // REPLACE END OF URL - // (used to change ID in url) - replaceAfterLastSlash(theUrl, theReplacement) { - return theUrl.substr(0, theUrl.lastIndexOf("\\") + 1) + theReplacement; - }, - ///////////////////////////// - // ENCODE QUERY STRING - // - buildQuery(obj, sep, eq, name) { - sep = sep || "&"; - eq = eq || "="; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === "object") { - return Object.keys(obj) - .map(function(k) { - const ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (Array.isArray(obj[k])) { - return obj[k] - .map(function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }) - .join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }) - .filter(Boolean) - .join(sep); - } - - if (!name) return ""; - return ( - encodeURIComponent(stringifyPrimitive(name)) + - eq + - encodeURIComponent(stringifyPrimitive(obj)) - ); - }, - /////////////////////////////////// - // GET DATA FROM API SERVER - // - async get(route) { - try { - const that = this; - - let r = await fetch(that.APIUrl(route), that.fetchGetOptions()); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - //fundamental error, can't proceed with this call - handleError("GET", error, route); - } - }, - - ////////////////////////////////////// - // Test delay for troubleshooting - // - doDelayAsync: () => { - // eslint-disable-next-line - return new Promise(resolve => { - setTimeout(() => resolve("I did something"), 10000); - }); - }, - /////////////////////////////////// - // POST / PUT DATA TO API SERVER - // - async upsert(route, data, isLogin = false) { - try { - const that = this; - //determine if this is a new or existing record - let fetchOptions = undefined; - //put? - if (data && data.concurrency) { - fetchOptions = that.fetchPutOptions(data); - } else { - //post - //ensure the route doesn't end in /0 which will happen if it's a new record - //since the edit forms just send the url here with the ID regardless - if (route.endsWith("/0")) { - route = route.slice(0, -2); - } - if (isLogin == false) { - fetchOptions = that.fetchPostOptions(data); - } else { - fetchOptions = that.fetchPostNoAuthOptions(data); - } - } - - let r = await fetch(that.APIUrl(route), fetchOptions); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - if (isLogin == false) { - handleError("UPSERT", error, route); - } else { - //specifically this is for the login page - console.log("upser error is: ", error); - throw new Error(window.$gz.errorHandler.errorToString(error)); - } - } - }, - /////////////////////////////////// - // DELETE DATA FROM API SERVER - // - async remove(route) { - const that = this; - try { - let r = await fetch(that.APIUrl(route), that.fetchRemoveOptions()); - that.statusEx(r); - //delete will return a body if there is an error of some kind with the request - r = await that.extractBodyEx(r); - return r; - } catch (error) { - //fundamental error, can't proceed with this call - handleError("DELETE", error, route); - } - }, - /////////////////////////////////// - // PUT DATA TO API SERVER - // (used for puts that can't have a concurrency token like above) - async put(route, data) { - try { - const that = this; - let r = await fetch(that.APIUrl(route), that.fetchPutOptions(data)); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - handleError("PUT", error, route); - } - }, - /////////////////////////////////// - // POST DATA TO API SERVER - // (used for post only routes not needing upserts) - async post(route, data) { - try { - const that = this; - let r = await fetch(that.APIUrl(route), that.fetchPostOptions(data)); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - handleError("POST", error, route); - } - }, - /////////////////////////////////// - // POST FILE ATTACHMENTS - // @param {sockId:objectid, sockType:aType, files:[array of files]} - // - async uploadAttachment(at) { - const that = this; - try { - var files = at.files; - var data = new FormData(); - for (var i = 0; i < files.length; i++) { - data.append(files[i].name, files[i]); - } - - data.append("AttachToAType", at.sockType); - data.append("AttachToObjectId", at.sockId); - data.append("Notes", at.notes); - data.append("FileData", at.fileData); - - //----------------- - - const fetchOptions = { - method: "post", - mode: "cors", - headers: { - Authorization: "Bearer " + window.$gz.store.state.apiToken - }, - body: data - }; - - let r = await fetch(that.APIUrl("attachment"), fetchOptions); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - handleError("POSTATTACHMENT", error, "uploadAttachmentRoute"); - } - }, - ////////////////////////////////////////////// - // POST (UPLOAD) FILE TO ARBITRARY ROUTE - // for various things that require an upload - // e.g. translation import etc - // - // - async upload(route, at) { - const that = this; - try { - var files = at.files; - var data = new FormData(); - for (var i = 0; i < files.length; i++) { - data.append(files[i].name, files[i]); - } - if (at.sockType) { - data.append("SockType", at.sockType); - } - if (at.sockId) { - data.append("ObjectId", at.sockId); - } - if (at.notes) { - data.append("Notes", at.notes); - } - data.append("FileData", at.fileData); - - //----------------- - - const fetchOptions = { - method: "post", - mode: "cors", - headers: { - Authorization: "Bearer " + window.$gz.store.state.apiToken - }, - body: data - }; - - let r = await fetch(that.APIUrl(route), fetchOptions); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - handleError("POSTATTACHMENT", error, route); - } - }, - - /////////////////////////////////// - // POST LOGO - // - // - async uploadLogo(fileData, size) { - const that = this; - try { - const data = new FormData(); - data.append(fileData.name, fileData); - - //----------------- - - const fetchOptions = { - method: "post", - mode: "cors", - headers: { - Authorization: "Bearer " + window.$gz.store.state.apiToken - }, - body: data - }; - - let r = await fetch(that.APIUrl("logo/" + size), fetchOptions); - that.statusEx(r); - r = await that.extractBodyEx(r); - return r; - } catch (error) { - handleError("uploadLogo", error, "postLogoRoute"); - } - }, - /////////////////////////////////// - // REPORT CLIENT META DATA - // - // - reportClientMetaData() { - const nowUtc = window.$gz.locale.nowUTC8601String(); - return { - UserName: window.$gz.store.state.userName, - UserId: window.$gz.store.state.userId, - Authorization: "Bearer " + window.$gz.store.state.apiToken, //api token for using api methods as current user viewing report - DownloadToken: window.$gz.store.state.downloadToken, - TimeZoneName: window.$gz.locale.getResolvedTimeZoneName(), - LanguageName: window.$gz.locale.getResolvedLanguage(), - Hour12: window.$gz.locale.getHour12(), - CurrencyName: window.$gz.locale.getCurrencyName(), - DefaultLocale: window.$gz.locale.getResolvedLanguage().split("-", 1)[0], //kind of suspect, maybe it can be removed - PDFDate: window.$gz.locale.utcDateToShortDateLocalized(nowUtc), - PDFTime: window.$gz.locale.utcDateToShortTimeLocalized(nowUtc) - }; - }, - /////////////////////////////////// - // FETCH BIZ OBJECT NAME - // - // - async fetchBizObjectName(sockType, objectId) { - const res = await this.get(`name/${sockType}/${objectId}`); - //We never expect there to be no data here - if (!Object.prototype.hasOwnProperty.call(res, "data")) { - return Promise.reject(res); - } else { - return res.data; - } - } - //--------------- - - //new functions above here -}; diff --git a/client/src/api/gzdialog.js b/client/src/api/gzdialog.js deleted file mode 100644 index 49ebdfa..0000000 --- a/client/src/api/gzdialog.js +++ /dev/null @@ -1,188 +0,0 @@ -let VM_LOCAL = null; - -//Calculate a reasonable time to show the alert based on the size of the message and some sane bounds -//https://ux.stackexchange.com/a/85898 -function CalculateDelay(msg) { - //Min 2 seconds max 8 seconds - return Math.min(Math.max(msg.length * 50, 3000), 8000); -} - -///////////////////////////////// -// Dialog, toast, notification -// utils and handlers -// -export default { - /////////////////////////////////// - // WIRE UP DIALOG EVENTS - // - // called once from app.vue only - // - wireUpEventHandlers(vm) { - //########################################### - //Notifications: pops up and slowly disappears - //ACTUAL UI IN gznotify.vue - //########################################### - - /////////// - //ERROR - window.$gz.eventBus.$on("notify-error", function handleNotifyWarn( - msg, - helpUrl - ) { - //log full message - window.$gz.store.commit("logItem", "notify-error: " + msg); - //trim really long message as it's likely useless beyond the first few lines (stack trace etc) - msg = msg.substring(0, 600); - vm.$root.$gznotify({ - message: msg, - type: "error", - timeout: CalculateDelay(msg), - helpUrl: helpUrl - }); - }); - - /////////// - //WARNING - window.$gz.eventBus.$on("notify-warning", function handleNotifyWarn( - msg, - helpUrl - ) { - window.$gz.store.commit("logItem", "notify-warning: " + msg); - msg = msg.substring(0, 600); - vm.$root.$gznotify({ - message: msg, - type: "warning", - timeout: CalculateDelay(msg), - helpUrl: helpUrl - }); - }); - - /////////// - //INFO - window.$gz.eventBus.$on("notify-info", function handleNotifyInfo( - msg, - helpUrl - ) { - window.$gz.store.commit("logItem", "notify-info: " + msg); - msg = msg.substring(0, 600); - vm.$root.$gznotify({ - message: msg, - type: "info", - timeout: CalculateDelay(msg), - helpUrl: helpUrl - }); - }); - - /////////// - //SUCCESS - window.$gz.eventBus.$on("notify-success", function handleNotifySuccess( - msg, - helpUrl - ) { - vm.$root.$gznotify({ - message: msg, - type: "success", - timeout: CalculateDelay(msg), - helpUrl: helpUrl - }); - }); - - VM_LOCAL = vm; - }, - //########################################### - //CONFIRMATION DIALOGS - //ACTUAL UI IN gzconfirm.vue - //########################################### - ///////////////////////////////////// - // Are you sure you want to delete? - // - confirmDelete() { - return VM_LOCAL.$root.$gzconfirm({ - message: window.$gz.translation.get("DeletePrompt"), - yesButtonText: window.$gz.translation.get("Delete"), - noButtonText: window.$gz.translation.get("Cancel"), - type: "warning" - }); - }, - ///////////////////////////////////// - // Are you sure you want to leave unsaved? - // - confirmLeaveUnsaved() { - return VM_LOCAL.$root.$gzconfirm({ - message: window.$gz.translation.get("AreYouSureUnsavedChanges"), - yesButtonText: window.$gz.translation.get("Leave"), - noButtonText: window.$gz.translation.get("Cancel"), - type: "warning" - }); - }, - ///////////////////////////////////// - // Display LT message with wait for ok - // - displayLTErrorMessage(tKeyText, tKeyTitle = undefined) { - return VM_LOCAL.$root.$gzconfirm({ - message: tKeyText ? window.$gz.translation.get(tKeyText) : "", - title: tKeyTitle ? window.$gz.translation.get(tKeyTitle) : "", - yesButtonText: window.$gz.translation.get("OK"), - type: "error" - }); - }, - ///////////////////////////////////// - // Display LT message with wait for ok - // - displayLTModalNotificationMessage( - tKeyText, - tKeyTitle = undefined, - ttype = "info", - tHelpUrl = undefined - ) { - return VM_LOCAL.$root.$gzconfirm({ - message: tKeyText ? window.$gz.translation.get(tKeyText) : "", - title: tKeyTitle ? window.$gz.translation.get(tKeyTitle) : "", - yesButtonText: window.$gz.translation.get("OK"), - type: ttype, - helpUrl: tHelpUrl - }); - }, - ///////////////////////////////////// - // Custom confirmation - // - confirmGeneric(tKey, ttype = "info") { - return VM_LOCAL.$root.$gzconfirm({ - message: window.$gz.translation.get(tKey), - yesButtonText: window.$gz.translation.get("OK"), - noButtonText: window.$gz.translation.get("Cancel"), - type: ttype - }); - }, - ///////////////////////////////////// - // Custom confirmation pre-translated - // - confirmGenericPreTranslated(msg, ttype = "info") { - return VM_LOCAL.$root.$gzconfirm({ - message: msg, - yesButtonText: window.$gz.translation.get("OK"), - noButtonText: window.$gz.translation.get("Cancel"), - type: ttype - }); - }, - ///////////////////////////////////// - // Custom confirmation no translation - // with all options available - // - displayNoTranslationModalNotificationMessage( - tKeyText, - tKeyTitle = undefined, - ttype = "info", - tHelpUrl = undefined - ) { - return VM_LOCAL.$root.$gzconfirm({ - message: tKeyText, - title: tKeyTitle, - yesButtonText: window.$gz.translation.get("OK"), - type: ttype, - helpUrl: tHelpUrl - }); - } - - //new functions above here -}; diff --git a/client/src/api/gzform.js b/client/src/api/gzform.js deleted file mode 100644 index 115c4f7..0000000 --- a/client/src/api/gzform.js +++ /dev/null @@ -1,1002 +0,0 @@ -/////////////////////////////// -// gzform -// -// provides form services and utilities -// validation services -// dirty and change tracking -// and also general error display in forms -//probably should be broken up more -// All translation keys for validation *MUST* be fetched prior to this being used as it assumes all keys are fetched first -// Add any new keys used to the block in translation.js=>commonKeysEditForm -import Vue from "vue"; - -let triggeringChange = false; - -function isEmpty(o) { - if (typeof o == "number" && o == 0) { - return false; - } - return !o; -} - -//////////////////////////////////// -// isInt value?? -// -//FROM HERE: https://stackoverflow.com/a/14794066/8939 -//fast test if is an integer: -function isInt(value) { - let x; - if (isNaN(value)) { - return false; - } - x = parseFloat(value); - return (x | 0) === x; -} - -//////////////////////////////////// -// isNumber -// -//FROM HERE: https://stackoverflow.com/a/1830632/8939 -function isNumber(n) { - return !isNaN(parseFloat(n)) && isFinite(n); -} - -//////////////////////////////////// -// Get control from ref -// -function getControl(vm, ref) { - return vm.$refs[ref]; -} - -//////////////////////////////////// -// Get value from control -// -function getControlValue(ctrl) { - return ctrl.value; -} - -//////////////////////////////////// -// Get field name from control -// -function getControlLabel(ctrl) { - if (ctrl.label == undefined) { - return "UNKNOWN CONTROL"; - } else { - return ctrl.label; - } -} - -///////////////////////////////////////// -// Get errors for a particular field -// from server error collection -// -function getErrorsForField(vm, ref) { - //Note: to debug this on forms just put {{ formState.serverError }} - //on the form to see what is actually stored there and should be showing - let ret = []; - if (ref == "generalerror") { - ret = vm.formState.serverError.details.filter( - z => z.target == false || z.target == "generalerror" - ); - } else { - ret = vm.formState.serverError.details.filter(function(o) { - if (!o.target) { - return false; - } - //server error fields are capitalized - //client field names are generally lower case except for custom fields - //so we need to normalize them all to lower case to match - //they will always differ by more than case so this is fine - - //NOTE: Indexed child collection error target field names are in this scheme "Items[2].FieldName" - //where Items is the name of the parent models property that contains the child collection - - return o.target.toLowerCase() == ref.toLowerCase(); - }); - } - return ret; -} - -/////////////////////////////// -// ERROR BOX ERRORS -// gathers any messages for error box on form which is the generic catch all for non field specific errors from server -// and application itself locally -function getErrorBoxErrors(vm, errs) { - let hasErrors = false; - let ret = ""; - if (errs.length > 0) { - hasErrors = true; - //loop array and append each error to a return string - for (let i = 0; i < errs.length; i++) { - ret += errs[i] + "\r\n"; - } - } - - //any application errors? - if (vm.formState.appError) { - hasErrors = true; - // console.log("gzform:geterrorboxerrors ", { - // appError: vm.formState.appError, - // ret: ret - // }); - ret += vm.formState.appError; - } - - if (!hasErrors) { - return null; - } else { - return ret; - } -} - -export default { - /////////////////////////////// - // REQUIRED - // - required(vm, ref) { - if (vm.formState.loading) { - return true; - } - - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (!isEmpty(value)) { - return true; - } - - // "ErrorRequiredFieldEmpty": "{0} is a required field. Please enter a value for {0}", - let err = vm.$sock.t("ErrorRequiredFieldEmpty"); - const fieldName = getControlLabel(ctrl); - err = err.replace("{0}", fieldName); - //replace only replaces first instance so need to do it twice - err = err.replace("{0}", fieldName); - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - - /////////////////////////////// - // MAXLENGTH - // - maxLength(vm, ref, max) { - if (vm.formState.loading) { - return true; - } - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (isEmpty(value)) { - return true; - } - - if (value.length > max) { - //get the translated rule text - // "ErrorFieldLengthExceeded": "{0} can not exceed {1} characters.", - let err = vm.$sock.t("ErrorFieldLengthExceeded"); - const fieldName = getControlLabel(ctrl); - err = err.replace("{0}", fieldName); - err = err.replace("{1}", max); - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - } else { - return true; - } - }, - /////////////////////////////// - // MAX 255 - // - max255(vm, ref) { - if (vm.formState.loading) { - return true; - } - return this.maxLength(vm, ref, 255); - }, - /////////////////////////////// - // DatePrecedence - // (start date must precede end date, however if both are empty then that's ok) - // - datePrecedence(vm, refStart, refEnd) { - if (vm.formState.loading) { - return true; - } - const ctrlStart = getControl(vm, refStart); - if (typeof ctrlStart == "undefined") { - return true; - } - - const ctrlEnd = getControl(vm, refEnd); - if (typeof ctrlEnd == "undefined") { - return true; - } - - let valueStart = getControlValue(ctrlStart); - if (isEmpty(valueStart)) { - return true; - } - - let valueEnd = getControlValue(ctrlEnd); - if (isEmpty(valueEnd)) { - return true; - } - - valueStart = window.$gz.DateTime.fromISO(valueStart); - valueEnd = window.$gz.DateTime.fromISO(valueEnd); - - // if either is not valid. - //moment.github.io/luxon/docs/manual/validity.html - if (!valueStart.isValid || !valueEnd.isValid) { - return true; - } - - if (valueStart > valueEnd) { - // "ErrorStartDateAfterEndDate": "Start date must be earlier than stop / end date", - const err = vm.$sock.t("ErrorStartDateAfterEndDate"); - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - } else { - return true; - } - }, - /////////////////////////////// - // Confirm password - // (two fields must match) - // - confirmMatch(vm, refFirst, refSecond) { - if (vm.formState.loading) { - return true; - } - const ctrlFirst = getControl(vm, refFirst); - if (typeof ctrlFirst == "undefined") { - return true; - } - - const ctrlSecond = getControl(vm, refSecond); - if (typeof ctrlSecond == "undefined") { - return true; - } - const valueFirst = getControlValue(ctrlFirst); - const valueSecond = getControlValue(ctrlSecond); - - if (valueFirst != valueSecond) { - const err = vm.$sock.t("ErrorNoMatch"); - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - } else { - return true; - } - }, - /////////////////////////////// - // INTEGER IS VALID - // - integerValid(vm, ref) { - if (vm.formState.loading) { - return true; - } - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - const value = getControlValue(ctrl); - if (isInt(value)) { - return true; - } - const err = vm.$sock.t("ErrorFieldValueNotInteger"); - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // DECIMAL - // Basically anything that can be a number is valid - // - decimalValid(vm, ref) { - if (vm.formState.loading) { - return true; - } - //TODO: Handle commas and spaces in numbers - //as per window.$gz.translation rules for numbers - - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (isEmpty(value)) { - return true; - } - - if (isNumber(value)) { - return true; - } - const err = vm.$sock.t("ErrorFieldValueNotDecimal"); - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // MAX VALUE - // Maximum numeric value - // maxValue is lt or eq - // empty is considered valid for this rule - // - maxValueValid(vm, ref, maxValue) { - if (vm.formState.loading) { - return true; - } - - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (isEmpty(value)) { - return true; - } - - if (!isNumber(value)) { - return true; - } - - //Ok, were here with a non empty number of some kind - if (value <= maxValue) { - return true; - } - - const err = `${vm.$sock - .t("ErrorFieldValueNumberGreaterThanMax") - .replace("{0}", maxValue)} ${maxValue}`; - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // MIN VALUE - // Minimum numeric value - // minValue is gt or eq - // empty is considered valid for this rule - // - minValueValid(vm, ref, minValue) { - if (vm.formState.loading) { - return true; - } - - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (isEmpty(value)) { - return true; - } - - if (!isNumber(value)) { - return true; - } - - //Ok, were here with a non empty number of some kind - //actual check - if (value >= minValue) { - return true; - } - - const err = `${vm.$sock - .t("ErrorFieldValueNumberLessThanMin") - .replace("{0}", minValue)} ${minValue}`; - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // EMAIL IS VALID-ish - //https://tylermcginnis.com/validate-email-address-javascript/ - emailValid(vm, ref) { - if (vm.formState.loading) { - return true; - } - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (isEmpty(value)) { - return true; - } - - if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value) == true) { - return true; - } - - const err = vm.$sock.t("ErrorAPI2203"); //"Invalid value" - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // USER REQUIRED FIELDS - // (Fields defined by Sockeye users as required on form that are not stock required already) - userRequiredFields(vm, ref, formCustomTemplateFieldName) { - if (vm.formState.loading) { - return true; - } - - const template = - window.$gz.store.state.formCustomTemplate[vm.formCustomTemplateKey]; - if (template === undefined) { - return true; - } - //See if control formCustomTemplateFieldName is in server required fields collection - //this is a collection of both custom field definitions and standard form fields that are required - //since all names are unique can just filter out the one we need by name which will inherently ignore custom fields by default - const templateItem = template.find( - z => z.fld == formCustomTemplateFieldName - ); - - //templateItem.required - if (templateItem === undefined || templateItem.required !== true) { - return true; - } - - const ctrl = getControl(vm, ref); - if (typeof ctrl == "undefined") { - return true; - } - - const value = getControlValue(ctrl); - if (!isEmpty(value)) { - return true; - } - - let err = vm.$sock.t("ErrorRequiredFieldEmpty"); - const fieldName = getControlLabel(ctrl); - err = err.replace("{0}", fieldName); - //replace only replaces first instance so need to do it twice - err = err.replace("{0}", fieldName); - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // CUSTOMFIELDS - // For now the only rule is that they can be required or not - // - customFieldsCheck(vm, templateItem, subvm, fieldName) { - if (vm.formState.loading) { - return true; - } - - if (templateItem.required !== true) { - return true; - } - - const value = subvm.GetValueForField(templateItem.dataKey); - if (!isEmpty(value)) { - return true; - } - - //It's empty and it's required so return error - let err = vm.$sock.t("ErrorRequiredFieldEmpty"); - err = err.replace("{0}", fieldName); - //replace only replaces first instance so need to do it twice - err = err.replace("{0}", fieldName); - - this.setFormState({ - vm: vm, - valid: false - }); - return err; - }, - /////////////////////////////// - // SERVER ERRORS - // Process and return server errors if any for form and field specified - // note that this is called in turn by every control on the form so it's only job - // is to return errors if they exist for *that* field - // Not to be confused with validation errors through the "rules" property - // that is separate and any errors returned here are *added* to the validation - // errors in the UI by Vuetify - // - serverErrors(vm, ref) { - const ret = []; - - //check for errors if we have any errors - if (!window.$gz.util.objectIsEmpty(vm.formState.serverError)) { - //First let's get the top level error code - const apiErrorCode = parseInt(vm.formState.serverError.code); - //Not all server errors mean the form is invalid, exceptions here - let formValid = false; - - /* - These errors are not the user's fault and no changes to the form are required - so they may be temporary and user should be able to retry save - API_CLOSED = 2000, - API_OPS_ONLY = 2001, - API_SERVER_ERROR = 2002, - VALIDATION_REFERENTIAL_INTEGRITY = 2208 - */ - switch (apiErrorCode) { - case 2000: - case 2001: - case 2002: - case 2208: - formValid = true; //we came here because the user saved because the form was valid so it's safe to set that the same again - break; - default: - formValid = false; - } - - //GENERAL ERROR - if (ref == "generalerror") { - //Add any general errors to ret (specific detail errors for the "generalerror" will be processed later below) - let err = vm.$sock.t("ErrorAPI" + apiErrorCode.toString()); - - if (vm.formState.serverError.message) { - err = err + "\r\n" + vm.formState.serverError.message; - } - - this.setFormState({ - vm: vm, - valid: formValid - }); - ret.push(err); - } - - //DETAIL ERRORS - //{"error":{"code":"2200","details":[{"message":"Exception: Error converting value \"\" to type 'Sockeye.Biz.AUTHORIZATION_ROLES'. Path 'roles', line 1, position 141.","target":"roles","error":"2203"}],"message":"Object did not pass validation"}} - //Specific field validation errors are in an array in "details" key - if (!window.$gz.util.objectIsEmpty(vm.formState.serverError.details)) { - //See if this key is in the details array - const errorsForField = getErrorsForField(vm, ref); - if (errorsForField.length > 0) { - //iterate the errorsForField object and add each to return array of errors - //de-lodash - //window.$gz. _.each(errorsForField, function(ve) { - errorsForField.forEach(function(ve) { - let fldErr = ""; - const fldErrorCode = parseInt(ve.error); - fldErr = - vm.$sock.t("ErrorAPI" + fldErrorCode.toString()) + - " [" + - ve.error + - "]"; - if (ve.message) { - //NOTE: call sync version here as can't call async code from here - //so translations must already be pre-fetched to work here - fldErr += - ' - "' + - window.$gz.translation.translateStringWithMultipleKeys( - ve.message - ) + - '"'; - ret.push(fldErr); - } else { - ret.push(fldErr); - } - }); - - this.setFormState({ - vm: vm, - valid: false - }); - - return ret; - } - } - } - - //default if no error message to display - return ret; - }, - /////////////////////////////// - // childRowHasError - // returns true if error exists for row - // else returns false - // (actual errors not returned just for row indicator, - // user opens child edit form to see exact error) - // - childRowHasError(vm, path) { - //Note: this just shows server errors, not local form validation errors - //it's assumed user will fix in form or when they submit see the error come back - //Note: this method is easily converted to return actual errors if it ever makes sense to do that but for now I'm ok with row TTM - - //No server errors? - if (window.$gz.util.objectIsEmpty(vm.formState.serverError)) { - //nothing to process - return null; - } - - //no detail errors? - if (window.$gz.util.objectIsEmpty(vm.formState.serverError.details)) { - //nothing to process - return null; - } - - path = path.toLowerCase(); - //Might be an error, check if collectionName is in error collection - //this is what we're dealing with - // { "code": "2200", "details": [ { "message": "LT:PurchaseOrderReceiptItemQuantityReceivedErrorInvalid", "target": "Items[0].QuantityReceived", "error": "2203" } ], "message": "ErrorAPI2200" } - //or multilayered like this: target: "Items[3].scheduledUsers[1].EstimatedQuantity" - //so set "path" accordingly easy peasy, such error, so wow - - //filter in items that start with the row collection name and index provided - return vm.formState.serverError.details.some(function(o) { - if (!o.target) { - return false; - } - return o.target.toLowerCase().includes(path); - }); - }, - /////////////////////////////// - // childRowErrorClass - // returns class to set on row if error exists for row - // else returns nothing - //( called by some forms but notably not the workorder or PO which have this built in) - // - childRowErrorClass(vm, collectionName, rowIndex) { - if (this.childRowHasError(vm, collectionName, rowIndex)) { - return "font-weight-black font-italic error--text"; - } - return null; - }, - /////////////////////////////// - // ShowMe - // (returns false if the field has been set to hidden by the user in the formcustomtemplate) - // NOTE: that in a form this should only be used with non stock-required fields, if they are already required they cannot be hidden - // - showMe(vm, formCustomTemplateFieldName) { - //special check for wiki field - //if read only then can't add any content and if no content then no reason to show it at all - if (formCustomTemplateFieldName == "wiki") { - if ( - vm.formState.readOnly && - (vm.obj.wiki == null || vm.obj.wiki.length == 0) - ) { - return false; - } - } - - const template = - window.$gz.store.state.formCustomTemplate[vm.formCustomTemplateKey]; - - if (template === undefined) { - return true; - } - //See if control templateFieldName is in server required fields collection - //this is a collection of both custom field definitions and standard form fields that are required - //since all names are unique can just filter out the one we need by name which will inherently ignore custom fields by default - - const templateItem = template.find( - z => z.fld.toLowerCase() == formCustomTemplateFieldName.toLowerCase() - ); - - if (templateItem === undefined || templateItem.hide !== true) { - return true; - } - - //Only here if we have a record in the custom template for this particular field and it's set to hide:true - return false; - }, - - /////////////////////////////// - // ClearformState.serverErrors - // Clear all server errors and app errors and ensure error box doesn't show - // - deleteAllErrorBoxErrors(vm) { - //clear all keys from server error - window.$gz.util.removeAllPropertiesFromObject(vm.formState.serverError); - //clear app errors - vm.formState.appError = null; - //clear out actual message box display - vm.formState.errorBoxMessage = null; - - this.setFormState({ - vm: vm, - valid: true - }); - }, - /////////////////////////////// - // setErrorBoxErrors - // Gather server errors and set the appropriate keys - // - setErrorBoxErrors(vm) { - const errs = this.serverErrors(vm, "generalerror"); - const ret = getErrorBoxErrors(vm, errs); - vm.formState.errorBoxMessage = ret; - }, - /////////////////////////////// - // On fieldValueChanged handler - // formReference is an optional string name of the form ref property if alternative named form - // - Clear server errrors for this field - // - Flag form dirty - // - check and flag form validity - // - // - fieldValueChanged(vm, ref, formReference) { - const that = this; - let formControl = null; - if (formReference == undefined) { - formControl = vm.$refs.form; - } else { - //NOTE: Due to automatic code formatting some refs may come here with newlines in them resulting in no matches - formReference = formReference.replace(/\s/g, ""); - formControl = vm.$refs[formReference]; - } - - //dev error on form? - if (formControl == null) { - if (vm.$sock.dev) { - //not necessarily an error, can happen during form init - console.trace( - `gzform::fieldValueChanged formControl is not found ref:${ref}, formReferences:${formReference} ` - ); - } else { - return; - } - } - - //this is currently required to ensure that this method runs after all the broken rule checks have settled - Vue.nextTick(function() { - //------------- - if (triggeringChange || vm.formState.loading) { - return; - } - - //# REMOVE SERVER ERRORS FOR THIS FIELD REF - const targetRef = ref.toLowerCase(); - - //NOTE: This block of code is meant to remove all detailed server errors where the Target matches the current referenced control - //Then it checks to see if there is anything left in details as this might have been all there was and if so removes that whole thing - //leaving only errors for other fields or nothing if this ref field was all the errors left - - //Remove any server errors that are for our target ref field - //and also set a flag if there *are* any server errors for our target field - let targetFieldHasServerError = false; - - if (vm.formState.serverError.details) { - let i = vm.formState.serverError.details.length; - //iterate backwards so we can mutate the array in place - while (i--) { - var o = vm.formState.serverError.details[i]; - if (o.target && o.target.toLowerCase() == targetRef) { - //remove it, it's for our ref field - vm.formState.serverError.details.splice(i, 1); - targetFieldHasServerError = true; - } - } - } - - //# CLEAN UP SERVER ERRORS IF NONE LEFT - //If there are no more errors in details then remove the whole thing as it's no longer required - if ( - vm.formState.serverError.details && - vm.formState.serverError.details.length < 1 - ) { - if (vm.formState.serverError.code == "2200") { - //clear all keys from server error - window.$gz.util.removeAllPropertiesFromObject( - vm.formState.serverError - ); - } - } - - //# CLEAR OUT STALE VALIDATION ERRORS FOR CONTROL - //Clear out old validation display in form by forcing the control's data to change - //I tried calling form validate and reset but it did nothing - //probably because it has safeguards to prevent excess validation, this works though so far - //I added the triggering change guard but it actually doesn't seem to be required here, more investigation is required - - //TODO: find a cleaner way to remove old validation on the control, why can't it just be set on the control referenced?? - - if (targetFieldHasServerError) { - triggeringChange = true; - const val = vm.obj[ref]; - vm.obj[ref] = null; - vm.obj[ref] = val; - triggeringChange = false; - } - - //# UPDATE FORM STATUS - let formValid = formControl.validate(); - that.setFormState({ - vm: vm, - dirty: true, - valid: formValid - }); - //--------------- - }); //next tick end - }, - - setFormState(newState) { - //this returns a promise so any function that needs to wait for this can utilize that - - return Vue.nextTick(function() { - if (newState.valid != null) { - newState.vm.formState.valid = newState.valid; - } - - if (newState.dirty != null) { - newState.vm.formState.dirty = newState.dirty; - } - - if (newState.loading != null) { - newState.vm.formState.loading = newState.loading; - } - - if (newState.readOnly != null) { - newState.vm.formState.readOnly = newState.readOnly; - } - - if (newState.ready != null) { - newState.vm.formState.ready = newState.ready; - } - }); - }, - //////////////////////////////////// - // Get form settings - // for form specified or empty object if there is none - // EAch form is responsible for what it stores and how it initializes, this just provides that - // the form does the actual work of what settings it requires - // Form settings are temp and saved, saved ones go into vuex and localstorage and persist a refresh - // and temporary ones are stored in session storage and don't persist a refresh - // - getFormSettings(formKey) { - return { - temp: JSON.parse(sessionStorage.getItem(formKey)), - saved: window.$gz.store.state.formSettings[formKey] - }; - }, - //////////////////////////////////// - // Set form settings - // for form key specified - // requires object with one or both keys {temp:{...tempformsettings...},saved:{...persistedformsettings...}} - // - setFormSettings(formKey, formSettings) { - if (formSettings.saved) { - window.$gz.store.commit("setFormSettings", { - formKey: formKey, - formSettings: formSettings.saved - }); - } - - if (formSettings.temp) { - sessionStorage.setItem(formKey, JSON.stringify(formSettings.temp)); - } - }, //////////////////////////////////// - // Get last report used from form settings - // - getLastReport(formKey) { - const fs = window.$gz.store.state.formSettings[formKey]; - if (fs == null || fs.lastReport == null) { - return null; - } - return fs.lastReport; - }, //////////////////////////////////// - // Set last report used in form settings - // - setLastReportMenuItem(formKey, reportSelected, vm) { - let fs = window.$gz.store.state.formSettings[formKey]; - if (fs == null) { - fs = {}; - } - fs.lastReport = reportSelected; - - window.$gz.store.commit("setFormSettings", { - formKey: formKey, - formSettings: fs - }); - - window.$gz.eventBus.$emit("menu-upsert-last-report", { - title: reportSelected.name, - notrans: true, - icon: "$sockiFileAlt", - key: formKey + ":report:" + reportSelected.id, - vm: vm - }); - }, //////////////////////////////////// - // Add no selection item - // Used by forms that need the option of an unselected - // item in a pick list - // - addNoSelectionItem(listArray, nullNotZero) { - if (listArray == undefined || listArray == null) { - listArray = []; - } - listArray.unshift({ name: "-", id: nullNotZero ? null : 0 }); - }, - //////////////////////////////////// - // Get no selection item - // Used by forms that need just the - // unselected item itself not added - // to a list - // - getNoSelectionItem(nullNotZero) { - return { name: "-", id: nullNotZero ? null : 0 }; - }, - //////////////////////////////////// - // Get validity of referenced control - // - controlIsValid(vm, ref) { - if (vm.$refs[ref]) { - return vm.$refs[ref].valid; - } - return false; - }, - //////////////////////////////////////// - // All controls are valid? - // - controlsAreAllValid(vm, refs) { - //if any are not valid return false - for (let i = 0; i < refs.length; i++) { - const item = refs[i]; - if (vm.$refs[item]) { - if (!vm.$refs[item].valid) { - return false; - } - } - } - return true; - }, - //////////////////////////////////////// - // Standard object not found handler - // - handleObjectNotFound(vm) { - window.$gz.eventBus.$emit("notify-error", vm.$sock.t("ErrorAPI2010")); - //after small delay to show error - //(the navigate removes the toast notification immediately) - setTimeout(function() { - vm.$router.go(-1); - }, 2000); - }, - //////////////////////////////////////// - // Standard data table row error class - // - tableRowErrorClass() { - return "font-weight-black font-italic error--text "; - }, - //////////////////////////////////////// - // Standard data table deleted class - // - tableRowDeletedClass() { - return "text-decoration-line-through "; - } -}; diff --git a/client/src/api/gzmenu.js b/client/src/api/gzmenu.js deleted file mode 100644 index e81f375..0000000 --- a/client/src/api/gzmenu.js +++ /dev/null @@ -1,438 +0,0 @@ -///////////////////////////////// -// Menu utils and handlers -// -export default { - /////////////////////////////////////////// - // TECH SUPPORT / CONTACT FORUM URL - // - contactSupportUrl() { - const dbId = encodeURIComponent( - window.$gz.store.state.globalSettings.serverDbId - ); - const company = encodeURIComponent( - window.$gz.store.state.globalSettings.company - ); - return `https://contact.ayanova.com/contact?dbid=${dbId}&company=${company}`; - }, - /////////////////////////////// - // CHANGE HANDLER - // - // Deal with a menu change request - // called from App.vue - handleMenuChange(vm, ctx) { - const UTILITY_TYPES = [ - window.$gz.type.NoType, - window.$gz.type.Global, - window.$gz.type.NoType, - window.$gz.type.ServerState, - window.$gz.type.License, - window.$gz.type.LogFile, - window.$gz.type.ServerJob, - window.$gz.type.TrialSeeder, - window.$gz.type.ServerMetrics, - window.$gz.type.UserOptions, - window.$gz.type.FormCustom, - window.$gz.type.DataListSavedFilter, - window.$gz.type.GlobalOps, - window.$gz.type.BizMetrics, - window.$gz.type.Backup, - window.$gz.type.Notification, - window.$gz.type.NotifySubscription - ]; - - vm.appBar.isMain = ctx.isMain; - vm.appBar.icon = ctx.icon; - - vm.appBar.title = ""; //this prevents fou[translated]c - vm.appBar.readOnly = ctx.readOnly; - - if (ctx.readOnly === true) { - vm.appBar.color = "readonlybanner"; - } else { - vm.appBar.color = ctx.isMain ? "primary" : "secondary"; - } - - //ctx.title if set is a Translation key - //ctx.formData.recordName is the object name or serial number or whatever identifies it uniquely - let recordName = ""; - if ( - ctx && - ctx.formData && - ctx.formData.recordName && - ctx.formData.recordName != "null" //some forms (part) present "null" as the record name due to attempts to format a name so if that's the case just turn it into null here to bypass - ) { - recordName = ctx.formData.recordName; - } - const hasRecordName = !window.$gz.util.stringIsNullOrEmpty(recordName); - if (ctx.title) { - //it has a title translation key - const translatedTitle = vm.$sock.t(ctx.title); - if (hasRecordName) { - //recordname takes all precedence in AppBar in order to conserve space (narrow view etc) - //also it just looks cleaner, the icon is already there to indicate where the user is at - vm.appBar.title = recordName; - document.title = `${recordName} - ${translatedTitle} Sockeye `; - } else { - vm.appBar.title = translatedTitle; - document.title = `${translatedTitle} ${recordName}`; - } - } else { - if (hasRecordName) { - //not title but has record name - vm.appBar.title = recordName; - document.title = `${recordName} Sockeye`; - } else { - document.title = "Sockeye"; - } - } - - //Parse the formdata if present - //FORMDATA is OPTIONAL and only required for forms that need to allow - //viewing object history, attachments, custom fields, etc that kind of thing - //usually CORE objects with an id, NOT utility type forms - let formSockType = 0; - let formRecordId = 0; - if (ctx.formData) { - if (ctx.formData.sockType != null) { - formSockType = ctx.formData.sockType; - } - if (ctx.formData.recordId != null) { - formRecordId = ctx.formData.recordId; - } - } - - //flag for if it's wikiable, reviewable, attachable, searchable, historical - const isCoreBizObject = formSockType != 0 && formRecordId != 0; - - //set the help url if presented or default to the User section intro - vm.appBar.helpUrl = ctx.helpUrl ? ctx.helpUrl : "user-intro"; - - vm.appBar.menuItems = []; - - //CONTEXT TOP PORTION - //populate the context portion of the menu so handle accordingly - if (ctx.menuItems) { - vm.appBar.menuItems = ctx.menuItems; - } - - //STANDARD BIZ OBJECT OPTIONS - //NOTE: This applies equally to all core business object types that are basically real world and have an id and a type (all are wikiable, attachable and reviewable) - //Not utility type objects like datalist etc - //there will be few exceptions so they will be coded in later if needed but assume anything with an id and a type - if (isCoreBizObject && !ctx.hideCoreBizStandardOptions) { - //"Review" was follow up type of schedule marker - //basically it's now a "Reminder" type of object but it's own thing with separate collection - - vm.appBar.menuItems.push({ - title: "Review", - icon: "$sockiCalendarCheck", - key: "app:review", - data: { - sockType: formSockType, - recordId: formRecordId, - recordName: recordName - } - }); - - //AFAIK right now any item with an id and a type can have a history - //anything not would be the exception rather than the rule - vm.appBar.menuItems.push({ - title: "History", - icon: "$sockiHistory", - key: "app:history", - data: { sockType: formSockType, recordId: formRecordId } - }); - } - - //CUSTOMIZE - //set custom fields and link to translation text editor - - if ( - isCoreBizObject && - ctx.formData && - ctx.formData.formCustomTemplateKey != undefined && - window.$gz.role.hasRole([ - window.$gz.role.AUTHORIZATION_ROLES.BizAdmin, - window.$gz.role.AUTHORIZATION_ROLES.BizAdminRestricted - ]) - ) { - //NOTE: BizAdmin can edit, BizAdminRestricted can read only - //add customize menu item - - //customize - vm.appBar.menuItems.push({ - title: "Customize", - icon: "$sockiCustomize", - data: ctx.formData.formCustomTemplateKey, - key: "app:customize" - }); - } - - //GLOBAL BOTTOM PORTION - - //SEARCH - //all forms except the search form - if (!ctx.hideSearch && !UTILITY_TYPES.includes(formSockType)) { - //For all forms but not on the search form itself; if this is necessary for others then make a nosearch or something flag controlled by incoming ctx but if not then this should suffice - vm.appBar.menuItems.push({ - title: "Search", - icon: "$sockiSearch", - key: "app:search", - data: formSockType - }); - } - - //HELP - vm.appBar.menuItems.push({ - title: "MenuHelp", - icon: "$sockiQuestionCircle", - key: "app:help", - data: vm.appBar.helpUrl - }); - - //ABOUT - if (!isCoreBizObject && ctx.helpUrl != "sock-about") { - vm.appBar.menuItems.push({ - title: "HelpAboutSockeye", - icon: "$sockiInfoCircle", - key: "app:nav:abt", - data: "sock-about" - }); - } - }, - //Unused to date of beta 0.9 - // /////////////////////////////// - // // CHANGE HANDLER - // // - // // Deal with a menu item update request - // // called from App.vue - // handleReplaceMenuItem(vm, newItem) { - // if (!vm.appBar.menuItems || !newItem) { - // return; - // } - // //Find the key that is in the collection and replace it - // for (let i = 0; i < vm.appBar.menuItems.length; i++) { - // if (vm.appBar.menuItems[i].key == newItem.key) { - // //NOTE: since we are adding a new object, it has no reactivity in it so we need to use the Vue.Set to set it which - // //automatically adds the setters and getters that trigger reactivity - // //If it was set directly on the array it wouldn't update the UI - // vm.$set(vm.appBar.menuItems, i, newItem); - // return; - // } - // } - // }, - ////////////////////////////////////////////// - // LAST REPORT CHANGE HANDLER - // update / add last report menu item - // - handleUpsertLastReport(vm, newItem) { - if (!vm.appBar.menuItems || !newItem) { - return; - } - - /* - window.$gz.eventBus.$emit("menu-upsert-last-report", { - title: reportSelected.name, - notrans: true, - icon: "$sockiFileAlt", - key: formKey + ":report:" + reportSelected.id, - vm: vm - }); - */ - let key = null; - //Find the last report key and update it if present - for (let i = 0; i < vm.appBar.menuItems.length; i++) { - key = vm.appBar.menuItems[i].key; - if (key && key.includes(":report:")) { - vm.appBar.menuItems[i].key = newItem.key; - vm.appBar.menuItems[i].title = newItem.title; - return; - } - } - //No prior last report so slot it in under the report one - for (let i = 0; i < vm.appBar.menuItems.length; i++) { - key = vm.appBar.menuItems[i].key; - if (key && key.endsWith(":report")) { - vm.appBar.menuItems.splice(i + 1, 0, newItem); - } - } - }, - /////////////////////////////// - // ENABLE / DISABLE HANDLER - // - // Deal with a menu item enable / disable - // called from App.vue - handleDisableMenuItem(vm, key, disabled) { - if (!vm.appBar.menuItems || !key) { - return; - } - - //Find the menu item and set it to disabled and recolor it to disabled color and return - for (let i = 0; i < vm.appBar.menuItems.length; i++) { - const menuItem = vm.appBar.menuItems[i]; - if (menuItem.key == key) { - vm.$set(vm.appBar.menuItems[i], "disabled", disabled); - //menuItem.disabled = disabled; - vm.$set(vm.appBar.menuItems[i], "color", disabled ? "disabled" : ""); - return; - } - } - }, - /////////////////////////////// - // CHANGE ICON HANDLER - // Change icon dymanically - // (note, can pass null for new icon to clear it) - // - handleChangeMenuItemIcon(vm, key, newIcon) { - if (!vm.appBar.menuItems || !key) { - return; - } - - //Find the menu item and change it's icon - for (let i = 0; i < vm.appBar.menuItems.length; i++) { - const menuItem = vm.appBar.menuItems[i]; - if (menuItem.key == key) { - vm.$set(vm.appBar.menuItems[i], "icon", newIcon); - return; - } - } - }, - /////////////////////////////// - // APP (GLOBAL) CLICK HANDLER - // - // Deal with a menu change request - // called from App.vue - handleAppClick(vm, menuItem) { - //Key will start with the string "app:" if it's a global application command that should be handled here, - //otherwise it's a local command for a local form only - //If there is any extended information required for the command it will be in the data property of the menu item - //split a key into component parts, part one is the responsible party, part two is the command, part three only exists to make it unique if necessary - //each part is separated by a colon - - //Handle different items - const item = this.parseMenuItem(menuItem); - if (!item.disabled && item.owner == "app") { - switch (item.key) { - case "help": - if (item.data.includes("~customer~")) { - window.open( - window.$gz.api.helpUrlCustomer() + - item.data.replace("~customer~", ""), - "_blank" - ); - } else { - window.open(window.$gz.api.helpUrl() + item.data, "_blank"); - } - break; - - case "search": - vm.$router.push({ - name: "home-search", - params: { socktype: item.data } - }); - break; - case "review": - //go to list - // path: "/home-reviews/:aType?/:objectId?", - vm.$router.push({ - name: "home-reviews", - params: { - aType: window.$gz.util.stringToIntOrNull(item.data.sockType), - objectId: window.$gz.util.stringToIntOrNull(item.data.recordId), - name: item.data.recordName - } - }); - break; - case "history": - vm.$router.push({ - name: "sock-history", - params: { - socktype: item.data.sockType, - recordid: item.data.recordId - } - }); - break; - case "customize": - vm.$router.push({ - name: "sock-customize", - params: { formCustomTemplateKey: item.data } - }); - break; - case "nav": - vm.$router.push({ name: item.data }); - break; - default: - window.$gz.eventBus.$emit( - "notify-warning", - "gzmenu:handleAppClick - unrecognized command [" + - menuItem.key + - "]" - ); - } - } - }, - /////////////////////////////// - // PARSE MENU ITEM CLICK - // - // parse out the parts of a - // menu item from a click event - // - parseMenuItem(menuItem) { - //format is "AREA:KEY:UNIQUEID" - //and data is in data portion - const keyparts = menuItem.key.split(":"); - const ret = { - owner: keyparts[0], - key: keyparts[1], - data: menuItem.data, - disabled: menuItem.disabled, - vm: menuItem.vm ? menuItem.vm : null - }; - if (keyparts.length > 2) { - ret.id = keyparts[2]; - } - return ret; - }, - /////////////////////////////////// - // WIRE UP MENU EVENTS - // - // called once from app.vue only - // - wireUpEventHandlers(vm) { - const that = this; - window.$gz.eventBus.$on("menu-change", function handleMenuChange(ctx) { - that.handleMenuChange(vm, ctx); - }); - - window.$gz.eventBus.$on( - "menu-upsert-last-report", - function handleUpsertLastReport(newItem) { - that.handleUpsertLastReport(vm, newItem); - } - ); - - window.$gz.eventBus.$on("menu-disable-item", function handleDisableMenuItem( - key - ) { - that.handleDisableMenuItem(vm, key, true); - }); - - window.$gz.eventBus.$on("menu-enable-item", function handleDisableMenuItem( - key - ) { - that.handleDisableMenuItem(vm, key, false); - }); - - window.$gz.eventBus.$on( - "menu-change-item-icon", - function handleChangeMenuItemIcon(key, newIcon) { - that.handleChangeMenuItemIcon(vm, key, newIcon); - } - ); - - window.$gz.eventBus.$on("menu-click", function handleMenuClick(menuitem) { - that.handleAppClick(vm, menuitem); - }); - } - //new functions above here -}; diff --git a/client/src/api/gzutil.js b/client/src/api/gzutil.js deleted file mode 100644 index 998bcc1..0000000 --- a/client/src/api/gzutil.js +++ /dev/null @@ -1,931 +0,0 @@ -///////////////////////////////// -// General utility library -// - -const icons = { - image: "$sockiFileImage", - pdf: "$sockiFilePdf", - word: "$sockiFileWord", - powerpoint: "$sockiFilePowerpoint", - excel: "$sockiFileExcel", - csv: "$sockiFileCsv", - audio: "$sockiFileAudio", - video: "$sockiFileVidio", - archive: "$sockiFileArchive", - code: "$sockiFileCode", - text: "$sockiFileAlt", - file: "$sockiFile" -}; -const mimeTypes = { - "image/gif": icons.image, - "image/jpeg": icons.image, - "image/png": icons.image, - "image/webp": icons.image, - - "application/pdf": icons.pdf, - - "application/msword": icons.word, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": - icons.word, - - "application/mspowerpoint": icons.powerpoint, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": - icons.powerpoint, - - "application/msexcel": icons.excel, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": - icons.excel, - - "text/csv": icons.csv, - - "audio/aac": icons.audio, - "audio/wav": icons.audio, - "audio/mpeg": icons.audio, - "audio/mp4": icons.audio, - "audio/ogg": icons.audio, - - "video/x-msvideo": icons.video, - "video/mpeg": icons.video, - "video/mp4": icons.video, - "video/ogg": icons.video, - "video/quicktime": icons.video, - "video/webm": icons.video, - - "application/gzip": icons.archive, - "application/zip": icons.archive, - "application/x-tar": icons.archive, - - "text/css": icons.code, - "text/html": icons.code, - "text/javascript": icons.code, - "application/javascript": icons.code, - - "text/plain": icons.text, - "text/richtext": icons.text, - "text/rtf": icons.text, - "application/rtf": icons.text, - "application/json": icons.text -}; - -const extensions = { - gif: icons.image, - jpeg: icons.image, - jpg: icons.image, - png: icons.image, - webp: icons.image, - - pdf: icons.pdf, - - doc: icons.word, - docx: icons.word, - - ppt: icons.powerpoint, - pptx: icons.powerpoint, - - xls: icons.excel, - xlsx: icons.excel, - - csv: icons.csv, - - aac: icons.audio, - mp3: icons.audio, - ogg: icons.audio, - - avi: icons.video, - flv: icons.video, - mkv: icons.video, - mp4: icons.video, - - gz: icons.archive, - zip: icons.archive, - tar: icons.archive, - "7z": icons.archive, - - css: icons.code, - html: icons.code, - js: icons.code, - - txt: icons.text, - json: icons.text, - rtf: icons.text -}; - -export default { - /////////////////////////////// - // CLEAN OBJECT - // Clear all properties from object without resorting to assigning a new object (o={}) - // which can be problematic in some cases (IE bugs, watched data items in forms etc) - - removeAllPropertiesFromObject: function(o) { - for (let variableKey in o) { - if (Object.prototype.hasOwnProperty.call(o, variableKey)) { - delete o[variableKey]; - } - } - }, - /////////////////////////////// - // DEEP COPY FOR API UPDATE - // Deep copy an object skipping all *Viz and named properties from object - // - deepCopySkip: function(source, skipNames) { - if (skipNames == null) { - skipNames = []; - } - let o = {}; - for (let key in source) { - if ( - !key.endsWith("Viz") && - !skipNames.some(x => x == key) && - Object.prototype.hasOwnProperty.call(source, key) - ) { - o[key] = source[key]; - } - } - return o; - }, - - /** - * Copy a string to clipboard - * @param {String} string The string to be copied to clipboard - * @return {Boolean} returns a boolean correspondent to the success of the copy operation. - * Modified from an example here: https://stackoverflow.com/a/53951634/8939 - * Basically a fallback if navigator.clipboard is not available - */ - copyToClipboard: function(string) { - let textarea; - let result; - - if (navigator && navigator.clipboard) { - navigator.clipboard.writeText(string); - } else { - try { - textarea = document.createElement("textarea"); - textarea.setAttribute("readonly", true); - textarea.setAttribute("contenteditable", true); - textarea.style.position = "fixed"; // prevent scroll from jumping to the bottom when focus is set. - textarea.value = string; - - document.body.appendChild(textarea); - - textarea.focus(); - textarea.select(); - - const range = document.createRange(); - range.selectNodeContents(textarea); - - const sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - - textarea.setSelectionRange(0, textarea.value.length); - result = document.execCommand("copy"); - } catch (err) { - result = null; - } finally { - document.body.removeChild(textarea); - } - - // manual copy fallback using prompt - if (!result) { - const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0; - const copyHotkey = isMac ? "⌘C" : "CTRL+C"; - result = prompt(`Press ${copyHotkey}`, string); - if (!result) { - return false; - } - } - } - return true; - }, - /////////////////////////////// - // ROUNDING - // //https://medium.com/swlh/how-to-round-to-a-certain-number-of-decimal-places-in-javascript-ed74c471c1b8 - roundAccurately: function(number, decimalPlaces) { - if (!number || number == 0 || Number.isNaN(number)) { - return number; - } - const wasNegative = number < 0; - if (wasNegative) { - number = Math.abs(number); //make sure it's positive because rounding negative numbers is weird in JS - } - number = Number( - Math.round(number + "e" + decimalPlaces) + "e-" + decimalPlaces - ); - if (wasNegative) { - number = 0 - number; - } - return number; - }, - /////////////////////////////// - // CLEAN TAG NAME - // Clean up a tag with same rules as server - // - normalizeTag: function(tagName) { - if (!tagName || tagName == "") { - return null; - } - tagName = tagName.toLowerCase(); - - //spaces to dashes - tagName = tagName.replace(/ /gi, "-"); - - //multiple dashes to single dashes - tagName = tagName.replace(/-+/g, "-"); - - //ensure doesn't start or end with a dash - tagName = this.trimSpecific(tagName, "-"); - - //No longer than 255 characters - tagName = tagName.length > 255 ? tagName.substr(0, 255 - 1) : tagName; - - return tagName; - }, - /////////////////////////////// - // Quick hash for trivial purposes - // not cryptographic - // https://stackoverflow.com/a/7616484/8939 - // - quickHash: function(theString) { - let hash = 0; - let i; - let chr; - if (theString.length === 0) return hash; - for (i = 0; i < theString.length; i++) { - chr = theString.charCodeAt(i); - hash = (hash << 5) - hash + chr; - hash |= 0; // Convert to 32bit integer - } - return hash; - }, - - //////////////////////////////////////// - // Random password / login generator - // https://stackoverflow.com/a/51540480/8939 - // using 32 character (128 bit) as default - // - getRandomPassword: function() { - const wishlist = "0123456789abcdefghijkmnopqrstuvwxyz"; - - return Array.from(crypto.getRandomValues(new Uint32Array(32))) - .map(x => wishlist[x % wishlist.length]) - .join(""); - }, - /////////////////////////////// - // CONVERT STRING TO BOOLEAN - // https://stackoverflow.com/a/1414175/8939 - // - stringToBoolean: function(string) { - switch (string.toLowerCase().trim()) { - case "true": - case "yes": - case "1": - return true; - case "false": - case "no": - case "0": - case null: - return false; - default: - return Boolean(string); - } - }, /////////////////////////////// - // CONVERT STRING TO FLOAT - // https://stackoverflow.com/a/9409894/8939 - // - stringToFloat: function(string) { - //null or empty then zero - if (!string) { - return 0; - } - - //A number already then parse and return - if (this.isNumeric(string)) { - if (Number.isNaN(string)) { - return 0; - } - return parseFloat(string); - } - - //Not a string at all? - if (!this.isString(string)) { - return 0; - } - - const ret = parseFloat(string.replace(/[^\d.-]/g, "")); - if (Number.isNaN(ret)) { - return 0; - } - - return ret; - }, - /////////////////////////////// - // Is negative number - // - // - isNegative: function(v) { - //null or empty then zero - if (!v || v == 0 || Number.isNaN(v)) { - return false; - } - return parseFloat(v) < 0; - }, - /////////////////////////////// - // Splice a string - //changes the content of a string by removing a range of - // characters and/or adding new characters. - // - // @param {String} source string - // @param {number} start Index at which to start changing the string. - // @param {number} delCount An integer indicating the number of old chars to remove. - // @param {string} newSubStr The String that is spliced in. - // @return {string} A new string with the spliced substring. - stringSplice: function(source, start, delCount, newSubStr) { - if (source == null || source == "") { - if (newSubStr) { - return newSubStr; - } - return ""; - } - return ( - source.slice(0, start) + - newSubStr + - source.slice(start + Math.abs(delCount)) - ); - }, - /////////////////////////////// - // Truncate a string - //truncates and adds ellipses - // - // @param {String} source string - // @param {number} length desired - // @return {string} A new string truncated with ellipses at end - truncateString: function(s, len) { - if (this.stringIsNullOrEmpty(s)) { - return s; - } - if (s.length > len) { - return s.substring(0, len) + "..."; - } else { - return s; - } - }, - /////////////////////////////// - // Format tags for display - // - // - // @param {String} tags raw from server - // @return {string} A new string with the tags formatted or an empty string if no tags - formatTags: function(tags) { - if (tags && tags.length > 0) { - return tags.join(", "); - } - return ""; - }, - /////////////////////////////// - // ICON FOR *ALL* OBJECT TYPES - //(used for search results and event log / history) - //NOTE: Any object type could appear in event log, they all need to be supported where possible - //CoreBizObject add here - iconForType: function(sockType) { - switch (sockType) { - case window.$gz.type.NoType: - case null: - return "$sockiGenderless"; - case window.$gz.type.Global: - return "$sockiGlobe"; - case window.$gz.type.User: - return "$sockiUser"; - case window.$gz.type.ServerState: - return "$sockiDoorOpen"; - - case window.$gz.type.LogFile: - return "$sockiGlasses"; - case window.$gz.type.PickListTemplate: - return "$sockiPencilRuler"; - case window.$gz.type.Customer: - return "$sockiAddressCard"; - case window.$gz.type.Vendor: - return "$ayiStore"; - case window.$gz.type.ServerJob: - return "$sockiRobot"; - - case window.$gz.type.Metrics: - return "$sockiFileMedicalAlt"; - case window.$gz.type.Translation: - return "$sockiLanguage"; - case window.$gz.type.UserOptions: - return "$sockiUserCog"; - case window.$gz.type.HeadOffice: - return "$sockiSitemap"; - - case window.$gz.type.FileAttachment: - return "$sockiPaperclip"; - case window.$gz.type.DataListSavedFilter: - return "$sockiFilter"; - case window.$gz.type.FormCustom: - return "$sockiCustomize"; - - case window.$gz.type.Backup: - return "$sockiFileArchive"; - case window.$gz.type.Notification: - return "$sockiBell"; - case window.$gz.type.NotifySubscription: - return "$sockiBullhorn"; - case window.$gz.type.Reminder: - return "$sockiStickyNote"; - - case window.$gz.type.OpsNotificationSettings: - return "$sockiBullhorn"; - case window.$gz.type.Report: - return "$sockiThList"; - case window.$gz.type.DashboardView: - return "$sockiTachometer"; - case window.$gz.type.CustomerNote: - return "$sockiClipboard"; - case window.$gz.type.Memo: - return "$sockiInbox"; - case window.$gz.type.Review: - return "$sockiCalendarCheck"; - - case window.$gz.type.License: - return "$sockiGem"; - case window.$gz.type.TrialLicenseRequest: - return "$sockiHandHoldingWater"; - case window.$gz.type.SubscriptionServer: - return "$sockiCloud"; - case window.$gz.type.Purchase: - return "$sockiShoppingCart"; - case window.$gz.type.Product: - return "$sockiBarCode"; - case window.$gz.type.GZCase: - return "$sockiCoffee"; - - //scroll icon is good one for something - default: - return null; - } - }, - //https://gist.github.com/colemanw/9c9a12aae16a4bfe2678de86b661d922 - iconForFile: function(fileName, mimeType) { - // List of official MIME Types: http://www.iana.org/assignments/media-types/media-types.xhtml - - let extension = null; - if (fileName && fileName.includes(".")) { - extension = fileName.split(".").pop(); - extension = extension.toLowerCase(); - } - if (!extension && !mimeType) { - console.log( - "gzutil:iconForFile -> No mime or extension for " + - fileName + - " " + - mimeType - ); - return "$sockiFile"; - } - - if (!mimeType) { - mimeType = ""; - } - mimeType = mimeType.toLowerCase(); - - const iconFromExtension = extensions[extension]; - const iconFromMIME = mimeTypes[mimeType]; - - if (iconFromMIME) { - return iconFromMIME; - } - if (iconFromExtension) { - return iconFromExtension; - } - - return "$sockiFile"; - }, - /////////////////////////////////////////////// - // attempt to detect image extension name - // - isImageAttachment: function(fileName, mimeType) { - return this.iconForFile(fileName, mimeType) == "$sockiFileImage"; - }, - /////////////////////////////////////////////// - // Sleep async - // - sleepAsync: function(milliseconds) { - // eslint-disable-next-line - return new Promise(resolve => setTimeout(resolve, milliseconds)); - }, - /////////////////////////////////////////////// - // sortByKey lodash "sortBy" replacement - // https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_sortby-and-_orderby - //usage: - // The native sort modifies the array in place. `_.orderBy` and `_.sortBy` do not, so we use `.concat()` to - // copy the array, then sort. - // fruits.concat().sort(sortBy("name")); - // => [{name:"apple", amount: 4}, {name:"banana", amount: 2}, {name:"mango", amount: 1}, {name:"pineapple", amount: 2}] - sortByKey: key => { - return (a, b) => { - const aaa = a[key].toUpperCase(); - const bbb = b[key].toUpperCase(); - return aaa > bbb ? 1 : bbb > aaa ? -1 : 0; - //this was the original but it was sorting weird as it was taking case into account with uppercase higher than lowercase - //so PMItem came before Part in the object lists - //return a[key] > b[key] ? 1 : b[key] > a[key] ? -1 : 0; - }; - }, - /////////////////////////////////////////////// - // "has" lodash replacement - // https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_has - // - has: function(obj, key) { - var keyParts = key.split("."); - return ( - !!obj && - (keyParts.length > 1 - ? this.has(obj[key.split(".")[0]], keyParts.slice(1).join(".")) - : hasOwnProperty.call(obj, key)) - ); - }, - /////////////////////////////////////////////// - // Check if object is empty - // - objectIsEmpty: function(obj) { - //https://stackoverflow.com/a/4994265/8939 - return !obj || Object.keys(obj).length === 0; - }, - /////////////////////////////////////////////// - // Trim specific character from start and end - // https://stackoverflow.com/a/55292366/8939 - // - trimSpecific: function trim(str, ch) { - var start = 0; - var end = str.length; - while (start < end && str[start] === ch) ++start; - while (end > start && str[end - 1] === ch) --end; - return start > 0 || end < str.length ? str.substring(start, end) : str; - }, - /////////////////////////////////////////////// - // is numeric replacement for lodash - // https://stackoverflow.com/a/52986361/8939 - // - isNumeric: function(n) { - //lodash isNumber returned false if it's a string and that's what the rest of the code expects even though it's parseable to a number - return !this.isString(n) && !isNaN(parseFloat(n)) && isFinite(n); - }, - /////////////////////////////////////////////// - // is string replacement for lodash - // https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_isString - // - isString: function(str) { - return str != null && typeof str.valueOf() === "string"; - }, - /////////////////////////////////////////////// - // - // - // - stringIsNullOrEmpty: function(str) { - if (str === null || str === undefined) { - return true; - } - if (this.isString(str)) { - if (str.trim() == "") { - return true; - } - } - return false; - }, - /////////////////////////////////////////////// - // is Boolean replacement for lodash - // https://stackoverflow.com/a/43718478/8939 - // - isBoolean: function(obj) { - return obj === true || obj === false || typeof variable === "boolean"; - }, - /////////////////////////////////////////////// - // parse to number or null if not a number - // used because route params can turn into strings - // on their own - // - stringToIntOrNull: function(n) { - const ret = Number.parseInt(n, 10); - if (Number.isNaN(ret)) { - return null; - } - return ret; - }, - /////////////////////////////////////////////// - // Simple array equality comparison - // (will NOT work on arrays of objects) - // Array order is relevant here as they are not sorted - // change of order will equal change of array - // as this is required for datatable sortby - // - isEqualArraysOfPrimitives: function(a, b) { - if (a === b) return true; - if (a == null || b == null) return false; - if (a.length !== b.length) return false; - - // If you don't care about the order of the elements inside - // the array, you should sort both arrays here. - // Please note that calling sort on an array will modify that array. - // you might want to clone your array first. - - for (var i = 0; i < a.length; ++i) { - if (a[i] !== b[i]) return false; - } - return true; - }, - /////////////////////////////////////////////// - // Use geolocation api to attempt to get current location - // try high accuracy first and downgrade if unavailable - //https://www.openstreetmap.org/?mlat=48.3911&mlon=-124.7353#map=12/48.3910/-124.7353 - //https://www.openstreetmap.org/#map=18/49.68155/-125.00435 - //https://www.openstreetmap.org/?mlat=49.71236&mlon=-124.96961#map=17/49.71236/-124.96961 - //https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 - getGeoLocation: async function() { - return new Promise((resolve, reject) => { - navigator.geolocation.getCurrentPosition( - function successHigh(pos) { - resolve({ - latitude: pos.coords.latitude, - longitude: pos.coords.longitude - }); - }, - function error(err) { - //if here due to timeout getting high accuracy then try again with low accuracy - if (error.code == error.TIMEOUT) { - navigator.geolocation.getCurrentPosition( - function successLow(pos) { - resolve({ - latitude: pos.coords.latitude, - longitude: pos.coords.longitude - }); - }, - function error(err) { - reject( - new Error( - `ERROR getting location(low_accuracy: ${err.code}): ${err.message}` - ) - ); - }, - { - maximumAge: 600000, - timeout: 10000, - enableHighAccuracy: false - } - ); - return; - } - - reject( - new Error( - `ERROR GETTING LOCATION(high_accuracy:${err.code}): ${err.message}` - ) - ); - }, - { maximumAge: 600000, timeout: 5000, enableHighAccuracy: true } - ); - }); - }, - /////////////////////////////////////////////// - // Open map url - // - // - viewGeoLocation: function(obj) { - const hasGeo = - obj.latitude != null && - obj.latitude != 0 && - obj.longitude != null && - obj.longitude != 0; - - const hasAddress = - !this.stringIsNullOrEmpty(obj.address) && - !this.stringIsNullOrEmpty(obj.city) && - !this.stringIsNullOrEmpty(obj.region) && - !this.stringIsNullOrEmpty(obj.country) && - !this.stringIsNullOrEmpty(obj.postCode); - - if (!hasGeo && !hasAddress) { - return; - } - - let mapUrl = window.$gz.store.state.userOptions.mapUrlTemplate; - - //No pre-set? - if (!mapUrl || mapUrl == "") { - mapUrl = - "https://www.google.com/maps/search/?api=1&query={ayaddress}<|>https://www.google.com/maps/search/?api=1&query={aylatitude},{aylongitude}"; - } - - let geoMapUrl = null; - let addressMapUrl = null; - - //Parse the map url - let mapUrls = [mapUrl]; - if (mapUrl.includes("<|>")) { - mapUrls = mapUrl.split("<|>"); - } - - mapUrls.forEach(z => { - if (!geoMapUrl && z.includes("{aylatitude}")) { - geoMapUrl = z; - } - if (!addressMapUrl && z.includes("{ayaddress}")) { - addressMapUrl = z; - } - }); - - //decide which map to use here, favor geocode - if (hasGeo && geoMapUrl) { - //geo view - mapUrl = geoMapUrl; - mapUrl = mapUrl.split("{aylatitude}").join(obj.latitude); - mapUrl = mapUrl.split("{aylongitude}").join(obj.longitude); - } else if (hasAddress && addressMapUrl) { - mapUrl = addressMapUrl; - //compile address fields together - //order street to country seems to be standard - //note, if google need plus symbol delimiter, if bing, need comma delimiter - //but both might accept one big string space delimited and url encoded so test that on all first - const delimiter = " "; - let q = ""; - if (obj.address) { - q += obj.address + delimiter; - } - if (obj.city) { - q += obj.city + delimiter; - } - - if (obj.region) { - q += obj.region + delimiter; - } - - if (obj.country) { - q += obj.country + delimiter; - } - - if (obj.postCode) { - q += obj.postCode + delimiter; - } - - if (obj.addressPostal) { - q += obj.addressPostal + delimiter; - } - - if (q.length > 1) { - q = q.substring(0, q.length - 1); - } - //url encode the query - q = encodeURIComponent(q); - mapUrl = mapUrl.split("{ayaddress}").join(q); - } else { - throw new Error( - "View map: error - no matching mapurl / address / geo coordinates set for display, nothing to view" - ); - } - window.open(mapUrl, "map"); - //This is not valid to do as some platforms don't open a new web browser window - //but rather a map application in which case this is null and throws up the exception even though it's working - // if (window.open(mapUrl, "map") == null) { - // throw new Error( - // "Problem displaying map in new window. Browser must allow pop-ups to view maps; check your browser setting" - // ); - // } - }, - /////////////////////////////////////////////// - // Online mapping service url formats - // - // - mapProviderUrls: function() { - return [ - { - name: "Apple", - value: - "http://maps.apple.com/?q={ayaddress}<|>http://maps.apple.com/?ll={aylatitude},{aylongitude}" - }, - { - name: "Bing", - value: - "https://bing.com/maps/default.aspx?where1={ayaddress}<|>https://bing.com/maps/default.aspx?cp={aylatitude}~{aylongitude}&lvl=17&style=r&sp=point.{aylatitude}_{aylongitude}" - }, - { - name: "Google", - value: - "https://www.google.com/maps/search/?api=1&query={ayaddress}<|>https://www.google.com/maps/search/?api=1&query={aylatitude},{aylongitude}" - }, - { - name: "MapQuest", - value: - "https://mapquest.com/?center={ayaddress}&zoom=17<|>https://mapquest.com/?center={aylatitude},{aylongitude}&zoom=17" - }, - { - name: "Open Street Map", - value: - "https://www.openstreetmap.org/search?query={ayaddress}<|>https://www.openstreetmap.org/?mlat={aylatitude}&mlon={aylongitude}#map=17/{aylatitude}/{aylongitude}" - }, - { - name: "geo URI", - value: "geo:{aylatitude},{aylongitude}" - }, - { - name: "Waze", - value: - "https://waze.com/ul?q={ayaddress}<|>https://www.waze.com/ul?ll={aylatitude},{aylongitude}&navigate=yes&zoom=17" - }, - { - name: "Yandex", - value: - "https://yandex.ru/maps/?mode=search&text={ayaddress}&z=17<|>https://yandex.ru/maps/?ll={aylatitude},{aylongitude}&z=12&l=map" - } - ]; - }, - /////////////////////////////////////////////// - // v-calendar view to Sockeye scheduleview enum - // - // - calendarViewToSockeyeEnum: function(view) { - switch (view) { - case "day": - return 1; - case "week": - return 2; - case "month": - return 3; - case "4day": - return 4; - case "category": - return 5; - - default: - throw new Error( - `gzutil->calendarViewtoSockeyeEnum - Unknown view type '${view}'` - ); - } - }, - /////////////////////////////////////////////// - // GZDaysOfWeek to VCalendar weekdays - // - // - DaysOfWeekToWeekdays: function(dow) { - /* - AyaDaysOfWeek - Monday = 1, - Tuesday = 2, - Wednesday = 4, - Thursday = 8, - Friday = 16, - Saturday = 32, - Sunday = 64 - - vCalendar [ - 0,//sunday - 1, - 2, - 3, - 4, - 5, - 6//saturday -] - */ - if (dow == null || dow == 0) { - return [0, 1, 2, 3, 4, 5, 6]; //all the days - } - const ret = []; - - //turn EXCLUDE selected gzDaysOfWeek into INCLUDE selected days for vCalendar - if (!(dow & 64)) { - ret.push(0); - } - if (!(dow & 1)) { - ret.push(1); - } - if (!(dow & 2)) { - ret.push(2); - } - if (!(dow & 4)) { - ret.push(3); - } - if (!(dow & 8)) { - ret.push(4); - } - if (!(dow & 16)) { - ret.push(5); - } - if (!(dow & 32)) { - ret.push(6); - } - return ret; - }, - /////////////////////////////////////////////// - // Random integer from 0 to max - // - // - getRandomInt: function(max) { - return Math.floor(Math.random() * max); - } - /** - * - * - */ - - //new functions above here -}; diff --git a/client/src/api/initialize.js b/client/src/api/initialize.js deleted file mode 100644 index 8a979f1..0000000 --- a/client/src/api/initialize.js +++ /dev/null @@ -1,614 +0,0 @@ -function addNavItem(title, icon, route, navItems, key, testid, color = null) { - if (!testid) { - testid = route; - } - - const o = { - title, - icon, - route, - navItems, - key: key, - testid: testid - }; - if (color != null) { - o["color"] = color; - } - o.navItems.forEach(z => { - if (z.testid == null) { - z.testid = z.route; - } - }); - - window.$gz.store.commit("addNavItem", o); -} - -function initNavPanel() { - let key = 0; - let sub = []; - - /*Service = 1, -NotService = 2, -Customer = 3, -HeadOffice = 4, -ServiceContractor = 5 */ - - //########## OUTSIDE USERS GROUP (CUSTOMER / HEADOFFICE) ### - if (window.$gz.store.getters.isCustomerUser == true) { - //clear sublevel array - sub = []; - - //Set homePage in store to customer csr for this user type - let CustomerHomePageSet = false; - - //USER SETTINGS - //if (window.$gz.store.state.customerRights.userSettings == true) { - sub.push({ - title: "UserSettings", - icon: "$sockiUserCog", - route: "/home-user-settings", - key: key++ - }); - - window.$gz.store.commit("setHomePage", "/home-user-settings"); - CustomerHomePageSet = true; - // } - - if (window.$gz.store.getters.canSubscribeToNotifications) { - sub.push({ - title: "NotifySubscriptionList", - icon: "$sockiBullhorn", - route: "/home-notify-subscriptions", - key: key++ - }); - - window.$gz.store.commit("setHomePage", "/home-notify-subscriptions"); - CustomerHomePageSet = true; - } - - //** CUSTOMER LOGIN HOME (TOP) - addNavItem("Home", "$sockiHome", undefined, sub, key++, "homecustomer"); - - //last resort home page if nothing else kicked in - if (!CustomerHomePageSet) { - window.$gz.store.commit("setHomePage", "/no-features-available"); - } - - return; - } - - //###### ALL INSIDE USERS FROM HERE DOWN ############### - - //####### HOME GROUP - - //DASHBOARD - - sub.push({ - title: "Dashboard", - icon: "$sockiTachometer", - route: "/home-dashboard", - key: key++ - }); - - //SEARCH - sub.push({ - title: "Search", - icon: "$sockiSearch", - route: "/home-search", - key: key++ - }); - - //SCHEDULE (personal) - sub.push({ - title: "Schedule", - icon: "$sockiCalendarDay", - route: "/home-schedule", - key: key++ - }); - - //MEMOS - sub.push({ - title: "MemoList", - icon: "$sockiInbox", - route: "/home-memos", - key: key++ - }); - - //REMINDERS - sub.push({ - title: "ReminderList", - icon: "$sockiStickyNote", - route: "/home-reminders", - key: key++ - }); - - //REVIEWS - sub.push({ - title: "ReviewList", - icon: "$sockiCalendarCheck", - route: "/home-reviews", - key: key++ - }); - - //USER SETTINGS - sub.push({ - title: "UserSettings", - icon: "$sockiUserCog", - route: "/home-user-settings", - key: key++ - }); - - //USER NOTIFICATION SUBSCRIPTIONS - sub.push({ - title: "NotifySubscriptionList", - icon: "$sockiBullhorn", - route: "/home-notify-subscriptions", - key: key++ - }); - - //HISTORY / MRU / ACTIVITY (personal) - sub.push({ - title: "History", - icon: "$sockiHistory", - route: `/history/3/${window.$gz.store.state.userId}/true`, - key: key++, - testid: "/home-history" - }); - - //HOME - if (sub.length > 0) { - //Set homePage in store to dashboard - window.$gz.store.commit("setHomePage", "/home-dashboard"); - addNavItem("Home", "$sockiHome", undefined, sub, key++, "home"); - } - - //////////////////////////////////////////////////////// - // BUSINESS GROUP - // - - sub = []; - - sub.push({ - title: "GZCaseList", - icon: "$sockiCoffee", - route: "/biz-gzcase-list", - key: key++ - }); - - sub.push({ - title: "LicenseList", - icon: "$sockiGem", - route: "/biz-license-list", - key: key++ - }); - - sub.push({ - title: "TrialLicenseRequestList", - icon: "$sockiHandHoldingWater", - route: "/biz-trial-request-list", - key: key++ - }); - - sub.push({ - title: "SubscriptionServerList", - icon: "$sockiCloud", - route: "/biz-subscription-server-list", - key: key++ - }); - - sub.push({ - title: "PurchaseList", - icon: "$sockiShoppingCart", - route: "/biz-purchase-list", - key: key++ - }); - - sub.push({ - title: "ProductList", - icon: "$sockiBarCode", - route: "/biz-product-list", - key: key++ - }); - - sub.push({ - title: "VendorList", - icon: "$sockiStore", - route: "/biz-vendor-list", - key: key++ - }); - - if (window.$gz.role.canOpen(window.$gz.type.Customer)) { - addNavItem( - "BusinessSettings", - "$sockiBriefcase", - undefined, - sub, - key++, - "biz" - ); - } - //////////////////////////////////////////////////// - - //######### CUSTOMER GROUP - if (window.$gz.role.canOpen(window.$gz.type.Customer)) { - //these all require Customer rights so all in the same block - - //clear sublevel array - sub = []; - - //CUSTOMERS subitem - sub.push({ - title: "CustomerList", - icon: "$sockiAddressCard", - route: "/cust-customers", - key: key++ - }); - - //HEAD OFFICES subitem - sub.push({ - title: "HeadOfficeList", - icon: "$sockiSitemap", - route: "/cust-head-offices", - key: key++ - }); - - //Customer / Headoffice Users subitem - sub.push({ - title: "Contacts", - icon: "$sockiUsers", - route: "/cust-users", - key: key++ - }); - - sub.push({ - title: "CustomerNotifySubscriptionList", - icon: "$sockiBullhorn", - route: "/cust-notify-subscriptions", - key: key++ - }); - - // ** CUSTOMER (TOP) - addNavItem( - "CustomerList", - "$sockiAddressBook", - undefined, - sub, - key++, - "customer" - ); - } - - // //####### SERVICE GROUP - - // sub = []; - - // //SCHEDULE (shared) - - // sub.push({ - // title: "Schedule", - // icon: "$sockiCalendarAlt", - // route: "/svc-schedule", - // key: key++ - // }); - - // //**** SHARED (TOP GROUP) - // if ( - // sub.length > 0 && - // !window.$gz.role.hasRole([ - // window.$gz.role.AUTHORIZATION_ROLES.TechRestricted - // ]) - // ) { - // addNavItem("Service", "$sockiToolbox", undefined, sub, key++, "service"); - // } - - //****************** ACCOUNTING - - //SOCKEYE Keeping this for very likely future accounting functionality - sub = []; - - // ** ACCOUNTING (TOP) - if (sub.length > 0) { - addNavItem( - "Accounting", - "$sockiCoins", - undefined, - sub, - key++, - "accounting" - ); - } - - //############# ADMINISTRATION - - //clear sublevel array - sub = []; - - // GLOBAL SETTINGS - if (window.$gz.role.canOpen(window.$gz.type.Global)) { - sub.push({ - title: "AdministrationGlobalSettings", - icon: "$sockiCogs", - route: "/adm-global-settings", - key: key++ - }); - } - - // USERS - if (window.$gz.role.canOpen(window.$gz.type.User)) { - sub.push({ - title: "UserList", - icon: "$sockiUsers", - route: "/adm-users", - key: key++ - }); - } - - //TRANSLATION - if (window.$gz.role.canOpen(window.$gz.type.Translation)) { - sub.push({ - title: "TranslationList", - icon: "$sockiLanguage", - route: "/adm-translations", - key: key++ - }); - } - - //REPORT TEMPLATES - if (window.$gz.role.canChange(window.$gz.type.Report)) { - sub.push({ - title: "ReportList", - icon: "$sockiThList", - route: "/adm-report-templates", - key: key++ - }); - } - - //FILES IN DATABASE - if (window.$gz.role.canOpen(window.$gz.type.FileAttachment)) { - sub.push({ - title: "Attachments", - icon: "$sockiPaperclip", - route: "/adm-attachments", - key: key++ - }); - } - - //EVENT LOG / HISTORY - if (window.$gz.role.canOpen(window.$gz.type.Global)) { - //not really an appropriate object here just guessing - sub.push({ - title: "History", - icon: "$sockiHistory", - route: "/adm-history", - key: key++ - }); - } - - //IMPORT - if (window.$gz.role.canOpen(window.$gz.type.Global)) { - //again, not really an appropriate object type - sub.push({ - title: "Import", - icon: "$sockiFileImport", - route: "/adm-import", - key: key++ - }); - } - - //INTEGRATION - //decision here is that only teh biz admin can *control* or remove an integration - //even though all full role inside users can create or edit integrations (just not through the Sockeye user interface) - //this is required to support integrations made for various roles like inventory accounting etc - if (window.$gz.role.canOpen(window.$gz.type.Global)) { - sub.push({ - title: "IntegrationList", - icon: "$sockiCampground", - route: "/adm-integrations", - key: key++ - }); - } - - // ** ADMINISTRATION (TOP) - if (sub.length > 0) { - addNavItem( - "Administration", - "$sockiUserTie", - undefined, - sub, - key++, - "administration" - ); - } - - //############ OPERATIONS - - //clear sublevel array - sub = []; - - // BACKUP - if (window.$gz.role.canOpen(window.$gz.type.Backup)) { - sub.push({ - title: "Backup", - icon: "$sockiFileArchive", - route: "/ops-backup", - key: key++ - }); - } - - // SERVER STATE - if (window.$gz.role.canChange(window.$gz.type.ServerState)) { - sub.push({ - title: "ServerState", - icon: "$sockiDoorOpen", - route: "/ops-server-state", - key: key++ - }); - } - - // JOBS - if (window.$gz.role.canOpen(window.$gz.type.ServerJob)) { - sub.push({ - title: "ServerJobs", - icon: "$sockiRobot", - route: "/ops-jobs", - key: key++ - }); - } - - // LOGS - if (window.$gz.role.canOpen(window.$gz.type.LogFile)) { - sub.push({ - title: "ServerLog", - icon: "$sockiHistory", - route: "/ops-log", - key: key++ - }); - } - - //METRICS - if (window.$gz.role.canOpen(window.$gz.type.ServerMetrics)) { - sub.push({ - title: "ServerMetrics", - icon: "$sockiFileMedicalAlt", - route: "/ops-metrics", - key: key++ - }); - - // //PROFILE - // //metrics rights - // sub.push({ - // title: "ServerProfiler", - // icon: "$sockiBinoculars", - // route: "/ops-profile", - // key: key++ - // }); - } - - //NOTIFICATION CONFIG AND HISTORY - if (window.$gz.role.canOpen(window.$gz.type.OpsNotificationSettings)) { - sub.push({ - title: "OpsNotificationSettings", - icon: "$sockiBullhorn", - route: "/ops-notification-settings", - key: key++ - }); - } - - if (window.$gz.role.canOpen(window.$gz.type.OpsNotificationSettings)) { - sub.push({ - title: "NotificationDeliveryLog", - icon: "$sockiHistory", - route: "/ops-notify-log", - key: key++ - }); - } - - if (window.$gz.role.canOpen(window.$gz.type.OpsNotificationSettings)) { - sub.push({ - title: "NotificationCustomerDeliveryLog", - icon: "$sockiHistory", - route: "/ops-customer-notify-log", - key: key++ - }); - } - - // OPS VIEW SERVER CONFIGURATION - if (window.$gz.role.canOpen(window.$gz.type.GlobalOps)) { - sub.push({ - title: "ViewServerConfiguration", - icon: "$sockiInfoCircle", - route: "/ops-view-configuration", - key: key++ - }); - } - - // ** OPERATIONS (TOP) - if (sub.length > 0) { - addNavItem( - "Operations", - "$sockiServer", - undefined, - sub, - key++, - "operations" - ); - } -} - -async function getUserOptions() { - try { - const res = await window.$gz.api.get( - "user-option/" + window.$gz.store.state.userId - ); - - if (res.error) { - //In a form this would trigger a bunch of validation or error display code but for here and now: - //convert error to human readable string for display and popup a notification to user - const msg = window.$gz.api.apiErrorToHumanString(res.error); - window.$gz.store.commit( - "logItem", - "Initialize::() fetch useroptions -> error" + msg - ); - window.$gz.eventBus.$emit("notify-error", msg); - } else { - //Check if overrides and use them here - //or else use browser defaults - - const l = { - languageOverride: null, - timeZoneOverride: null, - currencyName: null, - hour12: true, - //uiColor: "#000000ff", - emailAddress: null, - mapUrlTemplate: null - }; - - l.languageOverride = res.data.languageOverride; - l.timeZoneOverride = res.data.timeZoneOverride; - - //No browser setting for this so meh - l.currencyName = res.data.currencyName; - - if (res.data.hour12 != null) { - l.hour12 = res.data.hour12; - } - - // l.uiColor = res.data.uiColor || "#000000ff"; - l.emailAddress = res.data.emailAddress || null; - - l.mapUrlTemplate = res.data.mapUrlTemplate || null; - - window.$gz.store.commit("setUserOptions", l); - } - } catch (error) { - window.$gz.store.commit( - "logItem", - "Initialize::() fetch useroptions -> error" + error - ); - throw new Error(window.$gz.errorHandler.errorToString(error)); - } -} - -///////////////////////////////////// -// Initialize the app -// on change of authentication status -export default function initialize() { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async function(resolve, reject) { - if (!window.$gz.store.state.authenticated) { - throw new Error("initialize: Error, called but user not authenticated!"); - } - try { - await window.$gz.translation.cacheTranslations( - window.$gz.translation.coreKeys - ); - initNavPanel(); - await getUserOptions(); - - resolve(); - } catch (err) { - reject(err); - } - }); -} diff --git a/client/src/api/locale.js b/client/src/api/locale.js deleted file mode 100644 index a9ee50d..0000000 --- a/client/src/api/locale.js +++ /dev/null @@ -1,604 +0,0 @@ -//Browser Locale conversion utilities -//dates,numbers currency etc -export default { - //////////////////////////////////////////////////////// - // attempt to determine user's preferred language settings - // As of Jan 2020 all major browsers support - // navigator.languages - // but some use navigator.language (singular) to denote UI language preference - // not browsing language preference - // so the ideal way to do this is to use navigator.languages[0] for the preferred language - // and ignore the singular property since we don't care about the actual browser UI language - // only how the user expects to see the page itself - // - // also for sake of future proofing and edge cases need to have it be manually settable as well - // - //https://appmakers.dev/bcp-47-language-codes-list/ - /////////////////////////////////////////// - // Get users default language code - // first check if overriden in useroptions - // if not then use browsers own setting - //if not that then final default of en-US - getResolvedLanguage() { - let l = window.$gz.store.state.userOptions.languageOverride; - if (!window.$gz.util.stringIsNullOrEmpty(l)) { - return l; - } else { - l = window.navigator.languages[0]; - if (!window.$gz.util.stringIsNullOrEmpty(l)) { - return l; - } else { - return "en-US"; - } - } - }, - - /////////////////////////////////////////// - // Get users default time zone - // first check if overriden in useroptions - // if not then use browsers own setting - // if that is empty then final default of "America/New_York" - //https://www.iana.org/time-zones - //https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - getResolvedTimeZoneName() { - let tz = window.$gz.store.state.userOptions.timeZoneOverride; - if (!window.$gz.util.stringIsNullOrEmpty(tz)) { - return tz; - } else { - tz = Intl.DateTimeFormat().resolvedOptions().timeZone; - if (!window.$gz.util.stringIsNullOrEmpty(tz)) { - return tz; - } else { - return "America/New_York"; - } - } - }, - ////////////////////////////////////////////////// - // Get the user's chosen currency name - //https://en.wikipedia.org/wiki/ISO_4217 - //default to USD if nothing specified - getCurrencyName() { - const cur = window.$gz.store.state.userOptions.currencyName; - if (!window.$gz.util.stringIsNullOrEmpty(cur)) { - return cur; - } else { - return "USD"; - } - }, - ////////////////////////////////////////////////// - // Get the user's chosen 12hr clock - // - getHour12() { - return window.$gz.store.state.userOptions.hour12; - }, - - ///////////////////////////////////////////////////////////////////// - // Turn a utc ISO date from server into a vuetify calendar - // schedule control compatible (epoch) format - // localized. - // For ease of use in schedule the epoch (milliseconds) is the best format - // "It must be a Date, number of seconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored."" - // - // - utcDateToScheduleCompatibleFormatLocalized(value, timeZoneName) { - //This function takes a UTC iso format date string, parses it into a date then converts that date to the User's configured time zone - //outputs that in a format close to ISO, fixes the space in the middle of the output to match ISO 8601 format then returns as an - //epoch - //this is to support controls that are not time zone settable so they are always in local browser time zone of os, however user may be operating - //sockeye in another desired time zone so this is all to support that scenario - - if (!value) { - if (window.$gz.dev) { - throw new Error( - `locale::utcDateToScheduleCompatibleFormatLocalized - Value is empty` - ); - } - return null; - } - - return new Date( - new Date(value) //convert to locale timezone and output in the closest thing to iso-8601 format - .toLocaleString("sv-SE", { - timeZone: timeZoneName - }) - .replace(" ", "T") //Safari can't parse the date from here because sv-SE puts a space between date and time and Safari will only parse if it has a T between - ).getTime(); - }, - /////////////////////////////////////////////// - // Convert a local schedule epoch timestamp - // to specified time zone equivalent then - // to UTC and output as ISO 8601 - // - // - localScheduleFormatToUTC8601String(value, timeZoneName) { - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - - //input: epoch in local browser time zone - //output: transform to date and time string - //convert to desired time zone but at same time and date - //(i.e. if it browser is vancouver and 1pm is selected but desired is new york's 1pm - // so convert the string as if it was new york then back to iso so that the time is adjusted forward - // as if the user was in new york in their browser default) - - //parse in the time in to the specified timezone - let ret = window.$gz.DateTime.fromISO( - //output the sched epoch as local time string without zone - new Date(value).toLocaleString("sv-SE").replace(" ", "T"), - { - zone: timeZoneName - } - ); - - ret = ret.setZone("utc"); //convert to UTC - ret = ret.toISO(); //output as ISO 8601 - return ret; - }, - /////////////////////////////////////////// - // Turn a utc date into a displayable - // short date and time - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString - // - utcDateToShortDateAndTimeLocalized( - value, - timeZoneName, - languageName, - hour12 - ) { - if (!value) { - return ""; - } - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - if (!languageName) { - languageName = this.getResolvedLanguage(); - } - - if (!hour12) { - hour12 = this.getHour12(); - } - - //parse the date which is identified as utc ("2020-02-06T18:18:49.148011Z") - const parsedDate = new Date(value); - - //is it a valid date? - if (!(parsedDate instanceof Date && !isNaN(parsedDate))) { - return "not valid"; - } - - return parsedDate.toLocaleString(languageName, { - timeZone: timeZoneName, - dateStyle: "short", - timeStyle: "short", - hour12: hour12 - }); - }, - /////////////////////////////////////////// - // Turn a utc date into a displayable - // date and time with specific formats - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString - // - utcDateToSpecifiedDateAndTimeLocalized( - value, - timeZoneName, - languageName, - hour12, - dateStyle, - timeStyle - ) { - if (!value) { - return ""; - } - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - if (!languageName) { - languageName = this.getResolvedLanguage(); - } - - if (!hour12) { - hour12 = this.getHour12(); - } - - //parse the date which is identified as utc ("2020-02-06T18:18:49.148011Z") - const parsedDate = new Date(value); - - //is it a valid date? - if (!(parsedDate instanceof Date && !isNaN(parsedDate))) { - return "not valid"; - } - - return parsedDate.toLocaleString(languageName, { - timeZone: timeZoneName, - dateStyle: dateStyle, - timeStyle: timeStyle, - hour12: hour12 - }); - }, - /////////////////////////////////////////// - // Turn a utc date into a displayable - // short date - // - utcDateToShortDateLocalized(value, timeZoneName, languageName) { - if (!value) { - return ""; - } - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - if (!languageName) { - languageName = this.getResolvedLanguage(); - } - - //parse the date which is identified as utc ("2020-02-06T18:18:49.148011Z") - const parsedDate = new Date(value); - - //is it a valid date? - if (!(parsedDate instanceof Date && !isNaN(parsedDate))) { - return "not valid"; - } - - return parsedDate.toLocaleDateString(languageName, { - timeZone: timeZoneName, - dateStyle: "short" - }); - }, /////////////////////////////////////////// - // Turn a utc date into a displayable - // short time - // - utcDateToShortTimeLocalized(value, timeZoneName, languageName, hour12) { - if (!value) { - return ""; - } - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - if (!languageName) { - languageName = this.getResolvedLanguage(); - } - - if (!hour12) { - hour12 = this.getHour12(); - } - - //parse the date which is identified as utc ("2020-02-06T18:18:49.148011Z") - const parsedDate = new Date(value); - - //is it a valid date? - if (!(parsedDate instanceof Date && !isNaN(parsedDate))) { - return "not valid"; - } - - return parsedDate.toLocaleTimeString(languageName, { - timeZone: timeZoneName, - timeStyle: "short", - hour12: hour12 - }); - }, - /////////////////////////////////////////// - // Turn a duration value into a display - // - durationLocalized(value, hideSeconds) { - if (value == null || value == "00:00:00") { - return ""; - } - - let theDays = 0; - let theHours = 0; - let theMinutes = 0; - let theSeconds = 0; - let ret = ""; - - const work = value.split(":"); - //has days? - if (work[0].includes(".")) { - let dh = work[0].split("."); - theDays = Number(dh[0]); - theHours = Number(dh[1]); - } else { - theHours = Number(work[0]); - } - theMinutes = Number(work[1]); - //has milliseconds? (ignore them) - if (work[2].includes(".")) { - let dh = work[2].split("."); - theSeconds = Number(dh[0]); - } else { - theSeconds = Number(work[2]); - } - - if (theDays != 0) { - ret += theDays + " " + window.$gz.translation.get("TimeSpanDays") + " "; - } - if (theHours != 0) { - ret += theHours + " " + window.$gz.translation.get("TimeSpanHours") + " "; - } - if (theMinutes != 0) { - ret += - theMinutes + " " + window.$gz.translation.get("TimeSpanMinutes") + " "; - } - if (!hideSeconds && theSeconds != 0) { - ret += - theSeconds + " " + window.$gz.translation.get("TimeSpanSeconds") + " "; - } - - return ret; - }, - /////////////////////////////////////////////// - // Convert a utc date to local time zone - // and return time portion only in iso 8601 - // format (used by time and date picker components) - // - utcDateStringToLocal8601TimeOnlyString(value, timeZoneName) { - if (!value) { - //if no value, return the current time as expected by the time picker - } else { - //ok, the reason for sv-SE is that it's a locale that returns the time already in ISO format and 24hr by default - //that can change over time so if this breaks that's why - //also fr-CA does as well as possibly en-CA - //https://stackoverflow.com/a/58633686/8939 - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - - return new Date(value).toLocaleTimeString("sv-SE", { - timeZone: timeZoneName - }); - } - }, - /////////////////////////////////////////////// - // Convert a local time only string with date string - // to UTC and output as ISO 8601 - // also converts to time zone specified if diff from browser - // (used by time and date picker components) - // - localTimeDateStringToUTC8601String(value, timeZoneName) { - //https://moment.github.io/luxon/docs/manual/zones.html#creating-datetimes-in-a-zone - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - - //parse in the time in the currently used timezone - let ret = window.$gz.DateTime.fromISO(value, { - zone: timeZoneName - }); - - ret = ret.setZone("utc"); //convert to UTC - ret = ret.toISO(); //output as ISO 8601 - - return ret; - }, - /////////////////////////////////////////////// - // UTC Now in api format - // to UTC and output as ISO 8601 - // (used to set defaults) - // - nowUTC8601String(timeZoneName) { - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - const ret = window.$gz.DateTime.local() - .setZone(timeZoneName) - .toUTC() - .toString(); - return ret; - }, - /////////////////////////////////////////////// - // UTC ISO 8601 string add minutes - // and return as UTC ISO 8601 string - // (used to set automatic / default adjusted times) - // - addMinutesToUTC8601String(val, minutes) { - if (!val || val == "" || minutes == null || minutes == 0) { - return val; - } - //instantiate a luxon date object from val which is assumed to be an iso string - let dt = window.$gz.DateTime.fromISO(val); - if (!dt.isValid) { - console.error("locale::addMinutes, input not valid:", { - val: val, - dt: dt - }); - return val; - } - //add minutes - dt = dt.plus({ minutes: minutes }); - return dt.toUTC().toString(); - }, - /////////////////////////////////////////////// - // UTC ISO 8601 string add arbitrary value based - // on luxon duration format - // and return as UTC ISO 8601 string - //https://moment.github.io/luxon/api-docs/index.html#datetimeplus - // - addDurationToUTC8601String(val, duration) { - if ( - !val || - val == "" || - duration == null || - !typeof duration === "object" - ) { - return val; - } - //instantiate a luxon date object from val which is assumed to be an iso string - let dt = window.$gz.DateTime.fromISO(val); - if (!dt.isValid) { - console.error("locale::addDurationToUTC8601String, input not valid:", { - val: val, - dt: dt - }); - return val; - } - //add minutes - dt = dt.plus(duration); - return dt.toUTC().toString(); - }, - /////////////////////////////////////////////// - // parse UTC ISO 8601 strings, diff, return hours - // - diffHoursFromUTC8601String(start, stop) { - if (!start || start == "" || !stop == null || stop == "") { - return 0; - } - //instantiate a luxon date object from val which is assumed to be an iso string - const startDate = window.$gz.DateTime.fromISO(start); - if (!startDate.isValid) { - console.error("locale::diffHours, start not valid:", { - start: start, - startDate: startDate - }); - return 0; - } - const stopDate = window.$gz.DateTime.fromISO(stop); - if (!stopDate.isValid) { - console.error("locale::diffHours, start not valid:", { - stop: stop, - stopDate: stopDate - }); - return 0; - } - - // console.log( - // "locale:diffhours...", - // stopDate.diff(startDate, "hours").toObject().hours - // ); - - // console.log( - // "locale:diffhours.. ROUNDED.", - // window.$gz.util.roundAccurately( - // stopDate.diff(startDate, "hours").toObject().hours, - // 2 - // ) - // ); - - return window.$gz.util.roundAccurately( - stopDate.diff(startDate, "hours").toObject().hours, - 2 - ); - }, - /////////////////////////////////////////////// - // Local now timestamp converted to timeZoneName - // and output as ISO 8601 - // (used to inform server of local client time) - // - clientLocalZoneTimeStamp(timeZoneName) { - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - const ret = window.$gz.DateTime.local() - .setZone(timeZoneName) - .toString(); - return ret; - }, - /////////////////////////////////////////////// - // Get default start date time in api format - // (this is used to centralize and for future) - defaultStartDateTime() { - return { - start: window.$gz.DateTime.local() - .toUTC() - .toString(), - end: window.$gz.DateTime.local() - .plus({ hours: 1 }) - .toUTC() - .toString() - }; - }, - /////////////////////////////////////////////// - // Convert a utc date to local time zone - // and return date only portion only in iso 8601 - // format (used by time and date picker components) - // - utcDateStringToLocal8601DateOnlyString(value, timeZoneName) { - if (!value) { - //if no value, return the current time as expected by the time picker - } else { - //ok, the reason for sv-SE is that it's a locale that returns the time already in ISO format and 24hr by default - //that can change over time so if this breaks that's why - //also fr-CA does as well as possibly en-CA - //https://stackoverflow.com/a/58633686/8939 - if (!timeZoneName) { - timeZoneName = this.getResolvedTimeZoneName(); - } - return new Date(value).toLocaleDateString("sv-SE", { - timeZone: timeZoneName - }); - } - }, - /////////////////////////////////////////////// - // Date/time past or future evaluation - // - dateIsPast(value) { - if (!value) { - return false; - } - - return new Date(value) < new Date(); - }, - /////////////////////////////////////////// - // Turn a decimal number into a local - // currency display - // - currencyLocalized(value, languageName, currencyName) { - if (value == null) return ""; - if (!languageName) { - languageName = this.getResolvedLanguage(); - } - if (!currencyName) { - currencyName = this.getCurrencyName(); - } - - return new Intl.NumberFormat(languageName, { - style: "currency", - currency: currencyName - }).format(value); - }, - /////////////////////////////////////////// - // Turn a decimal number into a local - // decimal format display - // - decimalLocalized(value, languageName) { - if (value == null) return ""; - if (!languageName) { - languageName = this.getResolvedLanguage(); - } - //This forces 2 digits after the decimal - // return new Intl.NumberFormat(languageName, { - // minimumFractionDigits: 2 - // }).format(value); - //this goes with whatever is the local format which for dev testing turned out to be perfect: 1.00 displays as 1 and 1.75 displays as 1.75 - //alignment goes out the window but it follows v7 format - return new Intl.NumberFormat(languageName).format(value); - }, - /////////////////////////////////////////// - // Turn a file / memory size number into a local - // decimal format display and in reasonable human readable range - // - humanFileSize(bytes, languageName, si = false, dp = 1) { - const thresh = si ? 1000 : 1024; - - if (Math.abs(bytes) < thresh) { - return bytes + " B"; - } - - const units = si - ? ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] - : ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]; - let u = -1; - const r = 10 ** dp; - - do { - bytes /= thresh; - ++u; - } while ( - Math.round(Math.abs(bytes) * r) / r >= thresh && - u < units.length - 1 - ); - - return ( - this.decimalLocalized(bytes.toFixed(dp), languageName) + " " + units[u] - ); - } -}; diff --git a/client/src/api/notifypoll.js b/client/src/api/notifypoll.js deleted file mode 100644 index 4201d3b..0000000 --- a/client/src/api/notifypoll.js +++ /dev/null @@ -1,46 +0,0 @@ -let keepChecking = false; -const DEFAULT_POLLING_INTERVAL = 60000; -const MAX_POLLING_INTERVAL = 30 * 60 * 1000; //30 minutes maximum wait time -export default { - async startPolling() { - if (keepChecking == true) { - return; - } - keepChecking = true; - //initial delay so it fetches "immediately" - let pollingInterval = 3000; - let status = null; - while (keepChecking == true) { - try { - await window.$gz.util.sleepAsync(pollingInterval); - if (keepChecking && window.$gz.store.state.authenticated) { - if (window.$gz.erasingDatabase == false) { - status = await window.$gz.api.get("notify/new-count"); - if (status.error) { - throw new Error(window.$gz.errorHandler.errorToString(status)); - // throw new Error(status.error); - } else { - window.$gz.store.commit("setNewNotificationCount", status.data); - //success so go to default in case it was changed by an error - pollingInterval = DEFAULT_POLLING_INTERVAL; - } - } - } else { - keepChecking = false; - } - } catch (error) { - //fixup if fails on very first iteration with initial short polling interval - if (pollingInterval < DEFAULT_POLLING_INTERVAL) { - pollingInterval = DEFAULT_POLLING_INTERVAL; - } - pollingInterval *= 1.5; - if (pollingInterval > MAX_POLLING_INTERVAL) { - pollingInterval = MAX_POLLING_INTERVAL; - } - } - } - }, - stopPolling() { - keepChecking = false; - } -}; diff --git a/client/src/api/open-object-handler.js b/client/src/api/open-object-handler.js deleted file mode 100644 index 66c761c..0000000 --- a/client/src/api/open-object-handler.js +++ /dev/null @@ -1,277 +0,0 @@ -import socktype from "./socktype"; -export default { - /////////////////////////////// - // APP (GLOBAL) openobject CLICK HANDLER - // - // Deal with a request to open an object (from main datatables mainly) - // if it's an open object url that triggered here the url would be in the format of {host/open/[socktype integer]/[id integer]}, i.e. - // http://localhost:8080/open/2/105 - // called from App.vue - handleOpenObjectClick(vm, tid) { - //expects extra data (tid) to be one of { type: [AYATYPE], id: [RECORDID] } - //NOTE: for new objects all edit pages assume record ID 0 (or null) means create rather than open - - //for sake of ease of coding I'm going to assume null id also means make a new record intent - //so I don't have to parse and decide constantly on forms for every control that has a open record link in it - if (tid.id == null) { - tid.id = 0; - } - - if (tid.type && tid.id != null) { - const isCustomerTypeUser = - window.$gz.store.state.userType == 3 || - window.$gz.store.state.userType == 4; - //if these come from route parameters they may well be strings - tid.type = Number.parseInt(tid.type, 10); - tid.id = Number.parseInt(tid.id, 10); - if (isCustomerTypeUser) { - switch (tid.type) { - case socktype.NotifySubscription: - vm.$router.push({ - name: "home-notify-subscription", - params: { recordid: tid.id } - }); - break; - - default: - window.$gz.eventBus.$emit( - "notify-warning", - `Customer user: open-object-handler unable to open link - [type:${tid.type}, id:${tid.id}]` - ); - } - } else { - switch (tid.type) { - case socktype.Memo: - vm.$router.push({ - name: "memo-edit", - params: { recordid: tid.id } - }); - break; - case socktype.Customer: - vm.$router.push({ - name: "customer-edit", - params: { recordid: tid.id } - }); - break; - case socktype.CustomerNote: - vm.$router.push({ - name: "customer-note-edit", - params: { recordid: tid.id } - }); - break; - case socktype.HeadOffice: - vm.$router.push({ - name: "head-office-edit", - params: { recordid: tid.id } - }); - break; - - case socktype.User: - //Is it an "Inside" user (staff or subcontractor) - //or an "outside" user (customer or headoffice) - //if key doesn't provide this then need to directly find out first before determining which form to redirect to - if (tid.id != 0) { - //lookup which one to open from server - (async () => { - try { - //shortcut for superuser, always id 1 - if (tid.inside == undefined && tid.id == 1) { - tid.inside = true; - } - if (tid.inside == undefined) { - const res = await window.$gz.api.get( - "user/inside-type/" + tid.id - ); - if (res.error) { - throw new Error( - window.$gz.errorHandler.errorToString(res, vm) - ); - } - if (res.data) { - tid.inside = res.data; - } - } - if (tid.inside == true) { - vm.$router.push({ - name: "adm-user", - params: { recordid: tid.id } - }); - } else { - vm.$router.push({ - name: "cust-user", - params: { recordid: tid.id } - }); - } - } catch (e) { - throw new Error(window.$gz.errorHandler.errorToString(e, vm)); - //throw new Error(e); - } - })(); - } - break; - case socktype.NotifySubscription: - vm.$router.push({ - name: "home-notify-subscription", - params: { recordid: tid.id } - }); - break; - case socktype.FileAttachment: - //lookup the actual type - //then call this method again to do the actual open - - (async () => { - try { - const res = await window.$gz.api.get( - "attachment/parent/" + tid.id - ); - - if (res.error) { - throw new Error( - window.$gz.errorHandler.errorToString(res, vm) - ); - // throw new Error(res.error); - } - if (res.data.id && res.data.id != 0) { - this.handleOpenObjectClick(vm, res.data); - return; - } - } catch (e) { - //throw new Error(e); - throw new Error(window.$gz.errorHandler.errorToString(e, vm)); - } - })(); - - break; - - case socktype.Translation: - vm.$router.push({ - name: "adm-translation", - params: { recordid: tid.id } - }); - break; - case socktype.Report: - vm.$router.push({ - name: "sock-report-edit", - params: { recordid: tid.id } - }); - break; - case socktype.Backup: - vm.$router.push({ - name: "ops-backup" - }); - break; - - case socktype.FormCustom: - //all we have is the id, but need the formkey to open it - (async () => { - try { - const res = await window.$gz.api.get( - "form-custom/form-key/" + tid.id - ); - - if (res.error) { - throw new Error( - window.$gz.errorHandler.errorToString(res, vm) - ); - } - if (res && res.data) { - vm.$router.push({ - name: "sock-customize", - params: { - formCustomTemplateKey: res.data - } - }); - return; - } - } catch (e) { - //throw new Error(e); - throw new Error(window.$gz.errorHandler.errorToString(e, vm)); - } - })(); - break; - - case socktype.Reminder: - vm.$router.push({ - name: "reminder-edit", - params: { recordid: tid.id } - }); - break; - case socktype.Review: - vm.$router.push({ - name: "review-edit", - params: { recordid: tid.id } - }); - break; - - case socktype.CustomerNotifySubscription: - vm.$router.push({ - name: "cust-notify-subscription", - params: { recordid: tid.id } - }); - break; - case socktype.OpsNotificationSettings: - vm.$router.push({ - name: "ops-notification-settings" - }); - break; - case socktype.Integration: - vm.$router.push({ - name: "adm-integration", - params: { recordid: tid.id } - }); - break; - - case socktype.Vendor: - vm.$router.push({ - name: "vendor-edit", - params: { recordid: tid.id } - }); - break; - - case socktype.Product: - vm.$router.push({ - name: "product-edit", - params: { recordid: tid.id } - }); - break; - - case socktype.SubscriptionServer: - vm.$router.push({ - name: "subscription-server-edit", - params: { recordid: tid.id } - }); - break; - - case socktype.GZCase: - vm.$router.push({ - name: "gzcase-edit", - params: { recordid: tid.id } - }); - break; - - default: - window.$gz.eventBus.$emit( - "notify-warning", - `open-object-handler: unknown [type:${tid.type}, id:${tid.id}]` - ); - } - } - } - }, - - /////////////////////////////////// - // WIRE UP MENU EVENTS - // - // called once from app.vue only - // - wireUpEventHandlers(vm) { - const that = this; - //expects extra data (tid) to be { type: [AYATYPE], id: [RECORDID] } - window.$gz.eventBus.$on("openobject", function handleOpenObjectClickHandler( - tid - ) { - that.handleOpenObjectClick(vm, tid); - }); - } - //new functions above here -}; diff --git a/client/src/api/palette.js b/client/src/api/palette.js deleted file mode 100644 index 16f9ce3..0000000 --- a/client/src/api/palette.js +++ /dev/null @@ -1,60 +0,0 @@ -//https://colorpalettes.net -export default { - color: { - blue: "#1f77b4", - red: "#d62728", - orange: "#fe7f0e", - green: "#2ca02c", - purple: "#9c27b0", - black: "#000000", - cyan: "#00BCD4", - teal: "#009688", - primary: "#00205B", //APP Canucks dark blue - secondary: "#00843D", //APP canucks green - accent: "#db7022", //APP lighter orangey red, more friendly looking though not as much clarity it seems - soft_sand: "#f1d3a1", - soft_sand_taupe: "#e3dbd9", - soft_pale_blue: "#e6eff6", - soft_deep_blue: "#89b4c4", - soft_green: "#ccdb86", - soft_brown: "#c8bcb1", - soft_brown_darker: "#8d7053", - soft_gray: "#d2d7db" - }, - getBoldPaletteArray(size) { - const palette = [ - this.color.blue, - this.color.red, - this.color.green, - this.color.orange, - this.color.purple, - this.color.cyan, - this.color.teal, - this.color.black - ]; - const paletteLength = palette.length; - const ret = []; - for (let i = 0; i < size; i++) { - ret.push(palette[i % paletteLength]); - } - return ret; - }, - getSoftPaletteArray(size) { - const palette = [ - this.color.soft_sand, - this.color.soft_pale_blue, - this.color.soft_gray, - this.color.soft_green, - this.color.soft_brown, - this.color.soft_deep_blue, - this.color.soft_sand_taupe, - this.color.soft_brown_darker - ]; - const paletteLength = palette.length; - const ret = []; - for (let i = 0; i < size; i++) { - ret.push(palette[i % paletteLength]); - } - return ret; - } -}; diff --git a/client/src/api/relative-date-filter-calculator.js b/client/src/api/relative-date-filter-calculator.js deleted file mode 100644 index 81b467d..0000000 --- a/client/src/api/relative-date-filter-calculator.js +++ /dev/null @@ -1,620 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// - -///////////////////////////////// -// Convert a date token to local -// date range to UTC for server -// dataListView consumption -// -export default { - /////////////////////////////// - // token to date range - // - tokenToDates: function(token) { - if (token == null || token.length == 0) { - throw new Error( - "relative-date-filter-calculator: date token is null or empty" - ); - } - - //return object contains the two dates that encompass the time period - //the token represents to the local browser time zone but in UTC - //and iso8601 format - - //NOTE: it's valid for one of the two ret values might be undefined as it's valid to have a single date for - //Past or Future - const ret = { after: undefined, before: undefined }; - const dtNow = window.$gz.DateTime.local(); - const dtToday = window.$gz.DateTime.local( - dtNow.year, - dtNow.month, - dtNow.day - ); - let dtAfter = null; - let dtBefore = null; - - switch (token) { - case "*yesterday*": - //Between Day before yesterday at midnight and yesterday at midnight - ret.after = dtToday - .plus({ days: -1, seconds: -1 }) - .toUTC() - .toString(); - ret.before = dtToday.toUTC().toString(); - break; - - case "*today*": - //Between yesterday at midnight and tommorow at midnight - ret.after = dtToday - .plus({ seconds: -1 }) - .toUTC() - .toString(); - ret.before = dtToday - .plus({ days: 1 }) - .toUTC() - .toString(); - break; - - case "*tomorrow*": - //Between Tonight at midnight and day after tommorow at midnight - ret.after = dtToday - .plus({ days: 1, seconds: -1 }) - .toUTC() - .toString(); - ret.before = dtToday - .plus({ days: 2 }) - .toUTC() - .toString(); - break; - - case "*lastweek*": - //Between two Sundays ago at midnight and last sunday at midnight - - //go back a week - dtAfter = dtToday.plus({ days: -7 }); - //go backwards to Sunday (In Luxon Monday is 1, Sunday is 7) - while (dtAfter.weekday != 7) { - dtAfter = dtAfter.plus({ days: -1 }); - } - //go to very start of eighth dayahead - dtBefore = dtAfter.plus({ days: 8 }); - //remove a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*thisweek*": - //Between Sunday at midnight and Next sunday at midnight - - //Start with today - dtAfter = dtToday; - //SET dtAfter to Monday start of this week - //go backwards to monday (In Luxon Monday is 1, Sunday is 7) - while (dtAfter.weekday != 1) { - dtAfter = dtAfter.plus({ days: -1 }); - } - //Now go back to sunday last second - dtAfter = dtAfter.plus({ seconds: -1 }); - - //Start with today - dtBefore = dtToday; - - //SET dtBefore to next monday - //is it monday now? - if (dtBefore.weekday == 1) { - //Monday today? then go to next monday - dtBefore = dtBefore.plus({ days: 7 }); - } else { - //Find next monday... - while (dtBefore.weekday != 1) { - dtBefore = dtBefore.plus({ days: 1 }); - } - } - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*nextweek*": - //Between Next Sunday at midnight and Next Next sunday at midnight - - //Start with today - dtAfter = dtToday; - //If today is monday skip over it first, we're looking for *next* monday, not this one - if (dtAfter.weekday == 1) { - dtAfter = dtAfter.plus({ days: 1 }); - } - - //go forwards to next monday 12:00am (In Luxon Monday is 1, Sunday is 7) - while (dtAfter.weekday != 1) { - dtAfter = dtAfter.plus({ days: 1 }); - } - //Now go back to sunday last second - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set dtBefore 7 days ahead of dtAfter - //(sb BEFORE two mondays from now at zero hour so need to add a second due to prior removal of a second to make sunday) - dtBefore = dtAfter.plus({ days: 7, seconds: 1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*lastmonth*": - //start with the first day of this month - dtAfter = window.$gz.DateTime.local(dtNow.year, dtNow.month, 1); - //subtract a Month - dtAfter = dtAfter.plus({ months: -1 }); - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*thismonth*": - //start with the first day of this month - dtAfter = window.$gz.DateTime.local(dtNow.year, dtNow.month, 1); - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*nextmonth*": - //start with the first day of this month - dtAfter = window.$gz.DateTime.local(dtNow.year, dtNow.month, 1); - - //add a month - dtAfter = dtAfter.plus({ months: 1 }); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*14daywindow*": - //Start with today - dtAfter = dtToday; - - //subtract 7 days - dtAfter = dtAfter.plus({ days: -7 }); - - //Add 15 days to dtAfter to get end date - dtBefore = dtAfter.plus({ days: 15 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*past*": - //Any time before Now - //set return values from calculated values - ret.after = undefined; - ret.before = dtNow.toUTC().toString(); - break; - - case "*future*": - //Any time after Now - //set return values from calculated values - ret.after = dtNow.toUTC().toString(); - ret.before = undefined; - break; - - case "*lastyear*": - //"last year" means prior calendar year from start of january to end of december - //start with the first day of this year - dtAfter = window.$gz.DateTime.local(dtNow.year); - - //subtract a year - dtAfter = dtAfter.plus({ years: -1 }); - - //Before zero hour january 1st this year - dtBefore = window.$gz.DateTime.local(dtNow.year); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*thisyear*": - //From zero hour january 1 this year (minus a second) to zero hour jan 1 next year - //start with the first day of this year - dtAfter = window.$gz.DateTime.local(dtNow.year); - - //Before zero hour january 1st next year - dtBefore = window.$gz.DateTime.local(dtNow.year); - dtBefore = dtBefore.plus({ years: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*last3months*": - //From Now minus 3 months - dtAfter = dtToday.plus({ months: -3 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*last6months*": - //From Now minus 6 months - dtAfter = dtToday.plus({ months: -6 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*pastyear*": //within the prior 365 days before today - //From Now minus 365 days - dtAfter = dtToday.plus({ days: -365 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*past90days*": - //From Now minus 90 days - dtAfter = dtNow.plus({ days: -90 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*past30days*": - //From Now minus 30 days - dtAfter = dtNow.plus({ days: -30 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*past7days*": - //From Now minus 7 days - dtAfter = dtNow.plus({ days: -7 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*past24hours*": - //From Now minus 24 hours - dtAfter = dtNow.plus({ hours: -24 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*past6hours*": - //From Now minus 6 hours - dtAfter = dtNow.plus({ hours: -6 }); - - //Before now - dtBefore = dtNow; - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - /////////////////////////////////////////////////////////////////////////// - case "*january*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 1, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*february*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 2, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*march*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 3, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*april*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 4, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*may*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 5, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*june*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 6, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*july*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 7, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*august*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 8, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*september*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 9, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*october*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 10, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*november*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 11, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*december*": - //This year specific month (month is 1 based) - dtAfter = window.$gz.DateTime.local(dtNow.year, 12, 1); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*lastyearlastmonth*": - //start with the first day of this month - dtAfter = window.$gz.DateTime.local(dtNow.year, dtNow.month, 1); - //subtract a Year and a Month - dtAfter = dtAfter.plus({ years: -1, months: -1 }); - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*lastyearthismonth*": - //start with the first day of this month - dtAfter = window.$gz.DateTime.local(dtNow.year, dtNow.month, 1); - //subtract a Year - dtAfter = dtAfter.plus({ years: -1 }); - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - case "*lastyearnextmonth*": - //start with the first day of this month - dtAfter = window.$gz.DateTime.local(dtNow.year, dtNow.month, 1); - - //subtract a year, add a month - dtAfter = dtAfter.plus({ years: -1, months: 1 }); - - //Add one month to dtAfter to get end date - dtBefore = dtAfter.plus({ months: 1 }); - - //move after back a second for boundary - dtAfter = dtAfter.plus({ seconds: -1 }); - - //set return values from calculated values - ret.after = dtAfter.toUTC().toString(); - ret.before = dtBefore.toUTC().toString(); - break; - - default: - throw new Error( - "relative-date-time-filter-calculater: Date token [" + - token + - "] was not recognized" - ); - //-------------------------- - } - - return ret; - } -}; diff --git a/client/src/api/sockeye-version.js b/client/src/api/sockeye-version.js deleted file mode 100644 index f5ea7e9..0000000 --- a/client/src/api/sockeye-version.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - version: "8.0.28", - copyright: "© 1999-2022, Ground Zero Tech-Works Inc." -}; diff --git a/client/src/api/socktype.js b/client/src/api/socktype.js deleted file mode 100644 index 1185ea3..0000000 --- a/client/src/api/socktype.js +++ /dev/null @@ -1,48 +0,0 @@ -export default { - NoType: 0, - Global: 1, - FormUserOptions: 2, - User: 3, - ServerState: 4, - LogFile: 6, - PickListTemplate: 7, - Customer: 8, - ServerJob: 9, - ServerMetrics: 12, - Translation: 13, - UserOptions: 14, - HeadOffice: 15, - FileAttachment: 17, - DataListSavedFilter: 18, - FormCustom: 19, - Vendor: 33, - GlobalOps: 47, //really only used for rights, not an object type of any kind - BizMetrics: 48, //deprecate? Not used for anything as of nov 2020 - Backup: 49, - Notification: 50, - NotifySubscription: 51, - Reminder: 52, - OpsNotificationSettings: 56, - Report: 57, - DashboardView: 58, - CustomerNote: 59, - Memo: 60, - Review: 61, - DataListColumnView: 68, - CustomerNotifySubscription: 84, //proxy subs for customers - Integration: 92, //3rd party or add-on integration data store, - - License: 93, - TrialLicenseRequest: 94, - SubscriptionServer: 95, - Purchase: 96, - Product: 97, - GZCase: 98 -}; -/** - * - * This is a mirror of SockType.cs in server project - * To update just copy the contents of SockType.cs and replace " :" with ":" (without quotes obvsly) - * - * - */ diff --git a/client/src/api/translation.js b/client/src/api/translation.js deleted file mode 100644 index 78b5d5d..0000000 --- a/client/src/api/translation.js +++ /dev/null @@ -1,327 +0,0 @@ -export default { - //////////////////////////////// - // Update the local cache - // - // - async updateCache(editedTranslation) { - //This function is only called if there is a requirement to refresh the local cache - //either they just changed translations and saved it in user settings - //or they just edited a translation and saved it in translation editor and it's also their own local translation - - if (editedTranslation) { - //iterate the keys that are cached and set them from whatever is in editedTranslation for that key - for (const [key] of Object.entries( - window.$gz.store.state.translationText - )) { - const display = editedTranslation.translationItems.find( - z => z.key == key - ).display; - - window.$gz.store.commit("setTranslationText", { - key: key, - value: display - }); - } - } else { - //gather up the keys that are cached and fetch the latest and then replace them - const needIt = []; - Object.keys(window.$gz.store.state.translationText).forEach(z => { - needIt.push(z); - }); - //fetch these keys - const transData = await window.$gz.api.upsert( - "translation/subset", - needIt - ); - transData.data.forEach(function commitFetchedTranslationItemToStore( - item - ) { - window.$gz.store.commit("setTranslationText", item); - }); - } - }, - get(key) { - if (!key) { - console.trace("translation.js::get, no translation key was presented"); - return ""; - } - //no translation for Wiki - if (key == "Wiki") { - return "Wiki"; - } - if (!window.$gz.util.has(window.$gz.store.state.translationText, key)) { - return "??" + key; - } - return window.$gz.store.state.translationText[key]; - }, - async cacheTranslations(keys, forceTranslationId) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async function fetchTranslationKeysFromServer(resolve) { - // - //step 1: build an array of keys that we don't have already - //Note: this will ensure only unique keys go into the store so it's safe to call this with dupes as can happen - //for example datatables have dynamic column names so they need to fetch on demand - const needIt = []; - for (let i = 0; i < keys.length; i++) { - if ( - !window.$gz.util.has(window.$gz.store.state.translationText, keys[i]) - ) { - needIt.push(keys[i]); - } - } - - if (needIt.length == 0) { - return resolve(); - } - - //step 2: get it - let transData = null; - - if (forceTranslationId) { - transData = await window.$gz.api.upsert( - `translation/subset/${forceTranslationId}`, - needIt - ); - } else { - transData = await window.$gz.api.upsert("translation/subset", needIt); - } - - transData.data.forEach(function commitFetchedTranslationItemToStore( - item - ) { - window.$gz.store.commit("setTranslationText", item); - }); - return resolve(); - }); - }, - //Keys that will always be required for any Sockeye work for any user - coreKeys: [ - //main nav options - "Home", - "Dashboard", - "Schedule", - "MemoList", - "ReviewList", - "UserSettings", - "SetLoginPassword", - "NotifySubscriptionList", - "UserPreferences", - "Service", - "CustomerList", - "HeadOfficeList", - "VendorList", - "CustomerNotifySubscriptionList", - "Contacts", - "AdministrationGlobalSettings", - "HelpLicense", - "UserList", - "Translation", - "TranslationList", - "ReportList", - "ReminderList", - "Accounting", - "Administration", - "Operations", - "Attachments", - "Review", - "Extensions", - "History", - "Statistics", - "Backup", - "ServerState", - "ServerJobs", - "ServerLog", - "ServerMetrics", - "ServerProfiler", - "OpsNotificationSettings", - "ViewServerConfiguration", - "NotificationCustomerDeliveryLog", - "NotificationDeliveryLog", - "HelpAboutSockeye", - "MenuHelp", - "More", - "Logout", - "Active", - "Copy", - "New", - "Cancel", - "Close", - "Save", - "SaveACopy", - "Delete", - "SoftDelete", - "SoftDeleteAll", - "Undelete", - "Add", - "Replace", - "Remove", - "OK", - "Open", - "Print", - "Report", - "Refresh", - "Sort", - "Duplicate", - "RecordHistory", - "Search", - "TypeToSearchOrAdd", - "SelectedItems", - "AllItemsInList", - "NoData", - "Errors", - "ErrorFieldLengthExceeded", - "ErrorStartDateAfterEndDate", - "ErrorRequiredFieldEmpty", - "ErrorFieldValueNotInteger", - "ErrorFieldValueNotDecimal", - "ErrorAPI2000", - "ErrorAPI2001", - "ErrorAPI2002", - "ErrorAPI2003", - "ErrorAPI2004", - "ErrorAPI2005", - "ErrorAPI2006", - "ErrorAPI2010", - "ErrorAPI2020", - "ErrorAPI2030", - "ErrorAPI2040", - "ErrorAPI2200", - "ErrorAPI2201", - "ErrorAPI2202", - "ErrorAPI2203", - "ErrorAPI2204", - "ErrorAPI2205", - "ErrorAPI2206", - "ErrorAPI2207", - "ErrorAPI2208", - "ErrorAPI2209", - "ErrorAPI2210", - "ErrorAPI2212", - "ErrorServerUnresponsive", - "ErrorUserNotAuthenticated", - "ErrorUserNotAuthorized", - "ErrorNoMatch", - "ErrorPickListQueryInvalid", - "ErrorSecurityUserCapacity", - "ErrorDBForeignKeyViolation", - "DeletePrompt", - "AreYouSureUnsavedChanges", - "Leave", - "Tags", - "Tag", - "Customize", - "ObjectCustomFieldCustomGrid", - "RowsPerPage", - "PageOfPageText", - "Loading", - "Filter", - "Heading", - "Table", - "InsertLink", - "LinkUrl", - "LinkText", - "InsertImage", - "ImageUrl", - "ImageDescription", - "AttachFile", - "AttachmentNotes", - "Upload", - "AttachmentFileName", - "FileAttachment", - "MaintenanceExpired", - "MaintenanceExpiredNote", - "Import", - "Export", - "TimeSpanYears", - "TimeSpanMonths", - "TimeSpanDays", - "TimeSpanHours", - "TimeSpanMinutes", - "TimeSpanSeconds", - "DirectNotification", - "UpdateAvailable", - "DropFilesHere", - "First", - "Backward", - "Forward", - "Last", - "GeoCapture", - "GeoView", - "CopyToClipboard", - "SockType", - "Now", - "DateRangeToday", - "ReportRenderTimeOut", - "RenderingReport", - "Settings", - "IntegrationList", - "BusinessSettings", - "LicenseList", - "License", - "TrialLicenseRequestList", - "SubscriptionServerList", - "ProductList", - "PurchaseList", - "GZCaseList" - ], - - //////////////////////////////////////////////////////// - // Take in a string that contains one or more - //translation keys that start with LT: - //translate each and replace and return the string translated - // (fetch and cache any missing strings) - async translateStringWithMultipleKeysAsync(s) { - if (s == null) { - return s; - } - let ret = s; - - const found = s.match(/LT:[\w]*/gm); - if (found == null) { - return ret; - } - - //clean up the keys for fetching - const keysToCache = found.map(z => z.replace("LT:", "")); - //cache / fetch any that are not already present - await this.cacheTranslations(keysToCache); - - //replace - found.forEach(z => { - const translated = this.get(z.replace("LT:", "")); - //replace all - ret = ret.split(z).join(translated); - }); - - return ret; - }, - //////////////////////////////////////////////////////// - // Take in a string that contains one or more - //translation keys that start with LT: - //translate each and replace and return the string translated - // (DOES NOT fetch and cache any missing strings, they must exist) - //this is the sync version to be used in non async capable code - translateStringWithMultipleKeys(s) { - let ret = s; - const found = s.match(/LT:[\w]*/gm); - if (found == null) { - return ret; - } - //replace - found.forEach(z => { - const translated = this.get(z.replace("LT:", "")); - //replace all - ret = ret.split(z).join(translated); - }); - return ret; - }, - - //////////////////////////////////////////////////////// - // dynamically set the vuetify language elements from - // users translated text - // Keeping vuetify using en locale and just adjusting on top of that - // - setVuetifyDefaultLanguageElements(vm) { - vm.$vuetify.lang.locales.en.close = this.get("OK"); - } -}; diff --git a/client/src/assets/css/main.css b/client/src/assets/css/main.css deleted file mode 100644 index d2d4bd6..0000000 --- a/client/src/assets/css/main.css +++ /dev/null @@ -1,23 +0,0 @@ -.multi-line { - white-space: pre-line; -} - -/* -#nprogress .bar { - height: 2px; - background: rgb(255, 255, 0) !important; - } - - #nprogress .spinner .spinner-icon { - border-top-color: #ffff00 !important; - border-left-color: #ffff00 !important; - } -*/ -/* .aywiki > blockquote { - margin-top: 10px; - margin-bottom: 10px; - margin-left: 50px; - padding-left: 15px; - border-left: 3px solid #ccc; - background-color: rgb(245, 252, 255); -} */ diff --git a/client/src/assets/img/sockeye-128.png b/client/src/assets/img/sockeye-128.png deleted file mode 100644 index 33cc66c807795846a428617ff58c9de67170ce1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45027 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:KL*PT0ne&)Dm4 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 a-hswD(0B(L??B@nXuJcBci=a<1OEpKFve*B diff --git a/client/src/assets/img/sockeye.jpg b/client/src/assets/img/sockeye.jpg deleted file mode 100644 index 60c40935f42100fa2a23cc3d3ed8cf8410fc1af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154590 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

5>OeAw>$f8`x_}%?n`zy3enr?CcL)meg~$v z^F6QazjN9{-=^2OOYWjj6>wWA!sOw5*VFrLxVI;d-!4fXR0*Y?w7fH2e`Le z-)~NXZMlIXcbX7xR_98W#1*~GR*H{j`)B)=?x}Y>zVY27-tYG2FG!i(LAF_0ffi@7 zZfL-N@}WA~`)MPpxlJ_^OEl7SoZp8ihTL0H72CfDv(O1H=2f z_Ltk8@3S42!ZhtW)R4^waDf4oIlc_Xsg;Su6F_`#b+>-s7T>jdh2cBtWoTlOE~Ryh zmDI}Es<0fZov2jL2kswi%e9$`rS^ngH@(0dG@R{*Rf#ltxnL2MSGgcs{s--<48s1D zpPIMA>Tjn3kJDMQDrUm(LXZ!bxc)qA4yL5&?6(nX4o;i~m*w3-WHj>9bKaEQE+NE?%=I{NaSs8X4g^?|Bx0j{IfH_xscPFXM(VIP+++F9fx9Gc! zQbvjbexX-U5s`7Na%*toSnTOm$~R8Nu+LZj0P`FYradTsjf4p}&UAJ!ga)v^x zs&yTAV#U5@2c38IQa_UDIN7X5q4hTDuy77;b20W`Boi~ zQMa`1!YNAbH3l{)NjLGx)?B>{DIJZc`)p1Dlr3iN$n(Ax;L6( zKuV^70lMQ?kvN?_uJ3Ic6*9T%xMQ8}KJn#NWXBjg-H+U}Y#CjoGVNu34vl8hcEPRq zdET>XPMVXH8-KWco+jJF-ZmOzfzSGg!s!A`!MEYUy12Dfw=tC9^II+Oc*Dx8E*)6m z;f6M^CF>0I(&V>$NE`h|+<}QLaz_k69u>)>)7NxzC0S772vhf4D^#4Gl%)XMgmdY+ z=>TfLfDTr@Nj1c~TM~^Sy~rFfq_Yl-b8ps!#>aMr_GZFGaj8cO+PYD>^E~~OQ6(_; zz2?>5xchp4RpaWGEXBv&E1L^fq1zE-%9J@rOWd>V{lo0Z*<%UayJ20-h~G471)L5g z4+`I2Jv%eMx9pC^W9C6wY*YZOIP>tV*`KQEtJM)wNWG20B=MvhNQlGCl%;u1At8J5<$QYtqXFI^R% zCW(=a&Ri)tHOJK(A|nt%7Zpgj*F!*>;coOYDQIlXVoffcLxvwCA$zf~T5I9wMGM_zkMD25OFJW11=~SDR zWpM`QE?Lo*nbacL&6ttE8n$wY)m}EsDsNlV=)riOE_G`VbL@Ben9!4=k{dSqu;)^@ zX8XD--0lNh+l?BGir#U#l*F8DqlYpnVs*bA2&&tyjaQr^RdMxL!m10f&W*hZO4UmN zLxKtF&&rL!tyPv@Ofr(eI4?XdYg4(#CB)#9hmzL8M;;fboEyDe-ZVs?Q2zif-Y13X zSIp_y{{XbYizx)+G92jj6;PUFRwpdZ$ESets@hmFPP9wlqbP2U5Ch zPb$qacJGxCWZEe31)ca&dY_S8b<%%xDFCoKt*e;gc~+hd6 zk_2jPem)hJw>tIP98r}ji(_+dq~4=VnoUtb0;(^o8|EsQX(ye@GK*cXYyiDU*xRn} zQ!CWOk!x@i(*b(2$sr_M3~y23)f||==8(AGE)`=0Z`5YmTEiy93YwSYW;ONN*nS@x zuufSIg9g3;+_(2p681q4O=*~T|yaE>s?6MTQ2YgThlg=Lsj>2K=c$Qm{&O?~F6xKerZs`P^uey(05?4b2^7R7JG)@8G!ty9kC6h-YEt-Ez(mn|+1JN~Cni-FA2T3~ zWg_KpJWZ+ORQ~{T*o@&!VfYIa9(8MmW4qL+@-EwwP^&1pA5pB|Tphi;^uyGzZ)-oO zZE|!~zmdUARratZ#u0gNX1*^?(`{? zg<(Gea8aLyZn;o!?Qvyt^kW(ZV|S2P5yTqjui$zU;HB$hAhb%#4_h1fpDJsTsiKX` z8cRkZQ+XvFOP3t#C7CyF$f~N zQ@3Js^Hju>mti1Vgc@W3U}&ot7wzQbZK+&M>PS_`$^cR@K7S0VwHg?uxj1`hTL!rd zt1tdPl=$5%?a@U`>CrZp_vDQNUARnTFO3xqa%AUqy$GrZCjCpkw3O&;=YAEbl?ODq+mq3kr$WBi+%w^-*V7rs z*F38}XGOhV@QEu!=qPL!1JFPq62Ht-akBC#+_G*6kxrd9D#U%?@2H#>-mIB2$Ikx%d&`AbGs;<*qWqK+EzGz;jl>_kd^uH&$<5kSY_%>}OqPK^ zGkYJ+kIbVrQ~vD2tJo|+N+OBRsR4@ zyL<)*bX8rlWT+j&SND)l4 z+V7BCXLQSl8oW$fwKXlmHK&nEN@5};b8!ed&q?CP8mB0G<~KFX@COUze5xCU#q&5} zpE?>w4+GBu;Y2I|BF8qpta#L9SSD4J0zhTH2c2ZoUL;CF_ctndgMbxfqZX}M2@s&e zs@MVNRaoP0xH68bs>2%`4p#80bAu=~0;(_>4+z`;`%7TO3>H#c-E8L(?jt&qMIbf=bmPv| z&YicVlRG+A$`8Hvjr3do*R|e6!P0nGK=Cgi;Vf4Dx@1BwwhR(8apJS z%=+-Te01BDswPH{W7@m)ea;cL?%$adBJjvCbOZ45^Q{?EQHm-XXX%^ba#~gqreE6oCf~H}HvPlg9mvbO z+N$oCY>XZ_kxr%cWNYeXHs}=ChuVK`{{VGh?>(+v_j}##wtIJx*Jkp!rthF?bzx;r zm9|xupwyp3+3z;H-K<-^q^myKWe*gnZmg$>H40roCr5Xq3a$4#=XQf%|cfQOB&%0x{1ttOf>K*6|yj#%)j>Jv6#?u`)C8G~OCFg7)Z*Cv&YoL=Ld1&WD?%pAb* zBQac`QLaYxKH%;9mLI6wtF3@y8y_n*6>Nm2PkY*ZxZy+)lyY^m+V=;My@hGnnMk8) z+WRCEk_3bRNo!o%-WeLjt!8ei7BssE(3M7Oi{qzJ9P_|dIJc?Ol3EsR`i5Gor=O_*lf`h(g~tg=)@i~}JIP3+d?#>xHtd}@Hi9js&TqG9mn-um$<>Y*j+aB;Ol;ke25$? z-_vz<4^({4{SEnO4aBIz);?nlYr9dC&s((5o=T)h;2af- zmEZ{BUT(#fe(TxxbERyzMNGH21P13>lhW(41hW!^W5b!XR*X{8;E{|eAd!3JdXpyM zSMe$^wf#bGejmoQ%Mfw;PI(bwchmPyWYv=nt+?1Q1Zfywl@Y5cP>JG37hVN@-^ z#0s|YGuD#9BXh&d(6gA>$XjLRMMF(P#)OV0%5dXRVBMD|jSQ2iZH2FK!ls35lK2@n zAObPt&YBguUS?R?2m<#0H5R3AD+Lg|jjK}F42L3XrP4h87rT_#z{;prW+x8{OsEQq zkCP?=KQ06KR&+Xi*+fc<0@+-e(q|`JWWchFud6BujQE*vyQdB;JSZY^v?Ayous<)= zO1N1alvjR|WrwF=31Dn3&YW|S{ZC9)7(f(Rj~r@SCc4)YJfT+>ZmY0?Oz^aDV z%L@#JMD{JK50Ql>-&frk3c4sK&1u-R?5Z^U$0Oxfso%CE8i9ghel&WDV!0pzxo#W< zX`JY@ERY(Grnm>~@~I}3TXIRw&6Ht$Y9m+6!3N0NhYBKFLjVQGiOl%b)XXa6YS48z zlX+E%FzpUmD_O&v;&48EYIz!KJcHSd#exsCQDD`VEbN8L{f4ALRk;~km(l+KsQ6RN zEqI{zMzGA_1y!7pzAh0Wg+U-+9L{x_$-Xd#tEQ$uPIaRbDp`VWh{KmKDjIpokb#ay z*2|qqgHg-iNp3+x1=lg)Ddt6-coNn?2z)`LZfbD^O~Q!?8bBj1J~d8yDJk@spHak{ zU%*zKwmB}Ta>I47QH}b)x{Dbt*CzmGhzVgs?;+Tv$bWJ)Ln5n zE+;A_0o$7R1_hSm1ID7mEwfoeQ95K7A#%SOzD70mcov&#RyP;EIn<4gt*lw<9aiQ= z>F^nO)SZjLC&+|KUB;}lAl9A{&Wn@DmtV{*!=z=1u_J{O!7WL*k$~liRLg+ndXRKh zoDfpPG9Gs}%fhtbWaU=v>1I{6>Ap*F=lIl!G_5iDGE1aL$QK67%A?AYNhIBTNU-%= z&<9e2H840@tVT>X&(a!3k+d(&rtNHq6=Dp#J2+aSGwCufqtX`GkF?&E^Bt~Qbt5jR z1(aAOLfBg`@1nskH&C`Ru6pTbwBI_?zpSYx_x-xf9`WdlATBO=T#-yFOmGv553D84a%D(fDwx{0z}2 zHhbt_5Mi^D7ILylgQ+(JjEStye2$f>RB8PB5C}|Zw~U3A4Z{x#vzge>8LFcBjfo@% zC6YUXh>=0Z51O!+VV;+GsaXva1q_$tRukF{Hdi5&7cUJhKL`@-mdH z{M!WCW(Rd9i zlHe*vmvuiihah^G0Xiih=?`%g(a|YkOLEIGxMp+aa1yT*q$NAIJV%?r9OBcBSbk7?MvA5S_ zS>X0F%CE@jZMPl1Rt~$L@S_o6NXEd|CYse7O>E88?eJSvVIEJJbqyrkaVv#pe9d#T zc$-^ozT~!;)={VC0O}U_=ThBoXk_}nM`LHSu+;8B&#pW%&i1c2WgmgkmPW*zV)|L4 zNnHrDLi!rl`^s~#JRXG4sQ%FRmY-q0?J}W;O_aLfiS4V>mmU~fRqOBlyR(%e!1+G* zk!kThgI_@LiUB|<1puHF2j;JSdmCxm{pq^xFA#%e+?Drznq(LP#FvZ5L-71IsW4cR z=Y8|qo6VEoa!W{5kU+i1ff!n&Vh&$!F)a9!m$let2*~(~Ng6%Bw!5^OX~a`m_VOJs zrp&HMuovgyTdj;*r%&9T&i!c{&fZct%v!}HQNWK1=@MaD4?FyN>nuGi~E-ziRAzdq)gUs{|@DEOEm+sRP`5 zGu=M*?7Pn1z2kAT?Y*K#k7);OmBxkjEK8E30xnqUZ#v6>eZy_t`(EqT{XXs~hTl)D z$m+_v#n$8-V^GnzKqv(OpgA4;+gm>OF3@k8n`yQz?Y0Dkk(g<-+wR)*2g-ff`+vUn zyp1Nohj8}R?m~&%rz6$c$l#SonZ9Vr;rB&i)RLzM$otQ?BUOFw!NjlzBXj8x;UpNc zhT~((x#@#PpOy_lmE*eOfWtpLjYhl+Cm*iJ|0zqfw+$qBThJxa4ah=7EPp3(g28D+fcoT7S6EEqp`Hx$ABfZ zi|S=u50{N{vo?{q3W0$oRM_7Uesz>_ZG-hWlY>nu7wMrgJOD)T+L<+&%m}V zyiCCyoN;sZR1U=d06@16y;`y0aPl}+lO&^GOLAlhVn%@4MaQ2z(~)?|slAKR+?h<8 zBel$U0zntZSEsA8R31*+Ln_)rHyecr1YefS#AeI}cdffZIjYM%bjTy!6l<)8<(0VD zoNJ+!dd|iKfWe+rE=y*nhb24x`#Ds6Lak#kZFHd`_-<7Y12fH643 zS-z4!RvtI5l(acK-IbKhUuyRO+q~jim}Fg0RFGN;asYZuh__&t%w%Wjq^6~sU=Djg+-Bs zyuR;0I!s`3R(yruQ5MATz7-)FmnCeZ2I9ky6Iz)$M-==>1=E&!`BtV*YP>bolK_MV z0@atFf!3>v{{WE(TNB5dR+Bm1L-HcaUy$YpxcaAUH(w9tUlAt)_j!}!tTCR11R25Vgh&6YJ|a&n2HCmd>v zVsI8W=UB6ozgJqKhGkaGtc)8jR;y+5r| zlW!a2jRzGtFix;nD{-R6OMg}fi!4P>VBjk1%qUcbN;8G>Y=x>=-&T_K2E^LkIg8NB z%knZ8i9IWw{{XgBMQUU^K<9z5#Br>h8dh+~HOMJ(j(!z%$(Nr@nN1-*HppNo{7qG;;zTu^BI3l^MIv%% zpBD(85ss1z@IP(pYHhwT0fSh+cF&y?*jl)dmo^}pH3d(WgQWCZ48>nFI{Hz97Ztu( z5%A|vFtdXy)&L9}D;mp2>u6EAB_&PqyNdv7yrL{Q@fJF+bI%h-M6)DyYnukc_|?%F zZf;?m0?0E5BYR$oqTQOLS0b{Y(}Q0UGagl><(#iqTH{gbs317I3;?MNyy~KLGaO8^ z7rl=jVDhT%u%}Z^*^!Pv&N5q4o8#w3@dj&OUns^&MCL{S;rOk@4iy@MU3YhIHT8OS z0F00c+vQljVBu-SP^Yj zTX4?)b(uOU%4jLPX4wo$Ib2n?raIx&#F{h$y(Alhj$UbB12^-Fmn`s0;wm< z#E@+h4iLSypTcTw=4xW!G@VscTWz?lkrpT}#VJsrxI=JjaVSo3cMa}diWA(e#U(fd zcXx_ga4YUo>_6G(oPC$EF0;Nd*89zO&Szd(e2x`4jg^lZoLAgekNM&YzA8=_M`eZ~=(CZA#A%-3IBTUohv z;vn4}$!gdjEui&@J0|Yi$~;J|4XE`W0)9UlQ^`GaEL(5Sa$i@Ow4F)SL|DEBOml4e zJ|{kf`@r77Q=sc_jKk0dO7en-#!-)l9*n6xd|f-+n`8BUrI{+PCzN{e1FAf_qq9Ir zUt@jTr`+hY`03pjJI9jILz`l!+pFM-u4a|;LI%EL=nYYRoEpnPpuP|Jn$Zd?J(Cwx zgsbYzk$&VdIScZHvk`D~*=?Um{H@b}rWMC5nx9~ZD4;i5dV`iKA(l)Lr*l9{Fz3v} zL0rkw<>s1w)zdM@7C}0d5TgLZ$<~502ruv{S=RKjICE^~Y7%drX!HciqKC&4(06^&4tDBPmUgNW421X`QJtE$QyeFZv!^Bjkex8SeS5B) z1&(@>m1VR83@WBPobF#fd|h*wr`B0$O0GG$|2xkKem_>uknL|fGI^Q<-<~Lnj&0UA zqDVG7I&-4fG{Oo+L#;tb3&07;;$>yQnorK#{@JpYXwy>j&?q$9HC)?(qN*-Ptxi=e z>ukxEyFF)R^8h#;vFCEQT(Y^eaaLlOHas7YLKL9F^bOgrA3ne!l=o(~?M@!{k)^(B9Iw`j6+)UnsQi*Yxy-ppyCvhE|U+)xQcDeLm%8zFoD7F^IhXHm0-OkH9wSa>bi)9Ql`i3)%m8bh1E# ziB_DQCW+HD{8u)vGU`9z_wgIfF$cL}VPG;*IT6Cu&zB5C7m^I^R75x5}Cgj4v-2zPJJFXrI`g~_+j3k4)+gD-ztD%&HK2pLQgEful zcD1($Fzc_9xGv|-g}s+4N{?CDOr7Ak57yQg73T4z2~;bJF&Ph;PORir7DMSfaw|R^ zx_9>VN1?e3x2z$sxCcY9#c6D5#=l zR^rZ@jo-@oF#=`>ZrQR7Z)~um_?%tb-W|=G(wb zCP0DF2mcCf7vLW&>xUL$?N(3yfpvoBtTn@l?@s^Jp$RpV>2=i`)6k`c9c!4HUc|cn zE$YbsmXhEIU({HgzAmkho3r?mk7O^NJ^vBf$_>;)6{g5=AtXZ`f~&GEjU3DEO`Cr% z+CjVwRhJ1ZNDWUll3j3_hUZs-TxAeYpSkB@FOeHLHr(ybQPH zn7{l>=$a??+0nbWu|LZv@7A@+w`7Hvq`d{!s+EUbP6OK8WO}!?>;5TgANtpiL|^FB zJKGixICa)_EMLf6G&7Xbf#`Jh8u*IeVc7i(t36aJENG5021QtJ_*KvQ#rRaC5y>0z zu@)NkaLEZ~oB3!u%;P~(*Jll3sAd@teq&M{BU z%FLas`jwa@H1U7ZB848cE1*~L1&QRyj7BqQOk`ZGdjSg@oCv?QW&P^84)VOswE<_R zqMV>62T6rl8Lkh7pXV0O`~}p?@%^Ve?q5?9s&7p6fGPEp1X%QZ5*V}={w+(40EW~} zsjK>m&|>haFbuv8Z+I^lUu*U5tcR9-cz4U&2e`i@$4lzFjA+&xC(|T}*cJj^-rvwK}tBIGFo)L}LuxQA`A#PES=#3@v>4G_(I%neo=L6R0^ z-|P;&e_<@~xyzk899pd18iv&Mi@3Ciu%yO8dp%nz>G4s_I1yZ%P|-&lXToC9Zco%# zD7>+0V#`w}i(>eQ#X3Ri`+9eDA3Zk)2a{a+gZ-mQYxl5^<UNP5Lo#}oqN=zd%RQXgXq1BJ=vDUsXprJAL5RU6r zu3Ax1*i;T8F-Vf2yQ;2ZoapDfFW&M#vryOE_A`J}t;ST8C_epC(>p5?t(@uddDKP| zwH>u^3pF_@f>}7a*oTD4VNOJSOuuu{BEirbYWs7urXGbzf}j9n9Qx-5VACiT=HrOv z*GM*L(GMY)*AU>;`-G5Zz$hp{z`lAPW%q z@$&~7!;^iy!`3VRvYw$=?#khcXI@e9SGhXQ;1A;nT;fV@AQhXj4mrHJC1uSYdf@VV1GjECGpU;^Lwzy{IH0BIUQIZ zFIQsOyocg_MZG$l@(xE-NQ%-H?YVSXc?ne%gCq5Z2{aEnNW-bO9lXi9tc*ihOcas0 zwgZ7PHa<=w#X*0q7O9Puz>`vY3&{}G!C?3qc>B2Y{+}zYNe|u?X_l@Gs{URpzM4Pr z77K$^sgk0Y+73^7`HZg`fxR6FVRiWxpq6beOscgF(xM$Il&P37(Z|a(2LnU-rtna5 z7?9*g;H!TAjq*q`i6hzpD&)SXq;==5cjmht0qY$WrrhdclaW@* zQu==#c4T&HziJWm?|2WvZ$Q$^oCLI0aCZPfoNxur=NqATW zk8cC()hz7Hsm+HGgV3|z-&nhjr_o^o#msZ3nOTWe`j!;~n5C;-o0rs!&%9GiBQ?=v zSkiekb2o zW7^yw4K?h9qvr%jnLmqlGc*)AS-YReH}Ae3q1L^k*}pXHYG_Ms9>S+87#{{u)$wTN zz_*OS0K{LHqx>rkMS$b0C7g2BkoSS5<;R&D8Rqx{s9V@7;HIycf92(9~w(0%NH{zDSM8=E(16&_(K88WX+ z%-+YxPQH&$`*Skisqwl>0(7S2>xoqb3=V4VnAI1H_e}VHw{-GB5jfQK{r8ClyYBht zu%671f3|eaP`%>`Pv{_>0}X`vtf%+fgB%mZ;}=g`q~;aFas8%)1V5tY4Fwjhn+RM~ zvvh2bK)Cz3(xLP=R&FJ4ujGBMQK2FwgUBr#g)B_9t?k3b5kUou8ZG`3ncvoe7%vpV zxPE0x#;wKDf-a^dU^+ZhQa10>!S+EYwEFNPS#rcZ6py|BrCxzg>^BIjJF5B#JoyM!@~;A;9M-i&yf(Tw=CxMV~uqVe`{D97g-5 zqo4a-Wz!&IF~4Ej9;mP%?tb4{y3ziR@ctFzYbEKu7svO({86IEpQYfqK_vYlZ?guQ z_D;z5bb6iCa8+!W(;B^P4-Aad2$^4mwk~!L*Bu18{#C?5yA>_HFMLoe)mb|;r~bq} zR;?P}M*xf$>fTUig&FP<^;+UlM7I;P2M*ZZt- zVc2xC5Z~@-sVWpo%joKc(s!4Bf1~{z{{@TeKZO4fm|h>3xV^9vta}?HZr*K!t=~Fx ziD9$LH-4M84_GBHo}f29tceJtIk!)%Ofov=CXPnR8xW6%rG*QhLsW+LXJsOpuzaqu zjBjH>OjVi6i1Ew^)w8+rPO_bDIK~Iwox}F&jx0sdx*xY>Cs-OsZ`)q`f{+cj5$tA- zaJn6aQys~=?OxDJ&Zd6LlM{zknGa|s3%IF&(`n}NXu}0Znnv>NU;%jB(NCQjF}zjh z+H|GBSt(zpgc2XwcZioE<_}SKg^D8yzV!9S;G9EH`R%Da zPl?qzQz(>bO%JuBreB7-EX9$^X^AN-9ZyE<4|lLj-y_=j5cD8qnOPg9aO>a#Y`B#ZG}u-gw2Qpcu+#pxz8oorvH)D!N- zgM9ASMsna+vPo7wnfErN^4YGD^IfMV7_=-I7Jh%KzE|D(yoX?Xj4Wg(U_>0d9=vG4tB|9(WQVb87h}Z|5TB$(;g!;0-upu-PlyB0b5le=(6ZA9ts-S>6*yr4)(PQR} zHE$1J$FfbWN(YrxG5R}xlg;~w^I5O;Q^oEF%w6SaP)~;02M@Vz$pD$Eo z1;D*KCP>!0KSpmUd!KX9K>xZ{?q72zpU!sVc90OcGOBgys1wNgcEBG*Ex$!0n#j?a zar2@M1?)b1ZPH%YcAohq^1GdrcTVj&BqH_wVK%-Y*{%XrWa!;}vV7+s-*r!SyBGC+ zHJ|D@?wGqlR#@CXxiEf}g)Cii5VV_Z%Y?A0)Q_P?STJg10s-sjBij-LV4J+<~f1h#y%y!Wc7KAb&Q zS|H%26A8p6gFXpF&y`0Bah}t1r3qp-?#6k&dGw8(Nt%PMcp*L{2DY82T>CmgjfNZV z%q^;?ct5j%SP{m_E@rQNgw>|+A$02p3`+9opRp^Qp>aqXfK4dl=n!}cho_tD`DOpM zQpU@(7HR3Go4I=8@9x7Xg2N}AamZ-=A zFP&;FRb^;atXR3KWqlIMV{N|D)xbm^vu2%Tb(vyZDC@|QDnEQadpW6>%`9V0b}6;y zscZCA`VXN{;Xi}`cy9#6eh(bP0WEjlSH+R?k=okfR8T49a6C5yms_4$`ILt4e2>Wo1k?Vh zMptD6p7+aLIUkz%p6!)P4yxDl6IGw0*9s%Rlpixs(yj7-MtpBW!2nUP<;oPxx2-I~ zw0R&W7fsWTAEZcuya!$ zy$TAx`!vEiBj5G$+mkEI=DlEY zR4GjWlllX4CE>!n5}4PNqg*E$?KjH1{gCUis=Nc=lL#$S9Xp+CYSXLY#-uymUr5S* zTxA3!(W&b8ZLrS;5+)=V1o5fFAx@l?P;^AHo4Gg<+YT)Ik%YvcNdf29vc*AdV;&YO z$^vel(mJ42<~VQdfVs3{RNnq!T! z+iPN|ZOflSJ=byWk3tofq>K8o*+4C|EekG;quq-8mLd>gz6)&huesmGvR+n}Q5uQf zES{@;XA2TjH70b3mD7?`|8Y)Ig--t1va=e|ystt>kU!&#xSSyaOOSz3XryUq|kT$nOM~f#(fQdm>e!;CNX3DhyW1LS7*}PnVxDBG;nDIYrKZ( zGmgeV_*Q*sS)JUm{7=2t#tPJuR;~@?crDG)3kMS6_~i*BFpy4J5R+LdI40(pWCNn{ zyXuj#E(Av{85lveuh#Lk;_fi}J>DrCwI7ER)te5q&c$pyPB6Db*xq5x!?07zw;`7& zt8$bqolwIb$ou|8y;5&)a7~|Ngnw-sgSj}?%|UUzh^5 z!xoUQG!sG}xpumk@51l36ak zf{OkFftD@i`C$hri{XS^*(`)Beg@wb_fl*C-X47T?y&!^}N5 zTUZ`()L0dvaroLy5m~Z=!GHUAAh;0ieIvA|ufXjWvbJ)~Q5CCnV@9koOK~Mv>vh4R zbeA$!D+z-J>b$%GMUFG+LNaHb#-B!nIl3QxG)l{h=D6PJlHeoSUpt0fiV zFs06#3#W4_d?urpb4XZGGy^IoyRMyEJ^vfO64W?x^Xymme+VsRlE>#w8bhu;y(NoN z2Q*MBkHq5p4TyJ9VCcPZAk6E+;nc6>5VU6dfEP;V!1{s2UgfXDQeP);W4RcA>#?Di zhqBsQRnGs*^X~g4ujRJGK0%xG7ifkJ2tGFqQ;*I^AFeG{=Vzasdbq}?culQs2Gn=` z@(*?rw$Em8`$;6>?OU)Uxob?@ytek$o~*t>jumRydSmxkr{^nTrX5_O!&kRW!c&0$yZa&jV!{}-?uqdGcYdm zVRhQIXW((;vFbmBu$x#l~`Z3bT>{R^qvV|2wZ`7J{^KB|Q1Qe3!?4%eO6Cakf| zAr!t7*xhq373x%D@$49CmFT%>w0sS5eBhRHidFfMy**TCyH3&!?er8%lp#~mVxrA(e(%z@ z9adlceILutOV}VOc*wAhxhGp@-#w(SWu3NI_oCZQ_(^vCAs4*z(=Y5*Yk5rGjk-2f zHle2G{(MEb#=Q4}DNlADa+LS^|JkRIf>kNv-Td?${NkJ6;#>PGnHJuS|Ev?=1-DQ& zgJp`!d#|aS{Z!hYJ)}hU#SK?R=Wu*NT;eaQcSIE8j|a5LwXiE@o!fsk(PZ(a5tQNm z)A)QeH?{%DWEwqFA75=YW6GS`1Xiw;AE@B$%4lqQiY^{0=*co)Wc>d_==4MO zTeW)iYWfd>MwMKXW3gCA=jXyb@IxNl=^WuIY#g`_;tS{mC7!NM{H$wdbTco?BecRm zIamb^o>i54tT|#wJ!D5Ne!z2NC>V{D>>;>>eABt<8a>Tjb#hT+6&`JOFs#fSSbJ>y zg7oausp>S%5cd1rSE8g~RtM3nhyN_08XYP`V;IIdn9B=U{tNithUi*yMI zFvrNAeF?Spi??0T{?~D@Hpe+~NCexG>FlJr=bS%>+Wf3lb5Ll*c&)CVL(<4#pMvEl z<>4}cx0sEkYLF7`;H0y>J&XdZ{>f+)*3=%EZVn4h!gI!dj zur}vTsjVL=l}CEqj0E(JoMz5~|3lzP#j5Qbz7f>IBFL zWitEDirLC>>*3@?tyUVxjku zSYwvpfZ8-<2zEq+aerA0*H0=-7HKg>7)NT|`K}Y)10?gj7>2=aQ00ZXR=oBhfMF$2 z8z+6LMdy|wRIvqQnda7K z->IgG|Ye(gz02IwOR5vYo$PhS6vuh=n|O zChSXsFxLW?A5dl`t&~qGQzsQ$KOhlGb$y*5Ys^w>dX8 zUk|KhVJXy-jsl|Hk+3e)Y1|8?n}Lpw~tt*m~>X>>5* zGM(z?Bet$zO{t_QubBJoMYk$|Wh(wlWho|s+tIRJE6sOst6HI^&yNn^2r_bJneFyJ zJP+ape_})+#aZmB1hTWvu?Q-2)u~ke_0~R$Bf#%T(8+jd0 zYV)zEuMqvbY#Tx$p&Cehu4PAdu~q$>nOd4fE3z7YUAZOZ(d_!kfi*eItf{U{>yYIe z&M^vR%O*AVRh1T*;C(v-%OwF3Gdf1{&{8v)sag@XNvi7*4OXCI7X2F8e^w z)kDy?;34x_eQw7zgdN-7#kYJ1)2M3I6U$`vECP8Ti*;+sJYxLOvgk(#)I4Zk$6I)T zg~>1D8-`8}ahO(|dp(FW2N^d|Es~ejijM|pVEKm|!fDCw{aRG@;28f|_eMyHolb(L zpS$A*V&(xihp;dT#*<%_fkn8}%)a0)KjQ5g(&GDk%Id}+`fKuA?~ovqkRSy#zq5_U z_IuY2@{BH(x)y^;j`0E$IfC1kc9dL?c6F_dI_c=&)y(Y5Fy=Q}arPuTc%wHlXpSbw z@jYs(EwqmKbCRgxkMw1){tMXL1!k0Z(1D{U1RwuLP_}e-?t3G#^mUNxRJV-$C-ZF= z+g-Y;h2{42Uc#klN=^oo=n0@Ex*l*kGs?^FVTncvPZgvM%X$ zdBu;us#YHS>=2qn%c&}V%=^RnCb|i7#9%-!Hh2`@;pde>m7XF!dGyN%0ifytELMMa zENYzAKr=DQBiCX-JylVl*EgL*gH^xnFSKz@?fE?=w_WS)BdLjG8F1jHva-;#zn6%) zh_Q2x+vlc=wJ`g3m1yr%B39Hic`S3kg{P*oHi<_@yTua!?zWy2u4}PgGeb*cEhYsF zaaJHY?fR2r|DGISx*{f8Z;IeGn0i^>8PoSXMum3H(+ z3k#{lkqPogU}U_Ek7_i>W95bHLJrEmIuM_k>Gc=B(pJ*c4r(L8Mk^xM6yHU)p+1Fs zUR4%juD8?In<9EF*xL$R)jl5T*$h&YU-B^hLnjXz*x~|Y)er>4nHFdukZ^A-?GEp% zmpoJOj%4!wwmjxX*v#x}OdA%~!*4q9Am>S)cZ%_uhs_0M!eR)11Fj}00a~?|-70Jo z*0y4BDhlOCqjwFd8?IQE7F@!`=EV*}}gYEm~(h3{zuIE5A3kvXrBPJ6bm*}Uz{mjo+ zq`;sNnd(g-Oq4)~ac-T?m6)5K$!2?RNsKalb}592#Hh(+JB@a&6a6?5+e2Mn*zuITMlW3m|9 zVkTrer!7#)?Zb)Awu9b@_bYa>Z$-u=y~tc?0Pnjhsnb*pACH)Zqp6dqnTLP* zKw-yPQNfCUO#ME9;96-){?Cv93;1V5Q^M33xSWWgQ%9;HM*xOQ;MxJcDC4|e53=^- z@`8C{4RmI^yP*9XZ5DAbGY@;g@~JsvzU@6KZL42m`0;?#@Ore|EMA#y)7~iE?&N7w z&mG^+j92b|a_IFeljbh^YILN#s}aJu{Gd4AD3*36d+6wlq%sI1gG@nU^Wu!&5!ZF# zvnJ>nHpGMp7-!)<=qekW_>=4K8@rIy)pVZLzgL=q0WRis4Dw$%9F~TP9pi6VPHq1~ zAQikmHD5=fiVPp!~#8|w8|1AFW1rnl_vX8qcpEiL9^ zS>u4+%pUxU@55{GULfD=7q!$f)iT0hUotFqX>VOh!jBgknQsqc?Z9`#{#wf+`+6x> z3s*EjDm?h&Y`tBA0fGx$R!f;5@GX)x?hsf-T6XodM3#!3QYHrJ-T_8Y))}G~Y^zE=+o z4G)-VqfVb5wJnhU0nyAH)gexvQrJ>^>m!3r7xMHOh5T%(jl$;(7T>u621j$q>(6Mi z0KhqBWHSvE)E7Xi4FIM2*#dKrXq@ew@ba?iRmM6RwXRV?RPISNN2wTPy|M7ZK&;^RzOXEd7g^S_?23% zJRq8Q;jswC;n;IN0s@mOUMe!LYK+*ip8lGs{x8}V7H+^&0KU6InghTU}LW^$OINkP0yYZK5m+qKgp#<=HP3~Ef%RzXyb*M3&kIm60RJ_5aMm$aVgOt z`wOn`M1q-;IUgrz5+!IlZSF=nka#3R97BHN} zkRUl(iArGOnWN+W-;YxrP$Jp0jThoq)gX+;mQNyEL-M7bh8S&w) zEN$Smm88Kdt|v|GS+J0~-&9pcoaPFr?Q2hdE4U zVv9@HR;#)vEgvM{lNW#e7xuO~E|bg$8i;9@u_LOrX=C~p{L^kvnZ)O&veA*86BNLY zt@XIYEmEapv(lI((@VjKI9l6ez$_vCt9UK90i|WzfrnQ3SAF!59vNH zpKC*l1$h5jF~SULMfJyJX!U!~svw@Q%$keNO52U!Sp=qSQ65~Qk)z#V*2UX}hFN(U zZnPg~oyxKHt|{!HYLg9IBl(h$_aG9>eSMxUf6j~FApx)%Xi&py!pNBGmd|c5j_!o8 zVlB+=-6#Qvr?Q1rxg)Dg9~qq|#&4=ld-7<*Aj5VIEBdrCU1^S$ARPqh9tK>H1BX#H zl;KxhuQv41>ikc5ip+>W43oHrgW!^%jZY$Uou7v7;KHl&sczIHOQmF~U*ycl3Hgr7 z?mvWM*E$9!B0`UV+4{=F2FJ#2&+T~T2`Z!Yq!#+)VQ{rF;Oy?oC}g%s z7R41NP}t(zu4@=7nupyChdEkHPFs@JReoI>eSdj)XlRWZ2E3m7`2YU5SB ztG)@8zdhN0EFJilUYPnq};H4z1*$3mS3{{SWCY^XR(_fm;HwH8RXeNo{-`9@g zDW|e9#+ZAVOhaHa4U}>t94l>y4yh5iMQ>s{rV(m=*Pr`s-xlJ})4D4kd^9N!RxG7J zTE|VgRPIU9^%xn#T{}TrOUi63Z?(A4a?sAn+m-y~B z5&hYpR}q)pXi{%lEQ{YjgZA}v!5MMCdhy-uVYLhOVF1;CnF!VWdF&Cz5w9# zPWrLpz=hhmB35@StQ;&MgQ7GL-JS_zA&(5tEAV|(pYT}ZzT*GW1t$O=G~v5_Bw`_yKo}rrgok+OPi$0mNp+S(uQ@wk>_iGZ42+X`KF?xM zWg~I)U~3w^uZNXrxMK&Jf*naB1LqQ}>eXCo;WSH-63m@5eKQ`J{gCg&_d`{r zc~4FIM7G#X>Rcp?yw7e_`npG7}6}1rk`F@C*n=g^9dufCpow@vuM^4U;mv)OOJ;? zciDy#bFo$|+bZrbS4PF<1d~US-Re{canE)SoM6CVq#Ie(GLH8vRiBY(!PXdw(L=C{ z;w<>Ou$L)qj=OTw*%g{Hla_S%XXKbj5YgV!-ledoV*f{@$?STYlp%GjTa_p_z|Cic zG?@!fV;X;dsOC-H)e)I3a_nR|QG+ojMW)qeabQBn5g0~f!UeFawT3>mIz)YooLl=3 z0i*15oX+FC8>M9>Je(B6Il1^JfwiR=PRVM_Y^pA{yzA4g^}d|v6ay58yLs;G`VmXf zlJTRg=ID6e03x< zpK>m!1E*ne3M>R7RcrHLO0aN}Smq(!sV@&!&S~?Ieaskm|7ujQ*h9sf%&Y(znt2_X z@N;e8rN;XhQ;NB3od>R%GJaH+SQULk(n~gg;pQp__V_&uOXZVN~72NhDVxEv7nZ-&PG{2AhbW+zzJm5 z`QaB!eO+atfnrha`v}@xh`+^+*kTOIwL6hktA1j?PyjFR{IqeDYGE8AFVQbz=PYe> zbROHaPxeZtREZ|wGru+dCT%pNuA>lA7LOiRIeS(b!(CAXQwVmZTb}8rDa!lX^6lr& zc$_S7@QpCj+ET$gT@pP38B+i-(rMY`byCG|t^8%J;CO+wGYTPTAb!`tdnNB~WdRr- zzi8Ymce}RF#cJ&9|J_BN-tpVsxuBl9LIolwi}AC>%`_Q0p0Fvij5i2EGAqCPRLZpVzq0* za6!`$#XRUfr8d(dQ^wY0k>a99n+1NjwPwmElN)>6v|>Yu_Wnc2CWt{5`46G1 z<=VqXl=sxn;^xz4?KFIPfSNat@)Nboj&SZk|5hFD_%f{t*6g`j%0GMScq!1YjW|&p z1DK3VuCA-2ro!j-Sq|O+)NA$$&*oJh+7d%3D!u=yW2Zd$?7FLxF~vmQk3 zn-JyaOaE31^2Ur1X?keQMU<6Nh+|30z{tzPQ|?HL<0Ua-TNlaTW7;CIw@&0&jnI#s z(O2)#`*{O2?&DjA#ha~`LyDjMFDQTg4TK8(%X;n_np^bWgulg>8q>r7Osltd>C-AORW%`<3;=kly7$rA z>pg3ibqkqi3}8n?p?8oWYAFjH-PBDy3;MlhUr?6@cD%4y1(`WAe{2yI_k1&8sRFq) z>xumGx<7bh)OQkFzPK0XR0k~M;AHr-RMcBD=+h3K2PCiXC;7g%`|$O7v~cQ5d*vO8&j08LS!W&yw>M>OQ5J4L7BOG~)v2*q4Jh z3c=a|I%0GbDneu_=Cm_$1Ff%v#%7PJMVme@Z_3pmA=F16PS| zD2+945GRBC<+_>W042)nBDjuAa^w~!y1u%1oHSd>_UN#JPwaDTr|o$guWerotOnOig8kTK_!HZBl9{)UQ={=hI7%7;4a$FZq2?&q<9b5clCQcswEu@!~jZTRT zMCZIcy^JKe?k9o^yrMG`Aoz=3J)ng@e zIm)_RwFf+?VHLfYMK#Rv-;coZwL9W%Wqf??$plZ4-(sum|E<>9jaIDUDAsQ}ZhUO# zzCB6VVfE3@njbyV?k(+rNpdT&&2FWNR1LtE6c(|Suho_jxbepnk$7QtbyR)OwS1xL zQP81Gz>Xqs2px?ykof)3*BYaM_=RV(iaX%>-l61El&+bm*Jrit^UdHc?c(3}9>SIm zpkxso`l-M8>g9A>D9yv+@OVvVV{-x1Ev>vYxVXDGNNEm_)-q&^4XkCCIW&OO6wzP8 zV&cHHt!u3y(9i4)!Zx_7i1NuK#q#9WUq;kjLb+9!PF7tS4hCq%lEPgImaeoDE!l{f zyZR8Iz`go<*-~PPoQwq)?en0A+@;Z^QV2DzQ} zyE<0D7$S|hJi!HTLf6%G5)bWIT!&-0!iW^re@$E?G=2UxMno^T9W#QgfOfq%f&o{bS=yls^wP9wx;79t}Jjys>(g$21wf7RU$cXR_fCf%8jFM-tw^a|cc z;-OIaNtiV?pOjBs99!zDtX|*O>_gomQq34AL#}jegO-0M%QqHFLq2|uIftu4^+AV< zLU)sVoP>EN69I2vvWT8rYq}ZQh#T*>DbgtYBA8j=1^Fz5wtgdnB~IPA%mjsjd~;VH zs{F|?bBqU*ku-8*Kah~kYSR6V8NN5A#bWV|CN3i||Gzj9lY?g}KpWjG9w$}IU&5cA z4Emn3W;ZI<+ ztMMqwd%<)F9HzsWzm4>8oux8z$RohO{HY^|zq~;Fmh=Dj9>RpK7-N+g?~BFq}9`n!_C~52ut#cLlqvvn6pi_^ztzDr5SPL3Kvs*2J8f z*%yw=wI<9W!de#blN*`|G5agKH<21n9S zrqp#>nyk+s6|jMRbM~!dO-1OYs6SamX<}FAw&*pNC}X**ssiXdQC5|zS$rFQLce>b zoy`B_!ICgcdpW_;=p@_4+N%NawxbaBM?^3$St%QBVwGX5RFoC{6gLuB&?9a4pSOLH z7j+q?{d|n&2XAUuPi0Wl1zue-y^QEec{OC?%FeTR`{o$4HxtgJEz|OaWR6dR%{AH# z$mPbl2fpXHQs0y{{8*`O9%1=Wq3i%6*?E853->)~V9e_EJ=KYQgN%JqFD_>Lo;rF4 zzSGY*)HOm`)fmxv%5vacJ%Bfk!b>({3j`Y4T7;dGm4zUq}?q#M_NRy-9sRTfK(a_lP)8Q~#s!V&$mZhfe3GsRY z#%3;Gvf_cFl>+14$e$*(^jZHF&D=??`gKpKjLJj^XLAW?6Z3BhhJKPtPyJV)kS^@^ z)8gncXzLA@2j8e?6=njK-<;Ti#!*>{pmtiWvxWZERaIO>c$>J))`CsWROI@yL!OG# z9U@Iavx5YM7-6&Yt*lvZ71QllR#aa zqo}whQajUuB_N^5{r+-3WBK%}0JzrCztX|UkZ|u>f32&zG9h3u+Lu_4I@j!BffZ_n{k-cyq4-r#rl%u zq2cDe!n>UF&ekr+CX8V+meq!?CskMC3Skq_g_B=j7&19Ze(JCg8qJE}$;t$%F!7Sf$*nuEQ2 zcDN$Tf3*9m)subB$IgEADi17we9TRE;$WfFc3HKKrtMs&(y(!hJrF@V)YsO)(U`e| zco0iF2Znkv6m#rP1}~zjKYA}#F;2fJS60p|tu^~u3a50`?H>=`guE(_Rrrw^9o97C zU>5wDD9}bB9{zs08#%4Fm^j>!%2mOa?o=SEF=QPZQtC!h*Ua5vJ94$IHBDk++)#Z$ zpY+jiz#5Ony)91K?m9H7+mf{KZL@u?HJ~zlJieH^?nwY1i|~TmB=m{Z9r`yd!biJS z)9L)Tvh{NX9?1+vwf`A>iuB4Y^dTWz7$!NK`e)MrxcH?&zor2qK2oi`PJ#M==z8m~ zwjU@=6NlpNR@}9?L-7K|-L1F=cZ$1vDeg`P?ruecB)AnV4n_Li%$zg3vwLR$g8UG> z_x-&0c}zqX3L>c<#uX`HeJT+q#Vh7xEp_Y-q=xDcRlEcRuykmRXMN8n_lvW#xi88< zsPj=zG~POm7KhRu2~dQcK885YTP$gQk7zFqQ0T0l4y|YBWUSH7C~M!jk~I9O(+vD$ z;a1dSQlvM#*(SEts1#W@(ZwrfPhm7@8$0pFEs6_}1a(iN4gHXM|| zwp-qWrF-=#ah8$*-Mi}k%c=-=x}^E^zdkb!75aKe_njela`+u~pm0=2Dr2Ydi-^sB>5EC;ta0xsfN9y!n|;$&${=RIVT~ zq_(jpgJlWo@*W2@sJ|Ypcb$FILcSh3l2WsL=u7gt5fN*GXt>N{7Kq56&3ws*!uhc$`FccAmWBF#=aQUkLs6f1^0v>rqI@osyfeJI z5Qkt^Z_@kK^?WtveZY%Ft-bPEIWV?jHx$NF<2GF^pHwA2aShFQlWw0rji_}+8ZYBEzFuUlwZ4(H$sa8*T^9(lnl-C(80dEl9fkb&Z zvuF5ii6g=5)Lf~Htft=_eWs>-E~(=ox$L%O4mMUawmHJw8^H%e10Ddb@kG-$TX1_;&h8^0W#?co!mbVFZ6bzMcfCkj21`C4sjP|__?L7u?&-@AD zkf*wK9fL*KE+S|C1lDIvo+#;Nz$wtO+>Q4Uo=0Z&Fs#M0l>j3h;Rrn40ybs`p!jE3 zJPGID9)Cw&<_Uv|qf-QbRVr9}snj>lhVZ|H5i@O~ z&7ahf9|i56%4cXEZK-wS%63~A1}my&+*uI6HN%Jj=iLD%`s3(K_e*el-q-GGFI~?% z68L)^>I!n8X!%THrNKm%rw~_?0}a~0;tiP1 z#8_@QaWJS)hYdPDx3dT))|;bpJ177b{vlOu0-MO}JFKWY7zJ5beiHWV(`h-j0zZU~ zR?1G!*)hjS0@^F6LuR@mnAM-*!OAUz(WlXNW7fEu93qYAQRS5U)yKnO7-KGE!@VpXUw zFN~jKi<*9hgcIerr!99hYd`6pbc>T@LXYVSdMe3TFlPS(J1YM3{eg^`oP8pK%MbDPGK1 zdUVjLGb&qxp>3;5ucIyTw5#g`|31sM@|u$QEuZLIG-`@ys;fPQmPcy5?%ZGW?3tnE zriGGRz{kWyw^YGhVLh1D(6Q@y_Ovx!e%|6QSaWHbB+tMs9cLKWH6}1tCffg(yw@cf zwMZ`!3~BA6mVOBnev4QmInZUWdTRAdW7VucH#!S>=+tV&*wEjgzz_V*5yq=sUM;vc z-=@3o*71CQj24jpvp@ZVAT^TT>H#s|t3ROL=JQxa9?Do(yrE5>PriQ+7c*kDI}J=c zBkzsZ+?Px_RVIHPNHC~EYU55^L(1_|o^apSipgy$pUIh^7?(4=P5C>CAAh~!j}3{A%Wt5I{1kIk)X6oN2VAY}RsDokyN-G}l`8ZVV%3>QR zSISScPOp&E2mByf2M=IJ7}*_*xUq<@rc;XxE81Vj?wm|PzzBCUAZ0n4$d|9h5ZX^w zpRE;^6L>aB6J@#nyBeI|R@S!hSsnCNA;0WoF)`mV3DNv{)wfCub4*~24(Xt<@MsAm zKCbFIA3U(NF@M-2P%{1Cj*TMcEMnBdK`qAWnPgbHWkHBvUO*9?rH@#Y6Syp!#M?XZO=&!k||Mzl|Y;aEX&Pycko z)$+Bmz{%j5kT@=vB}h2Z=z%lY{Q2VM+jH(coCKqic*;%H$_-;*(_?pY3(x3|GU*Qa z8iQ9b@#hGP1iWaehw?Q2*<57|b3-@}aw#cb&EzyqeV|S4_D6{ygYtwLm`Y3rgmh$|l5F6Mei0M}t5hrQy}HfAvP}L8Ba#0_ z>HL2te?k;0qLs3+>EYRO6I?$$X+I6me~XXm2dvvZaX5B6Z=-`{i$4FVuMz)k-uk?% zK-f|1>b8u!4{xZ>TLUB8?qTEXZ}r^QjzuFSmqB26rXNoejxWf;{!XIL^t3lbF=tEG zF!|gSuc)cPx+PwhQYBf+)UWU=FypJ&Q*fj;bnl_VMy5Od@cZ8(se~JhoB4)7DiaCp zzTm5FTk0S;u_}jx#VuC!@~kY6&TDbSr~oa!g`z%;7SHpyq|uGX?cdwI8ZW`ip@*t) z8gzO7U}J#z{S$Fh#S!@>@e^pW%pV{Z;YvU#Z0kyL=wuLpKPA4h3HkK7el$SCMM3GG ztW=E?Rv(V|REyLx?rj)~l@58Ne|VOyKT2}YW$Qo{x007NW5Q?dk=(|3ACXQ0A+sIK zmlAq**abz<2cindet_uvgzYEKSn2lzn{0&#dQ#G`zJW{eH?~gu(1vBm9hcyZP{-CQ zNJ)=%{qk@>#3bleihQPQ$0C8WR_v#BV5Z}dAcmav5G7VyG zV_nho%nhW+1Q#)Y37^F1|!)*g6$kFDt>wU6#2lyh(A z*psOAs@Axln9P#3sl{k|E6(3z1J4dq6?5y8YH1Z3kdgKc^zvyCJ(K(qtV z^yM7_?oqUe1-B+$whN=3D@Zq$BFr5Lhdf(`qS75D;sth}o3LlF@2IM!G#8cqt0jcRmqpS!2o(-%`T1>tIpnDFXz z#yatv6}tsAuQ$In9h;5R--BT|MD(vlCCZNa(opHn8U*Ff>k&Vp*up2{iPf6~=L|-( zBQl^p$}T-}j_lSp1W(#nOiYU1u`Nb zOwRa1oUncA>TAbj6Fw%oSz|a9rsqhNPLeuX{+bqpR*@g{(;!_O=Hjl~dYw9zQis$c z>0^KJu^BdQotfZDy{HAJ*G!bd%7OaWt|gImm(MH|){CiVD`_n6K7x4RRP*#RCiT{| z*l|?3pJ*<~FW4#AJZoB*1yUH(1+!B%Sw6WP7|s?+u+Gk>NJn`M6sx1O)Up69~biSDjdzKBX_a4L5O`yUZ(F z73SE>Uo9c&jMJk!jmchRO2;e9fzRg@q)FSK+e~08&zDo1+6lGG4U=?u!(cJ99e%%+ zWu|l=lOQx`>uPC7-e@YS{RSie|ya(t;WhVUe78lI7w3BAZBH-WfJ!0ylb(OpbV$#D{*ET3C*4 zTG4DgUS~HH_rTcxM>0tso{tcWuPxzexxjCXTklEfScNvy#C&Kct3$<^^VnxseG2(z zz)zsefXRdDuGbMFSZ9-wAtBWFd+mJRiZl;z#BhdEL2$UDfuqk9)=Hn@Xt$Dpq4$#p zy4$i3FFL`!77YcT^SyUHBuPflS5!ni_r4{CuH;&9@ea2xZgxa3W|5cE#3Z#Un} zoI4q#Eq2+7{6!zRzqm?cR11w---AIS7pf>)vz{+WXW!;#YiyKPkESE_i_mCMF%fE- z#n0`F>?!CbJf7sET8J`}vpaY!S{8FfJ(%Kb8W(;>6!GO@yTy#R-~K#+ndkk!f98K_ zNSm3}?3HdHxH!DWr|3*y59+ASrrj!ps2|g_vj7`ArXMGw zl8h}2U-lp9&rlKAsSBy=6=VmvHKNPM;TWTCDeHJe1jO|TScvr2&V;b6lPQ1S&X}-3 zM;Yh{g@5=?k{gRqsU}v{2t%YTqoO}*tZE*v86U9J0}GX%h-Xq8Tu?mg>!0Z8Ie9&u zyE5L`X6XygkNnq@_co-LEt4SAnP&9Rt?CF*9vKU-mKt4-HQQAuw9&M(&q|VX@e5NS zKu0Bw*;vj-6pO-?@Y?HPlXGe$T8nc#U3-G~seIbTtDdQzJ=z-TO{!e&cx4;BHh{9QXrmTD8I3L4s~%(nEmLV5+fy!scwT z06$+F+rm=qR{wTP)tZW-rG*}TxW&%*+#p*X18wsSn`wQsj#n{;LC54%4u+*SrTBS> zBH09!(&h{=nU#~+(2@k(MYd*pB6kSkHbz?;9bp@a2&G0bn>d}G^HGM~3c9uPx+f(| zONQF7a)44TNnKVi+qaoJI=z(_8oW|O ztLOHSevS|6%?v(oCy3@<+>eq1G|8iy84gi|y(-L9w{+?vetr2Mp^?3dpg}FHQz%oO zdCNDvOkV&S^*vFGbedJAbn;X)zlHT6c)W5dj5)EE`ud_DIsY^ov{RZcY1GDqZ2IhI z79I69EYxxt{@S_*+OF589u>uQK-41Qm{Jwy^KHD+S$9eD>ZK6Gtg|QgpIq-DIWGOn zm1r=kO4z|oW7hfB4=3MC^VuT?^fPYG@<~C!@|nzZ|I*s*KL(rc3I_anBBHw?@pY|V z9s}*w44W9z&-B259kkTtU_VKklr*7Mo&~h8HE3;s$h7HgtAqyp?Yq_)5uV$Uj&^zt zyd)Rqmf^L!zd47p5W!Bq(*rO%xN;j+l1k%Aag^$(1=*+WWOSJq7wz1TZSRV97t0b8esuH%WLJ+9q>%KVr_Q@lQ+YQm3Y#C;+^P+y+(;7Lyi-@zz{0M zE@w`bx?PTJ(afmbE_J%!fmhIFl9KcJbmonym~9weTv2%@&j<24F@d=-^UBq!hmGHX zqVFfVdU_g5#ckVDTaTv62c1u*ZE{fGFQtU35sR`Uv_HMmHS`J0{)2N{9iqv8ZGxQ} z)3@qRr_+nBz4pR%qZrW44D?0xvd3XPf(_sO-~Q@%_SNi&A=L&pZvB*2O6k57Epat^u6kd+eU$)qKTJy|NsPHwlFepQ z75hZqzqUqbyAW6q#ZE$Pg5AlJW8cr}D z1=Qa?yh1^~ogk^xC*DeZwh4m!6(Bv!->o8_ijp#l#yQITV$kd&`;Tg6L2CUyUGvey zm3)luVi(#J0GS@yG>FY*7N=dWh*^%ZOxrm?0~}=nn#YPSc-Q^K(w!HLqfsenGdx=_ zpEG>#`k9Pl(px=0`kN<1vd?(cphg^7kJ&GOJS4=Avv%M;R{?!%c@@4qG%`#cc;Hyx;zy~s1olr zu?HP^Q2hY!o=2%*(4U5a2;`XCeXKs(CQims8N^YfWQ9aR1cqq1`vUS#ofbU*-)|?Z za;4hyXtuWXnACnH27pShhrv#6>v^^J**@iIf4dReaehr{Zli`$^ghB4XjM+$P3Y5k z|AP~{Y!Y}8QgnP&uOe1!a{NQDH}%drEl|19eVU4w-`er9F5aW2BSmQ7vS53wdqqHD zAkl(zUl_ca_({VF`jke*N9B(cmzmTJYpVW9CW7VWj;^obd>G;7H-kpo3f=5&1*O7N%bTf_ zWPJ<^(&KB0#j%aROA+JhzfWDEZi0+|C|wYhJ?Mgm9riB8o{&%P zIiByfG5|fg?ONVJ%e$KSuI=<>U`xprw+)O)tPGRA?9@Oyc+p-maS)5zMtIHq9E$vv z_nxTA0K|Jgv&cob^N3MT8>X;N+FzM&)m9*$k#|-sZcY@1{bXxg6D8gGJxS#~ew!kM zG|HQNRT9z%j)Y(mc+>o2XbW-mwB9bXbM$y>VpbFJLmym{y0hXV5!L5{z~E6AcMaXP z6IhB}lT%+!0*3;-z(}DHovJ5#xgkb(`+0KAHpEcn+l#)b8HW{1>j8TtZ&X|Eyk>Sl zm--)^A0cc5E?VeXe=C&LzRYSlkZW zg3xg0q{M$XeBe?@H-vIXf8 zeEwrUeX=lt+E;C3n{|%H?l?y2u8AVAWzwC%Ko#m62{7yG?z5yQ!can#5KQd6EK|pdj5+&z7`W`TQud+ zsppB2lE0dL7un~)=28VrB!GuIWFysP$(xo`sEWc$c^DkBaO zWPBKg%~&vAfBZ95521W^dBbUq74qc3UF}MG)Ax>6gK{_(3mVEG$4}mRiO;!KwXUw* zcgCV=vFz@DQ6%K>D#4#r5q|Nve3flI6Rx2W9A2%tFYKJKxtOZ9*o6O84f?oe=&$8n zUp3~|Rm2iKxPLOgL+(f)8Pye|tIG3wlI&Z@r)XYz44`L_F<-$*R(R`NG;+6lH!+u( zKIS6PItjEL2Ab^UUglTW*09$$R*me9m->HqT#di&D9;+L@rbISRGv9wH74)~Oh|xK zjXvw?RXH6u$BtGhuLS&=c>W*E`SxsGI@2L7=>ua8RP5=OM3s6Sw!NH*`34ixi@FXx zvus{mml}11w^NZfA2}atkG&cJ~H~R9|D3%U6hIDb7t`!noe5Z_VxU z@s&!E`0yPF%~1Y6r|I-rMyP}E-inCkZkEXkKN7*?TT=dgbO!HAh38lEH{!{2ma810%HzAHcp^B^{v zCI|kN%b~S*N$FBCkEG7I`>n*BzaDY*Q0Mo^Vo7gv9?*Yq1_qO{XTQRJi3$~>Yq4^> zcT;nIK1h`mFpgHyHEW$3b4S>-^a!*H8dKbNOwXY~=<9O7NCqI!{|7e?^otXDwL4l( zS5WYbbK0RM%FZ_wQq|q4jkLAmp1xmUsNMVsz{h(^HXjC(iqy&XZqR62=Wu>e@Qzc^ zx2kxXVo&J!q85uN{%x`L(P>|uXE8@R((Zpa?g)h#%Ct-);YhM&%NAA%d>np%COAvQ zS~+p%c3fT<^9rS>P17#26as+HM=!@qg_J^(r9hAu|703#!!dOk^&(VXbm5bfKV z#-5OPlB&&`euW&`2hL=_YH`W@`Z>>y-1RWP=3F>p*z^Ng_W*$)=JysPyd}RqHBuFw zR*yPHJ3r-c5OX*}aSo=S@-^O zzFerKgW<3K=j@YgaQh22`p$!L^&};Qh0?1y+krLC8F%jBHjK{hj@O{#EKoSZHD6MqK;8y)j&+qJBCuB_K{Rm!KP+X4PZAIv3{tM2r zj~9k)azkvNQ(d~D|BO;SRyrnrH*k&ZyMx+V-)r8a*2ls~kTa7%#?r_%D9)LO0j}NNgG5oF1XEjX^0YX91WIHGsW8&(s@)IxRWV~qY0CL z!YK^Qd33Vw^!GK5@M!)aYxwAi6==ttN?JACOSL^^EHHF=`jp(+p?P<8+HzI&?-xAj1dDOrV?ZAT5$xh{}hxN|dhOu4!t?AuHn=JOZ71FEkC|#lAGtPB|E4XUm z{E4XbU_DvzSN9zJhpwK9+c-kp=^%M;fQH=M&c&9O$;xHrzDR2NUa4>#0WqAV52EM^ zu3z~w^l=o`gfD<=hoc2r!eHWv(%!UBMZ7LB|M<kGUkq4k%=i z`-Ny$D>{kE zl={wvl~?x2hHQjc88xX%ozsz#0#9i{*oB)S17MkTy9$e(gpAvLN_I3#1E^MyVXN&Gmlnl1kVQIx`*~jUmwYfwvF!Ll+4{7Q-=={C^OIk`z5OTLJo#~4LHY1F`g%ZK#DUhE@zqH zS{r~MJ#-vQyZvlD-Cl3GvbOEqQBb5gMU|P5&eL+t?s!S&{bkoJ_@@CLIny!f&~65z z_53sWx!G#h_?CwC1Pn^<_!_Q6!h3WRMHXBal7yGsT8CFtYcWb3EYM5szQDLX7s zuwp0v>PC=X(Pn1Q{3>b{B0CAMjnzuuXyoD}Q_$`cb3tFVV}jT;aBghMpCb@%MsBxnfNGpDZK_hN&`X->SH+_ zIKSIVCAHPd)QE*ZlMMbDx@jue^?`Sb8(Vx)YEyJClfgn1@7vD~$r7#qejwBB_9UrK zOj??_I8)(^Nt`%k3nnJna`AeH~BziUqC^Shkd@I3vUO#Mu~`e@m9i zvm;qhBv%T1-aYF$U+OqbmrjF)O{{o^+nZSb| zlkHz}hEnsZ^bVTw4cB*#DN2gTDQna7XyFuU2{khD4R<0(p9{ZH{rlQLQ$?(7=B zHkarKfh65%l<+H4E?GQD1hwjTMQ*PoO(^KYcG33DCxgr$mp`LZBgc@V9D zOH#LD(K@RCbanq^SLxC0P3QE|_$LosyRF;(irMyf!&68xib0@IC>zatqbH&DvWHhv zQtNF)X!5+<)w^*Wf!V|km3&XgrTm|Ns_Vw$F4}K_R8m)>=1(CC^#v}Q$owuscqoJX zqkD?u>tM;KwBP35zdI;W25YEM?H(vu;czLcxDgG4eT=D-2Ygop-d5>U)L?5HhhKv2 zYJD=GKcmT?)D2CA7iEYwtG>>8P@ef?b-CIUS>W?ehJst0eVo#> zkbfg9g6+)N ztqxOZPq&Qd!iW@nJXp~(kxF?zpBgtkRZoU)-HdPGwXfh)KB=?+5J?a)$JTB)4Y%SB z?Co4_B8^txshcutLOQ~}fqD&s*_P}>rZ>+tO)9N_u1BCSN1f|Nra1LPw?y)lSfKBE z(jGeKqx1x9WedE+tKnwKCHow!hv?+lHkkn0fs6?0VO^tkYIZNXJ0P`+8LP2iPrl+D z9+CVc*$hW$J$T%PVH3)aP@(oHg}_~*gmC=4mt}N#vT@34L)}=GgM(Kw10VE63`e|Z_!P+jMB3>pP z3oS6ZyFm7ns4jQT;50C+^%u6^ZS5kvUnU(qh9lEN?aqAC6ssA56h3~5&x1O`{y`Yo zYC{L_26(6LIg%R;FM@!xC?Ba03oa131QKwaIdAT&n;o}-6!b#<_Q<2?`9%GO8@Q<^ z-unu|mU@+eUM2S03TTvAF*M`}+CE-i;A%P48QuoTMbZ};T6N*=?DVJ9sfl_HUh!R%rk2fm1^i=e3n&?PWxYimDi0=?_=&im@0V@@IFY*@O4 zYD>!*%S`cC&mL9YpuI1SCt(HYK3VAIK%U3(&0iJ$yK?P2(*3%z@8rbbRNJ}uS< z#1>KM<_SzTeK}L$!~D1r-!E^caeijReYUDd!MdX)A%4DyT9WXQACyj?LYQ8&2HkPv^ zA}vT)vfzU9%%|(L-H1{MGql{VWI3?`n+MqM8hxg~jo6ht)(C`2ai;T}?0j$K`-C_L z+G)w0HFAKh$AuosBE?GNFwMa|O{R@Hc_*wwtd*qB^LPvC{!(Q!3TxB4&p>g|Rlv#` zzYP4x1F<|l#_q5FTrM{PowW-G4`RkKCF-%D^lUq{;o&t)R=z%v_Ug$X?DZg8 z_4S--iBMRLC9X z^XjdzQk`IaNEb@9aFom$^}Y3tsWn!(Oalu~08A9jLLU ztTvBI0%Xt7`P@iiTN3U?K1Lz?z}osqOYL2NFR!f~pX9B-qc6=6V5wRAOwrJzm#m?G znLO3?$MnEqV{aqIWrk%-+#)(2K{_2q9{^zn)oR7{l0X9s01qHr!}WLT%^tfMpwAY_ zWqq7((}mukB+*@$_{Hgr5q1BMuN`EyK=;f4p~~^UwK|X~E~95cff-JH;X)J+^5yZ; zWJ zufiv8*T?Ns_Og=8txd^1I*YGolxUVoe*7jh+I4+v?CkgAp`I6}GeB2#mHNsj{HDpZ z3DL8reZYXCc|g9^SP%8SVf>`*6^d=YK57xC?lTSFJ&@8^+h&3=_6D!?T@CTAUY$fc ztYMh>{fB?zq+=a_V84RW*COLNd~CWBYDI(xDz;1LD~buw9fuXm|7} zd3)Zr1wc8hk2M`~-c+0tG?TFFm}qR4CE3p-lS|Q?Z~FZ-%@FGgzKXY)N$7udo?@b( z-Y;tn_?h_)Ab9QbSL=54h9Eo(E1J^1vtD2q78EOO4y+K6Ts9B-OZR_VbWl-y1Nqy1 z$p&;ugJaxhVS3tS&(QjyrvKpF8-369R<>LhkHzYP|AT9fHoJr&_Pj1Zpz}vnAB^V; zNMWxx`Rxt_Sh5NFa-g~qND`nBvL&uvaK=l_N(=h8=LRcCgDU{y10Ih}9_!N*bQkp# zDoWl7?r*a)jaj|9-;R~HUgt+iK?PR2ErRD09O!GGZO$GC02hqyA#E-vgPHwAGG{*h zyHG+?eukMRnU)tcAi8%)|KT};d>iG3EBB!TgBXvmT2I5=*jxc(lt?nu{x1s7hh0x< zK!vrqYGS^E?6d7OkPiKcA}YppDZFvxqu}6;00nMH=u_iAwLkvb!PqayA~zWsDS zBkS9gbQi;<|pX?VDFyJjexL=2y{-mp@*D21S z2z9PT>)}Fn74iHx9=5seG7HIFdA}l=#0C_I6VXF2w6M1zhxvAry+vZ*;6@A95%>{$ z8=dE$m0pDGFU5kZY-3y#&71;$eSEzYUYQLMnCr6rEcU%wZSz=;Iu6ODnzAX$cK80? z?)P6s?`&jGonlj$iezc>>eqPtT}OGwUz%`fmQiy_s?=AdKDkXw-PcH#UWO99Vt58H zOgdPohvgu&F?Bs3P~V>PUTpuzblPw4@)c`*w=ax$d{cfdGg}bOZ%ySjkbh?DDJ0%H z^9}pu-+JI+?~iso7d&@94Z8K6SRlY`ZLCP1e+GOYpKDWL9eEU!=d7WzQy8*kdN%VIa&p;H9|L;TBT;Bmu;G|3w@k_|)RdaE zquHW*c|oG!+M&2_MFStC>@Z8Q#nDN5*g0HDK(-Fa&AW1tQi+jF*)5}DNsWMGeq=9? zH+0+kf39X2iY7dmXhRHbzE+J7Kj?muoY>dp_DIoI74n9X5k9a6Mu^Xt0nvU5$~j#r ztwv1sXWX9wkij1PFqh44!d%gBiH8nIDH`^zXBh?Wg1Uiuc>VRK9x~5=M{XMwU-(FK z3s_gYclI2E`QG)kxqGseCPOyp+wgq8X#y$xt+m6O8mF~=*L~Ad%v;iMSL&%Cd*y=7Fhi0f+(Z2F4reiiVI+}M|C^528X&m zN&bK`k3I97B$0^JS;vUkuqP=~J%igg7Iv}ZjygrNSxO!{1g+?E?imKxR_*4OL^WVTK$?bFxdVc7To zs~gGBhG+C!Z^`TW#K>R#A-;KVZ)vnpexN_rRKntWi__A@9?X3N(QD+f2Q_6Hc18^9 z?y(igj-rrlx0Ow;2AmR6*hxkuI9jO9{c)2bH?>*oXnS#o4iTnp%O;jv#_)){83DBv zsT2!ZJOP&#vGx(<7?$ZhY0NQUQ_Lmmr#_R!X7Kc= zcg^Ts>5$u*!$q9>fs8B<$w*3+3P(=&b42xyj*SPY(4tZ6Z0>n47_;(2<xE3@e|jX>+*+Nl^1@Z)X?FduK;UMYIMxEW6N6p9w0QM02$&=Jluv z{bYYs9on;UNM29uX?}BD@8z6cB(v*8!bTPQ4^9-~nf$4&Vs_pTL3ozJcw|&7PMn~B zPCkxGR4y`>yf=n?{@Och%wRCi{L2PW*R`OqZthTye5fJkbc+ID6yDuYTia|8q>oas zu5{j|852#kS~g}jWw_AU@4S&Agkal6{mN{-X-wq-CfU3&IftVd`?T;s zJ72surl@8%{uy|!6cK?d*3<8H@^9@VJs9Q((I$>-db5w>j9skyU*y!SkB~g->)Sw9 z2VcmRzQ`nFxt2_4<(TJk8wv_?%-a^SS&0(G z-%WQ7>H?d`fjhq@j#iGruW)J5J2vE102HWS0;K5$#d{?`HI}s82i9YLO1$i9OjqhBP}EIb`xo-2Lcl!!xNn29og({ei2%7lB-c z)FR7>gLueA^}6nCk=lTBFtQ=~^e7K=gmE3V_<2FcguKCQLFx$cD%Zuoh_idr`^LIA zFbsIb9g|nry`wa|x#%-!dL)FeG{I!@K{O=(RHuxYYjd;F(ZfE&6>HMhipO`zEp(W- zv3Ba4Kj*TO-8_~ujZaDto-r*-Y6wy1QO(#u<+})<5ONv$Ub{6S56QF6i^tE98wjxh zpPdz!w>XZE^y!mQYlsm+4Oo#@Vl7;g)f=r+2_jr&9VNT z)fYEAsi~@~rv3Q!%c<@bxo3}oHRaY-GN;-d&Yu-~3~=T6ym~Vi4UMDzmzORbDie*J z4S!N;?i&IOC;o$D6jxO^wveBq#4dXy)p^ks;|^Z`VOYFUA{-`XgT8%|O;lX&ZT29c z^_GAHQ5-6xXD158DP7rLcxmrgHP7czW5b{=G`>!irWPoq(CxJf6%j1SaMl|)B$}sz z^`k_NG}~QkZ%W^izjIls$=L29wm^X!rnLa%%swKhu={2WKPEy43@*@42%2 z(0lcmrOaU>Eh+C}fj2*bS+{dpLnOuf6!H|Z{%`Al7Byu5kJH@$Hen-#?FZ&;yyrl9 zzHN_{xtHDgrWxAF4bP4GksoX=n$4+inLeKTNorq7PC)y5{uT89+Y!{*$s| zKk2>69M=5ZX_~KEK6@hS*W>V)Ji3T2*X+74wj5Tn*v$(G|%h(@OWMEG8MdEA)(bh>Op zs-^UDiSqI6Y4*v;d!X_jRFD={; z!%8<=aa512JURaA@n6=HCaQ75WW@M}dwtFNVm~v5SKH2|kj%lxm1U8YS28v{+)3JW zcc9aRRR+~cKL6EV1Q(yci`@SI?^5F~25NclgI2sNhh6%P5N^9@RIo6Qxl7?0fQ;-` zH-#y7TwVu2!!t-}zI{Ijj=msyIZ%H1Yq0j?-_GE<+316K$Bh_2jYdHFqr`@w0jO4w zf25>UWR0moTa%f+`<2m9pqHK21CUP;{_m$A&}@XO3Kg*a+T^AiT;F)s+3rcjG?IaH zV64xN^eA})y)0J0APC}`DNjM*8yN;7Nw_&bH4cA9G+o#W&GX;MEvwO%px%Lsk-_yu zhK?i+?ISC36ugGqboef{HN?TO@2dSZ%R_lpCS2&%qQ#)g;=DumWT26H(r@-Pt_TLN zvwV{uVeKZGO)bNnh!Y^jEN1#c^}}k@j1{kd2%9t75L~I`Ut^KuLQk>b*>62ngPbmw zRO)K&Ny^Y^s?K1H%k#ogNO(8{Ia0u?Jc#PTA^)A1D=;aNQ4s?rLGoW9KoR^p*4U7X zgn%?wMyjsG;RmUkIi+U6vqB_X*V zvaw-t|ItMoev#TX<>8j{JYIdn?gx&Di?}=nLq!_)NF;*B%{I9Tt6b1w%MC#~a-FiTq z;l|~I#SqmO@wI`}Tk9QLJq|B@=Y&~Nv%$0t<3!{0hQLVB#rCq4&(+LUIY(cQg-ntG z&Rn4P$+MrH80VP6ewSxpBuAU8O4ZT$2ccb!nA^q=R1AlK89hV5q+N8I%o_4*w6K%v ze{6{_k~5n<{Tf7yaT|}yVueSKV*a3l`b~*$5_D`t?H~DD0rkJ?HvR;Nf^rT6ic&6x zI-wsxc$cq1iukvaRJZ#mG^TF98#ayxVA{*pmK)B3jUPjomMOtcI1Sypf)JNn;?7-J z^WS}dDvh+e*Zy;e+ty!;)s*c}(0e}rzo~U&|4x)+(;1`}NxNr#z{->TuYpeID&N

!}+>s@;tmOYX5EGJpfQlLIXgDNJP9Vq#igR)6 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 diff --git a/client/src/assets/img/sockeye.svg b/client/src/assets/img/sockeye.svg deleted file mode 100644 index 449fcf9..0000000 --- a/client/src/assets/img/sockeye.svg +++ /dev/null @@ -1,1414 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client/src/assets/logo.svg b/client/src/assets/logo.svg deleted file mode 100644 index 449fcf9..0000000 --- a/client/src/assets/logo.svg +++ /dev/null @@ -1,1414 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client/src/components/_barebones_template.vue b/client/src/components/_barebones_template.vue deleted file mode 100644 index 2ea4423..0000000 --- a/client/src/components/_barebones_template.vue +++ /dev/null @@ -1,42 +0,0 @@ - - diff --git a/client/src/components/alert-control.vue b/client/src/components/alert-control.vue deleted file mode 100644 index c1a0a1f..0000000 --- a/client/src/components/alert-control.vue +++ /dev/null @@ -1,38 +0,0 @@ - - diff --git a/client/src/components/attachment-control.vue b/client/src/components/attachment-control.vue deleted file mode 100644 index ad843f3..0000000 --- a/client/src/components/attachment-control.vue +++ /dev/null @@ -1,387 +0,0 @@ - - diff --git a/client/src/components/chart-bar-control.vue b/client/src/components/chart-bar-control.vue deleted file mode 100644 index 268ff5e..0000000 --- a/client/src/components/chart-bar-control.vue +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/client/src/components/chart-bar-horizontal-control.vue b/client/src/components/chart-bar-horizontal-control.vue deleted file mode 100644 index 715f823..0000000 --- a/client/src/components/chart-bar-horizontal-control.vue +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/client/src/components/chart-line-control.vue b/client/src/components/chart-line-control.vue deleted file mode 100644 index 124cce5..0000000 --- a/client/src/components/chart-line-control.vue +++ /dev/null @@ -1,42 +0,0 @@ - diff --git a/client/src/components/currency-control.vue b/client/src/components/currency-control.vue deleted file mode 100644 index b9e2b3e..0000000 --- a/client/src/components/currency-control.vue +++ /dev/null @@ -1,78 +0,0 @@ - - diff --git a/client/src/components/custom-fields-control.vue b/client/src/components/custom-fields-control.vue deleted file mode 100644 index 2e34f68..0000000 --- a/client/src/components/custom-fields-control.vue +++ /dev/null @@ -1,479 +0,0 @@ - - diff --git a/client/src/components/dash-base.vue b/client/src/components/dash-base.vue deleted file mode 100644 index 5b3ae57..0000000 --- a/client/src/components/dash-base.vue +++ /dev/null @@ -1,229 +0,0 @@ - - diff --git a/client/src/components/dash-today-reminders.vue b/client/src/components/dash-today-reminders.vue deleted file mode 100644 index 4536a2c..0000000 --- a/client/src/components/dash-today-reminders.vue +++ /dev/null @@ -1,164 +0,0 @@ - - diff --git a/client/src/components/dash-today-reviews.vue b/client/src/components/dash-today-reviews.vue deleted file mode 100644 index be456f1..0000000 --- a/client/src/components/dash-today-reviews.vue +++ /dev/null @@ -1,154 +0,0 @@ - - diff --git a/client/src/components/dash-today-scheduled-wo.vue b/client/src/components/dash-today-scheduled-wo.vue deleted file mode 100644 index c735132..0000000 --- a/client/src/components/dash-today-scheduled-wo.vue +++ /dev/null @@ -1,153 +0,0 @@ - - diff --git a/client/src/components/data-table-filter-control.vue b/client/src/components/data-table-filter-control.vue deleted file mode 100644 index e5baa7f..0000000 --- a/client/src/components/data-table-filter-control.vue +++ /dev/null @@ -1,1076 +0,0 @@ - - diff --git a/client/src/components/data-table-filter-manager-control.vue b/client/src/components/data-table-filter-manager-control.vue deleted file mode 100644 index 20cb8df..0000000 --- a/client/src/components/data-table-filter-manager-control.vue +++ /dev/null @@ -1,212 +0,0 @@ - - diff --git a/client/src/components/data-table-mobile-filter-column-selector-control.vue b/client/src/components/data-table-mobile-filter-column-selector-control.vue deleted file mode 100644 index 829f6d5..0000000 --- a/client/src/components/data-table-mobile-filter-column-selector-control.vue +++ /dev/null @@ -1,52 +0,0 @@ - - diff --git a/client/src/components/data-table.vue b/client/src/components/data-table.vue deleted file mode 100644 index a982751..0000000 --- a/client/src/components/data-table.vue +++ /dev/null @@ -1,1399 +0,0 @@ - - - diff --git a/client/src/components/date-control.vue b/client/src/components/date-control.vue deleted file mode 100644 index e6982e5..0000000 --- a/client/src/components/date-control.vue +++ /dev/null @@ -1,170 +0,0 @@ - - diff --git a/client/src/components/date-time-control.vue b/client/src/components/date-time-control.vue deleted file mode 100644 index fde1081..0000000 --- a/client/src/components/date-time-control.vue +++ /dev/null @@ -1,249 +0,0 @@ - - diff --git a/client/src/components/days-of-week-control.vue b/client/src/components/days-of-week-control.vue deleted file mode 100644 index 06528d5..0000000 --- a/client/src/components/days-of-week-control.vue +++ /dev/null @@ -1,71 +0,0 @@ - - diff --git a/client/src/components/decimal-control.vue b/client/src/components/decimal-control.vue deleted file mode 100644 index 555839b..0000000 --- a/client/src/components/decimal-control.vue +++ /dev/null @@ -1,64 +0,0 @@ - - diff --git a/client/src/components/duration-control.vue b/client/src/components/duration-control.vue deleted file mode 100644 index ea3d4c8..0000000 --- a/client/src/components/duration-control.vue +++ /dev/null @@ -1,162 +0,0 @@ - - diff --git a/client/src/components/email-control.vue b/client/src/components/email-control.vue deleted file mode 100644 index 1a98012..0000000 --- a/client/src/components/email-control.vue +++ /dev/null @@ -1,26 +0,0 @@ - - diff --git a/client/src/components/error-control.vue b/client/src/components/error-control.vue deleted file mode 100644 index 432f438..0000000 --- a/client/src/components/error-control.vue +++ /dev/null @@ -1,23 +0,0 @@ - - diff --git a/client/src/components/extension-delete-control.vue b/client/src/components/extension-delete-control.vue deleted file mode 100644 index 64f6df0..0000000 --- a/client/src/components/extension-delete-control.vue +++ /dev/null @@ -1,148 +0,0 @@ - - diff --git a/client/src/components/extension-export-control.vue b/client/src/components/extension-export-control.vue deleted file mode 100644 index f6b5658..0000000 --- a/client/src/components/extension-export-control.vue +++ /dev/null @@ -1,63 +0,0 @@ - - diff --git a/client/src/components/extension-tags-control.vue b/client/src/components/extension-tags-control.vue deleted file mode 100644 index d46baae..0000000 --- a/client/src/components/extension-tags-control.vue +++ /dev/null @@ -1,186 +0,0 @@ - - diff --git a/client/src/components/extensions-control.vue b/client/src/components/extensions-control.vue deleted file mode 100644 index 015b87e..0000000 --- a/client/src/components/extensions-control.vue +++ /dev/null @@ -1,158 +0,0 @@ - - diff --git a/client/src/components/gzconfirm.vue b/client/src/components/gzconfirm.vue deleted file mode 100644 index 601aa52..0000000 --- a/client/src/components/gzconfirm.vue +++ /dev/null @@ -1,135 +0,0 @@ - - diff --git a/client/src/components/gznotify.vue b/client/src/components/gznotify.vue deleted file mode 100644 index 07eb27e..0000000 --- a/client/src/components/gznotify.vue +++ /dev/null @@ -1,79 +0,0 @@ - - diff --git a/client/src/components/percent-control.vue b/client/src/components/percent-control.vue deleted file mode 100644 index 785a41b..0000000 --- a/client/src/components/percent-control.vue +++ /dev/null @@ -1,62 +0,0 @@ - - diff --git a/client/src/components/phone-control.vue b/client/src/components/phone-control.vue deleted file mode 100644 index cc0a87c..0000000 --- a/client/src/components/phone-control.vue +++ /dev/null @@ -1,26 +0,0 @@ - - diff --git a/client/src/components/pick-list.vue b/client/src/components/pick-list.vue deleted file mode 100644 index 2f86e51..0000000 --- a/client/src/components/pick-list.vue +++ /dev/null @@ -1,411 +0,0 @@ - - diff --git a/client/src/components/report-control.vue b/client/src/components/report-control.vue deleted file mode 100644 index 4c207b9..0000000 --- a/client/src/components/report-control.vue +++ /dev/null @@ -1,299 +0,0 @@ - - diff --git a/client/src/components/role-control.vue b/client/src/components/role-control.vue deleted file mode 100644 index e54a22b..0000000 --- a/client/src/components/role-control.vue +++ /dev/null @@ -1,84 +0,0 @@ - - diff --git a/client/src/components/tag-picker.vue b/client/src/components/tag-picker.vue deleted file mode 100644 index b3499aa..0000000 --- a/client/src/components/tag-picker.vue +++ /dev/null @@ -1,154 +0,0 @@ - - diff --git a/client/src/components/time-control.vue b/client/src/components/time-control.vue deleted file mode 100644 index a1d09fb..0000000 --- a/client/src/components/time-control.vue +++ /dev/null @@ -1,173 +0,0 @@ - - diff --git a/client/src/components/url-control.vue b/client/src/components/url-control.vue deleted file mode 100644 index 906333e..0000000 --- a/client/src/components/url-control.vue +++ /dev/null @@ -1,28 +0,0 @@ - - diff --git a/client/src/components/wiki-control.vue b/client/src/components/wiki-control.vue deleted file mode 100644 index 0cd2801..0000000 --- a/client/src/components/wiki-control.vue +++ /dev/null @@ -1,1000 +0,0 @@ - - diff --git a/client/src/main.js b/client/src/main.js deleted file mode 100644 index c24f83f..0000000 --- a/client/src/main.js +++ /dev/null @@ -1,233 +0,0 @@ -import "fontsource-roboto/latin.css"; -import "github-markdown-css"; -import Vue from "vue"; -import Vuetify from "./plugins/vuetify"; -import App from "./App.vue"; -import router from "./router"; -import store from "./store"; -import "./registerServiceWorker"; -import errorHandler from "./api/errorhandler"; -import NProgress from "nprogress"; -import "nprogress/nprogress.css"; -import { DateTime } from "luxon"; -import VueCurrencyInput from "vue-currency-input"; -//import Pappa from "papaparse"; - -//my libs -import errorhandler from "./api/errorhandler"; -import sockeyeVersion from "./api/sockeye-version"; -import gzeventbus from "./api/eventbus"; -import gzmenu from "./api/gzmenu"; -import gzdialog from "./api/gzdialog"; -import gzutil from "./api/gzutil"; -import translation from "./api/translation"; -import locale from "./api/locale"; -import gzapi from "./api/gzapi"; - -import gzform from "./api/gzform"; -import gzformcustomtemplate from "./api/form-custom-template"; -import authorizationroles from "./api/authorizationroles"; -import socktype from "./api/socktype"; -import gzenums from "./api/enums"; -import "@/assets/css/main.css"; - -//controls -import dateTimeControl from "./components/date-time-control.vue"; -import dateControl from "./components/date-control.vue"; -import timeControl from "./components/time-control.vue"; -import tagPicker from "./components/tag-picker.vue"; -import pickList from "./components/pick-list.vue"; -import dataTable from "./components/data-table.vue"; -import dataTableFilterControl from "./components/data-table-filter-control.vue"; -import dataTableFilterManagerControl from "./components/data-table-filter-manager-control.vue"; -import dataTableMobileFilterColumnSelectorControl from "./components/data-table-mobile-filter-column-selector-control.vue"; -import customFieldsControl from "./components/custom-fields-control.vue"; -import currencyControl from "./components/currency-control.vue"; -import decimalControl from "./components/decimal-control.vue"; -import percentControl from "./components/percent-control.vue"; -import phoneControl from "./components/phone-control.vue"; -import emailControl from "./components/email-control.vue"; -import urlControl from "./components/url-control.vue"; -import roleControl from "./components/role-control.vue"; -import durationControl from "./components/duration-control.vue"; -import errorControl from "./components/error-control.vue"; -import alertControl from "./components/alert-control.vue"; -import extensionsControl from "./components/extensions-control.vue"; -import reportSelectorControl from "./components/report-control.vue"; -import wikiControl from "./components/wiki-control.vue"; -import attachmentControl from "./components/attachment-control.vue"; -import chartLineControl from "./components/chart-line-control.vue"; -import chartBarControl from "./components/chart-bar-control.vue"; -import chartBarHorizontalControl from "./components/chart-bar-horizontal-control.vue"; - -///////////////////////////////////////////////////////////////// -// LIBS AND GLOBAL ITEMS -// -// - -window.$gz = { - translation: translation, - locale: locale, - formCustomTemplate: gzformcustomtemplate, - type: socktype, - role: authorizationroles, - enums: gzenums, - eventBus: gzeventbus, - menu: gzmenu, - dialog: gzdialog, - util: gzutil, - DateTime: DateTime, - api: gzapi, - form: gzform, - errorHandler: errorhandler, - store: store, - clientInfo: sockeyeVersion, - dev: process.env.NODE_ENV === "development", - erasingDatabase: false -}; - -///////////////////////////////////////////////////////////////// -// ERROR HANDLING -// - -Vue.config.errorHandler = errorHandler.handleVueError; -window.onerror = errorHandler.handleGeneralError; - -//warnings, only occur by default in debug mode not production -Vue.config.warnHandler = errorHandler.handleVueWarning; - -Vue.config.productionTip = false; - -///////////////////////////////////////////////////////////////// -// AJAX LOADER INDICATOR -// -// - -// Store a copy of the fetch function -const _oldFetch = fetch; - -// Create our new version of the fetch function -window.fetch = function() { - // Create hooks - const fetchStart = new Event("fetchStart", { - view: document, - bubbles: true, - cancelable: false - }); - const fetchEnd = new Event("fetchEnd", { - view: document, - bubbles: true, - cancelable: false - }); - - // Pass the supplied arguments to the real fetch function - const fetchCall = _oldFetch.apply(this, arguments); - - // Trigger the fetchStart event - document.dispatchEvent(fetchStart); - - fetchCall - .then(function() { - // Trigger the fetchEnd event - document.dispatchEvent(fetchEnd); - }) - .catch(function() { - // Trigger the fetchEnd event - document.dispatchEvent(fetchEnd); - }); - - return fetchCall; -}; - -document.addEventListener("fetchStart", function() { - NProgress.start(); -}); - -document.addEventListener("fetchEnd", function() { - NProgress.done(); -}); - -///////////////////////////////////////////////////////////// -//GZ COMPONENTS -// -Vue.component("gz-date-time-picker", dateTimeControl); -Vue.component("gz-date-picker", dateControl); -Vue.component("gz-time-picker", timeControl); -Vue.component("gz-tag-picker", tagPicker); -Vue.component("gz-pick-list", pickList); -Vue.component("gz-data-table", dataTable); -Vue.component("gz-data-table-filter", dataTableFilterControl); -Vue.component("gz-data-table-filter-manager", dataTableFilterManagerControl); -Vue.component( - "gz-data-table-mobile-filter-column-selector", - dataTableMobileFilterColumnSelectorControl -); -Vue.component("gz-custom-fields", customFieldsControl); -Vue.component("gz-currency", currencyControl); -Vue.component("gz-percent", percentControl); -Vue.component("gz-decimal", decimalControl); -Vue.component("gz-phone", phoneControl); -Vue.component("gz-email", emailControl); -Vue.component("gz-url", urlControl); -Vue.component("gz-role-picker", roleControl); -Vue.component("gz-duration-picker", durationControl); -Vue.component("gz-error", errorControl); -Vue.component("gz-alert", alertControl); -Vue.component("gz-report-selector", reportSelectorControl); -Vue.component("gz-extensions", extensionsControl); -Vue.component("gz-wiki", wikiControl); -Vue.component("gz-attachments", attachmentControl); -Vue.component("gz-chart-line", chartLineControl); -Vue.component("gz-chart-bar", chartBarControl); -Vue.component("gz-chart-bar-horizontal", chartBarHorizontalControl); -//3rd party components -Vue.use(VueCurrencyInput); -///////////////////////////////////////////////////////////// -//DIRECTIVES -// -//Auto focus on forms -Vue.directive("focus", { - // When the bound element is inserted into the DOM... - inserted: function(el) { - // Focus the element - el.focus(); - } -}); - -///////////////////////////////////////////////////////////////// -// INSTANTIATE -// -Vue.prototype.$sock = { - //development mode, development level error messages etc - dev: process.env.NODE_ENV === "development", - t: function(tKey) { - return translation.get(tKey); - }, - dt: function(timestamp) { - return locale.utcDateToShortDateAndTimeLocalized(timestamp); - }, - sd: function(timestamp) { - return locale.utcDateToShortDateLocalized(timestamp); - }, - cur: function(value) { - return locale.currencyLocalized(value); - }, - dec: function(value) { - return locale.decimalLocalized(value); - }, - util: function() { - return gzutil; - }, - ayt: function() { - return socktype; - } -}; -//disable the devtools nag -Vue.config.devtools = false; -new Vue({ - vuetify: Vuetify, - router, - store, - // eslint-disable-next-line - render: (h) => h(App) -}).$mount("#app"); diff --git a/client/src/plugins/vuetify.js b/client/src/plugins/vuetify.js deleted file mode 100644 index e4c7f2c..0000000 --- a/client/src/plugins/vuetify.js +++ /dev/null @@ -1,1624 +0,0 @@ -import Vue from "vue"; -import Vuetify from "vuetify/lib"; - -//--------------------------- -//ICONS -//tree shaking compatible icon method -//https://stackoverflow.com/a/58261449/8939 -import { library } from "@fortawesome/fontawesome-svg-core"; -import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; //https://github.com/FortAwesome/vue-fontawesome - -/* -NOTES: in case need to get fancy -https://github.com/FortAwesome/vue-fontawesome#advanced -import { - FontAwesomeIcon, - FontAwesomeLayers, - FontAwesomeLayersText -} from "@fortawesome/vue-fontawesome"; //https://github.com/FortAwesome/vue-fontawesome -Vue.component("font-awesome-layers", FontAwesomeLayers); -Vue.component("font-awesome-layers-text", FontAwesomeLayersText); - - -classes seem to work when props don't for - let classes = { - 'fa-spin': props.spin, - 'fa-pulse': props.pulse, - 'fa-fw': props.fixedWidth, - 'fa-border': props.border, - 'fa-li': props.listItem, - 'fa-inverse': props.inverse, - 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both', - 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both', - [`fa-${props.size}`]: props.size !== null, - [`fa-rotate-${props.rotation}`]: props.rotation !== null, - [`fa-pull-${props.pull}`]: props.pull !== null, - 'fa-swap-opacity': props.swapOpacity - } -*/ - -Vue.component("font-awesome-icon", FontAwesomeIcon); // Register component globally - -//REGULAR -import { - faSquare as farSquare, - faCircle as farCircle, - faDotCircle as farDotCircle -} from "@fortawesome/free-regular-svg-icons"; - -//SOLID -import { - faAddressBook, - faAddressCard, - faArrowsAltH, - faArrowsAltV, - faAt, - faBackward, - faBarcode, - faBars, - faBell, - faBinoculars, - faBold, - faBox, - faBoxes, - faBoxOpen, - faBriefcase, - faCampground, - faBullhorn, - faBusinessTime, - faCalculator, - faCalendarAlt, - faCalendarCheck, - faCalendarDay, - faCarBattery, - faCaretDown, - faChartBar, - faChartLine, - faCheckCircle, - faCheckSquare, - faChevronDown, - faChevronLeft, - faChevronRight, - faCircle, - faClipboard, - faClipboardList, - faClock, - faClone, - faCloud, - faCode, - faCoffee, - faCog, - faCogs, - faCoins, - faColumns, - faCommentAlt, - faConciergeBell, - faCopy, - faDiceD20, - faDolly, - //faDollyFlatbed, - faDoorOpen, - faDraftingCompass, - faDragon, - faDumpster, - faEdit, - faEgg, - faEllipsisV, - faEnvelopeOpenText, - faExchangeAlt, - faExclamation, - faExclamationCircle, - faExclamationTriangle, - faExternalLinkAlt, - faEye, - faEyeSlash, - faFan, - faFeather, - faFile, - faFileAlt, - faFileArchive, - faFileAudio, - faFileCode, - faFileContract, - faFileCsv, - faFileDownload, - faFileExcel, - faFileImage, - faFileImport, - faFileMedicalAlt, - faFilePdf, - faFilePowerpoint, - faFileUpload, - faFileVideo, - faFileWord, - faFilter, - faFireAlt, - faFlag, - faFolder, - faForward, - faGem, - faGenderless, - faGlasses, - faGlobe, - faHammer, - faHandHoldingWater, - faHeading, - faHistory, - faHome, - faImage, - faInbox, - faInfoCircle, - faItalic, - faKey, - faLanguage, - faLayerGroup, - faLifeRing, - faLink, - faListAlt, - faListOl, - faListUl, - faLock, - faLuggageCart, - faMagic, - faMapMarkerAlt, - faMapMarkedAlt, - faMinus, - faMinusSquare, - faMoneyBillWave, - faMoon, - faObjectGroup, - faPallet, - faPaperclip, - //faPaperPlane, - faParachuteBox, - faPencilAlt, - faPencilRuler, - faPeopleCarry, - faPercent, - faPhoneAlt, - faPlug, - faPlus, - faPlusCircle, - faPrint, - faProjectDiagram, - faPuzzlePiece, - faQuestionCircle, - faQuoteLeft, - faReply, - faRobot, - faRocket, - faSave, - faSearch, - faSeedling, - faServer, - faShare, - faShippingFast, - faShoppingCart, - faSignInAlt, - faSignOutAlt, - faSitemap, - faSkullCrossbones, - faSlidersH, - faSort, - faSortAmountDown, - faSortAmountUp, - faSplotch, - faSquareFull, - faStamp, - faStepBackward, - faStepForward, - faStickyNote, - faStore, - faStopCircle, - faStrikethrough, - faSun, - faSync, - faTable, - faTachometerAlt, - faTags, - faTasks, - faThList, - faTicketAlt, - faTimesCircle, - faToolbox, - faTools, - faTrashAlt, - faTrashRestoreAlt, - faTruckLoading, - faTruckMonster, - faUndo, - faUser, - faUserClock, - faUserCog, - faUsers, - faUserTie, - faVial, - faWarehouse, - faWeight, - faWrench -} from "@fortawesome/free-solid-svg-icons"; - -Vue.component("font-awesome-icon", FontAwesomeIcon); - -library.add( - faAddressBook, - faAddressCard, - faArrowsAltH, - faArrowsAltV, - faAt, - faBackward, - faBarcode, - faBars, - faBell, - faBinoculars, - faBold, - faBox, - faBoxes, - faBoxOpen, - faBriefcase, - faCampground, - faBullhorn, - faBusinessTime, - faCalculator, - faCalendarAlt, - faCalendarCheck, - faCalendarDay, - faCarBattery, - faCaretDown, - faChartBar, - faChartLine, - faCheckCircle, - faCheckSquare, - faChevronDown, - faChevronLeft, - faChevronRight, - faClipboard, - faClipboardList, - faCircle, - farCircle, - faClock, - faClone, - faCloud, - faCode, - faCoffee, - faCog, - faCogs, - faCoins, - faColumns, - faCommentAlt, - faConciergeBell, - faCopy, - faDiceD20, - faDolly, - //faDollyFlatbed, - faDoorOpen, - farDotCircle, - faDraftingCompass, - faDragon, - faDumpster, - faEdit, - faEgg, - faEllipsisV, - faEnvelopeOpenText, - faExchangeAlt, - faExclamation, - faExclamationCircle, - faExclamationTriangle, - faExternalLinkAlt, - faEye, - faEyeSlash, - faFan, - faFeather, - faFile, - faFileAlt, - faFileArchive, - faFileAudio, - faFileCode, - faFileContract, - faFileCsv, - faFileDownload, - faFileExcel, - faFileImage, - faFileImport, - faFileMedicalAlt, - faFilePdf, - faFilePowerpoint, - faFileUpload, - faFileVideo, - faFileWord, - faFilter, - faFireAlt, - faFlag, - faFolder, - faForward, - faGem, - faGenderless, - faGlasses, - faGlobe, - faHammer, - faHandHoldingWater, - faHeading, - faHistory, - faHome, - faImage, - faInbox, - faInfoCircle, - faItalic, - faKey, - faLanguage, - faLayerGroup, - faLifeRing, - faLink, - faListAlt, - faListOl, - faListUl, - faLock, - faLuggageCart, - faMagic, - faMapMarkerAlt, - faMapMarkedAlt, - faMinus, - faMinusSquare, - faMoneyBillWave, - faMoon, - faObjectGroup, - faPallet, - faPaperclip, - //faPaperPlane, - faParachuteBox, - faPencilAlt, - faPencilRuler, - faPeopleCarry, - faPercent, - faPhoneAlt, - faPlug, - faPlus, - faPlusCircle, - faPrint, - faProjectDiagram, - faPuzzlePiece, - faQuestionCircle, - faQuoteLeft, - faReply, - faRobot, - faRocket, - faSave, - faSearch, - faSeedling, - faServer, - faShare, - faShippingFast, - faShoppingCart, - faSignInAlt, - faSignOutAlt, - faSitemap, - faSkullCrossbones, - faSlidersH, - faSort, - faSortAmountDown, - faSortAmountUp, - faSplotch, - farSquare, - faSquareFull, - faStamp, - faStepBackward, - faStepForward, - faStickyNote, - faStore, - faStopCircle, - faStrikethrough, - faSun, - faSync, - faTable, - faTachometerAlt, - faTags, - faTasks, - faThList, - faTicketAlt, - faTimesCircle, - faToolbox, - faTools, - faTrashAlt, - faTrashRestoreAlt, - faTruckLoading, - faTruckMonster, - faUndo, - faUser, - faUserClock, - faUserCog, - faUsers, - faUserTie, - faVial, - faWarehouse, - faWeight, - faWrench -); - -const CUSTOM_ICONS = { - sockiAddressBook: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "address-book"] - } - }, - sockiAddressCard: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "address-card"] - } - }, - sockiArrowsAltH: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "arrows-alt-h"] - } - }, - sockiArrowsAltV: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "arrows-alt-v"] - } - }, - sockiAt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "at"] - } - }, - sockiBackward: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "backward"] - } - }, - sockiBarCode: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "barcode"] - } - }, - sockiBell: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "bell"] - } - }, - sockiBinoculars: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "binoculars"] - } - }, - sockiBold: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "bold"] - } - }, - sockiBox: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "box"] - } - }, - sockiBoxes: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "boxes"] - } - }, - sockiBoxOpen: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "box-open"] - } - }, - sockiBriefcase: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "briefcase"] - } - }, - sockiCampground: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "campground"] - } - }, - sockiBullhorn: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "bullhorn"] - } - }, - sockiBusinessTime: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "business-time"] - } - }, - sockiCalculator: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "calculator"] - } - }, - sockiCalendarAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "calendar-alt"] - } - }, - sockiCalendarCheck: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "calendar-check"] - } - }, - sockiCalendarDay: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "calendar-day"] - } - }, - sockiCarBattery: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "car-battery"] - } - }, - sockiChartBar: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "chart-bar"] - } - }, - sockiChartLine: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "chart-line"] - } - }, - sockiCheckCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "check-circle"] - } - }, - sockiCheckSquare: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "check-square"] - } - }, - sockiCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "circle"] - } - }, - sockiClipboard: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "clipboard"] - } - }, - sockiClipboardList: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "clipboard-list"] - } - }, - sockiClock: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "clock"] - } - }, - sockiClone: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "clone"] - } - }, - sockiCloud: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "cloud"] - } - }, - sockiCode: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "code"] - } - }, - sockiCoffee: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "coffee"] - } - }, - sockiCog: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "cog"] - } - }, - sockiCogs: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "cogs"] - } - }, - sockiCoins: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "coins"] - } - }, - sockiColumns: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "columns"] - } - }, - sockiCommentAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "comment-alt"] - } - }, - sockiConciergeBell: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "concierge-bell"] - } - }, - sockiCopy: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "copy"] - } - }, - sockiCustomize: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sliders-h"] - } - }, - sockiDiceD20: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "dice-d20"] - } - }, - sockiDolly: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "dolly"] - } - }, - // sockiDollyFlatbed: { - // component: FontAwesomeIcon, - // props: { - // icon: ["fas", "dolly-flatbed"] - // } - // }, - sockiDoorOpen: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "door-open"] - } - }, - sockiDraftingCompass: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "drafting-compass"] - } - }, - sockiDragon: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "dragon"] - } - }, - sockiDumpster: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "dumpster"] - } - }, - sockiEdit: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "edit"] - } - }, - sockiEgg: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "egg"] - } - }, - sockiEnvelopeOpenText: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "envelope-open-text"] - } - }, - sockiExchangeAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "exchange-alt"] - } - }, - sockiExclamationCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "exclamation-circle"] - } - }, - sockiExclamationTriangle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "exclamation-triangle"] - } - }, - sockiExternalLinkAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "external-link-alt"] - } - }, - sockiEye: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "eye"] - } - }, - sockiEyeSlash: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "eye-slash"] - } - }, - sockiEllipsisV: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "ellipsis-v"] - } - }, - sockiFan: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "fan"] - } - }, - sockiFeather: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "feather"] - } - }, - sockiFile: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file"] - } - }, - sockiFileArchive: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-archive"] - } - }, - sockiFileAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-alt"] - } - }, - sockiFileAudio: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-audio"] - } - }, - sockiFileCode: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-code"] - } - }, - sockiFileContract: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-contract"] - } - }, - sockiFileCsv: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-csv"] - } - }, - sockiFileDownload: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-download"] - } - }, - sockiFileExcel: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-excel"] - } - }, - sockiFileImage: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-image"] - } - }, - sockiFileImport: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-import"] - } - }, - sockiFileMedicalAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-medical-alt"] - } - }, - sockiFilePdf: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-pdf"] - } - }, - sockiFilePowerpoint: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-powerpoint"] - } - }, - sockiFileUpload: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-upload"] - } - }, - sockiFileVidio: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-vidio"] - } - }, - sockiFileWord: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "file-word"] - } - }, - sockiFilter: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "filter"] - } - }, - sockiFireAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "fire-alt"] - } - }, - sockiFlag: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "flag"] - } - }, - sockiFolder: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "folder"] - } - }, - sockiForward: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "forward"] - } - }, - sockiGem: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "gem"] - } - }, - sockiGenderless: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "genderless"] - } - }, - sockiGlasses: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "glasses"] - } - }, - sockiGlobe: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "globe"] - } - }, - sockiHammer: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "hammer"] - } - }, - sockiHandHoldingWater: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "hand-holding-water"] - } - }, - sockiHeading: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "heading"] - } - }, - sockiHistory: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "history"] - } - }, - sockiHome: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "home"] - } - }, - sockiImage: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "image"] - } - }, - sockiInbox: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "inbox"] - } - }, - sockiInfoCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "info-circle"] - } - }, - sockiItalic: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "italic"] - } - }, - sockiKey: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "key"] - } - }, - sockiLanguage: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "language"] - } - }, - sockiLayerGroup: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "layer-group"] - } - }, - sockiLifeRing: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "life-ring"] - } - }, - sockiLink: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "link"] - } - }, - sockiListAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "list-alt"] - } - }, - sockiListOl: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "list-ol"] - } - }, - sockiListUl: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "list-ul"] - } - }, - sockiLock: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "lock"] - } - }, - sockiLuggageCart: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "luggage-cart"] - } - }, - sockiMagic: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "magic"] - } - }, - sockiMapMarker: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "map-marker-alt"] - } - }, - sockiMapMarked: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "map-marked-alt"] - } - }, - sockiMinus: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "minus"] - } - }, - sockiMoneyBillWave: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "money-bill-wave"] - } - }, - sockiMoon: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "moon"] - } - }, - sockiObjectGroup: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "object-group"] - } - }, - sockiPallet: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "pallet"] - } - }, - sockiPaperclip: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "paperclip"] - } - }, - // sockiPaperPlane: { - // component: FontAwesomeIcon, - // props: { - // icon: ["fas", "paper-plane"] - // } - // }, - sockiParachuteBox: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "parachute-box"] - } - }, - sockiPencilAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "pencil-alt"] - } - }, - sockiPencilRuler: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "pencil-ruler"] - } - }, - sockiPeopleCarry: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "people-carry"] - } - }, - sockiPercent: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "percent"] - } - }, - sockiPhoneAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "phone-alt"] - } - }, - sockiPlug: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "plug"] - } - }, - sockiPlus: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "plus"] - } - }, - sockiPlusCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "plus-circle"] - } - }, - sockiPrint: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "print"] - } - }, - sockiProjectDiagram: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "project-diagram"] - } - }, - sockiPuzzlePiece: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "puzzle-piece"] - } - }, - sockiQuestionCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "question-circle"] - } - }, - sockiQuoteLeft: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "quote-left"] - } - }, - sockiReply: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "reply"] - } - }, - sockiRobot: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "robot"] - } - }, - sockiRocket: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "rocket"] - } - }, - sockiSave: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "save"] - } - }, - sockiSearch: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "search"] - } - }, - sockiSeedling: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "seedling"] - } - }, - sockiServer: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "server"] - } - }, - sockiShare: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "share"] - } - }, - sockiShippingFast: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "shipping-fast"] - } - }, - sockiShoppingCart: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "shopping-cart"] - } - }, - sockiSignIn: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sign-in-alt"] - } - }, - sockiSignOut: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sign-out-alt"] - } - }, - sockiSitemap: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sitemap"] - } - }, - sockiSkullCrossbones: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "skull-crossbones"] - } - }, - sockiSort: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sort"] - } - }, - sockiSortAmountDown: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sort-amount-down"] - } - }, - sockiSortAmountUp: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sort-amount-up"] - } - }, - sockiSplotch: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "splotch"] - } - }, - sockiStamp: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "stamp"] - } - }, - sockiSquare: { - component: FontAwesomeIcon, - props: { - icon: ["far", "square"] - } - }, - sockiSquareFull: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "square-full"] - } - }, - sockiStepBackward: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "step-backward"] - } - }, - sockiStepForward: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "step-forward"] - } - }, - sockiStickyNote: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sticky-note"] - } - }, - sockiStore: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "store"] - } - }, - sockiStopCircle: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "stop-circle"] - } - }, - sockiStrikethrough: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "strikethrough"] - } - }, - sockiSun: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sun"] - } - }, - sockiSync: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "sync"] - } - }, - sockiTable: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "table"] - } - }, - sockiTachometer: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "tachometer-alt"] - } - }, - sockiTags: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "tags"] - } - }, - sockiTasks: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "tasks"] - } - }, - sockiThList: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "th-list"] - } - }, - sockiTicket: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "ticket-alt"] - } - }, - sockiToolbox: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "toolbox"] - } - }, - sockiTools: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "tools"] - } - }, - sockiTrashAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "trash-alt"] - } - }, - sockiTrashRestoreAlt: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "trash-restore-alt"] - } - }, - sockiTruckLoading: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "truck-loading"] - } - }, - sockiTruckMonster: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "truck-monster"] - } - }, - sockiUndo: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "undo"] - } - }, - sockiUser: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "user"] - } - }, - sockiUserClock: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "user-clock"] - } - }, - sockiUserCog: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "user-cog"] - } - }, - sockiUsers: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "users"] - } - }, - sockiUserTie: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "user-tie"] - } - }, - sockiVial: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "vial"] - } - }, - sockiWarehouse: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "warehouse"] - } - }, - sockiWeight: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "weight"] - } - }, - sockiWrench: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "wrench"] - } - }, - //VUETIFY REQUIRED ONES - //https://vuetifyjs.com/en/features/icons/#using-custom-icons - checkboxIndeterminate: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "minus-square"] - } - }, - clear: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "times-circle"] - } - }, - dropdown: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "caret-down"] - } - }, - exclamation: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "exclamation"] - } - }, - info: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "info-circle"] - } - }, - menu: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "bars"] - } - }, - prev: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "chevron-left"] - } - }, - radioOn: { - component: FontAwesomeIcon, - props: { - icon: ["far", "dot-circle"] - } - }, - radioOff: { - component: FontAwesomeIcon, - props: { - icon: ["far", "circle"] - } - }, - next: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "chevron-right"] - } - }, - sort: { - component: FontAwesomeIcon, - props: { - icon: ["fas", "chevron-down"] - } - } -}; -//------------- - -Vue.use(Vuetify); - -export default new Vuetify({ - theme: { - themes: { - light: { - primary: "#263238", - secondary: "#37474F", - accent: "#DB7022", //lighter orangey red, more friendly looking - error: "#FF5252", //lighter red - disabled: "#C7C7C7", - readonlybanner: "#808080" - }, - dark: { - //color adjuster tool: https://www.hexcolortool.com/#00205c - primary: "#7F9FDA", //dark blue LIGHTENED 50% - secondary: "#006B24", //green DARKENED 10% - accent: "#DB7022", //lighter orangey red, more friendly looking - error: "#FF5252", //lighter red - disabled: "#C7C7C7", - readonlybanner: "#808080" - } - }, - options: { variations: false } - }, - icons: { - iconfont: "faSvg", - values: CUSTOM_ICONS - } -}); diff --git a/client/src/registerServiceWorker.js b/client/src/registerServiceWorker.js deleted file mode 100644 index c4f8ce3..0000000 --- a/client/src/registerServiceWorker.js +++ /dev/null @@ -1,40 +0,0 @@ -/* eslint-disable no-console */ -//INFO: https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa -import { register } from "register-service-worker"; - -if (process.env.NODE_ENV === "production") { - register(`${process.env.BASE_URL}service-worker.js`, { - ready() { - console.log("Service worker is active."); - }, - cached() { - console.log("Content has been cached for offline use."); - }, - updatefound() { - console.log("New content is downloading."); - }, - updated(registration) { - console.log("New content is available; please refresh."); - - //https://medium.com/@dougallrich/give-users-control-over-app-updates-in-vue-cli-3-pwas-20453aedc1f2 - document.dispatchEvent( - new CustomEvent("swUpdated", { detail: registration }) - ); - }, - registered(registration) { - //https://medium.com/@dougallrich/give-users-control-over-app-updates-in-vue-cli-3-pwas-20453aedc1f2 - console.log("Service worker has been registered."); - setInterval(() => { - registration.update(); - }, 1000 * 60 * 60); // e.g. hourly checks - }, - offline() { - console.log( - "No internet connection found. App is running in offline mode." - ); - }, - error(error) { - console.error("Error during service worker registration:", error); - } - }); -} diff --git a/client/src/router.js b/client/src/router.js deleted file mode 100644 index df17d8b..0000000 --- a/client/src/router.js +++ /dev/null @@ -1,603 +0,0 @@ -import Vue from "vue"; -import Router from "vue-router"; - -Vue.use(Router); - -// scrollBehavior: -// - only available in html5 history mode -// - defaults to no scroll behavior -// - return false to prevent scroll -const scrollBehavior = function(to, from, savedPosition) { - if (savedPosition) { - // savedPosition is only available for popstate navigations. - return savedPosition; - } else { - const position = {}; - - // scroll to anchor by returning the selector - if (to.hash) { - position.selector = to.hash; - - // specify offset of the element - if (to.hash === "#anchor2") { - position.offset = { y: 100 }; - } - - if (document.querySelector(to.hash)) { - return position; - } - - // if the returned position is falsy or an empty object, - // will retain current scroll position. - - return false; - } - - // eslint-disable-next-line - return new Promise(resolve => { - // check if any matched route config has meta that requires scrolling to top - // eslint-disable-next-line - if (to.matched.some(m => m.meta.scrollToTop)) { - // coords will be used if no selector is provided, - // or if the selector didn't match any element. - position.x = 0; - position.y = 0; - } - - // wait for the out transition to complete (if necessary) - this.app.$root.$once("triggerScroll", () => { - // if the resolved position is falsy or an empty object, - // will retain current scroll position. - - resolve(position); - }); - }); - } -}; -/** - * https://router.vuejs.org/guide/advanced/lazy-loading.html#grouping-components-in-the-same-chunk - * - * - */ -export default new Router({ - mode: "history", - base: process.env.BASE_URL, - scrollBehavior, - routes: [ - //########################## GENERAL / COMMON GROUP ################################### - { - path: "/open/:socktype/:recordid", - name: "sock-open", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/sock-open.vue") - }, - { - path: "/viewreport/:oid/:rid", - name: "sock-report-view", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/sock-report-view.vue" - ) - }, - { - path: "/about", - name: "sock-about", - // route level code-splitting - // this generates a separate chunk (about.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/sock-about.vue") - }, - { - path: "/applog", - name: "sock-log", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/sock-log.vue") - }, - { - path: "/customize/:formCustomTemplateKey", - name: "sock-customize", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/sock-customize.vue" - ) - }, - { - path: "/data-list-column-view/:dataListKey", - name: "sock-data-list-column-view", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/sock-data-list-column-view.vue" - ) - }, - - { - path: "/history/:socktype/:recordid/:userlog?", - name: "sock-history", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/sock-history.vue") - }, - { - path: "/login", - name: "login", - meta: { scrollToTop: true }, //KEEP THIS AS AN EXAMPLE OF HOW TO USE WITH CODE ABOVE - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/login.vue") - }, - { - path: "/home-dashboard", - name: "home-dashboard", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-dashboard.vue" - ) - }, - { - //path: "/home-search/:socktype?", this was making it sticky and couldn't change type as it was in url path - path: "/home-search", - name: "home-search", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/home-search.vue") - }, - { path: "/", redirect: "/login" }, //If someone goes blindly to the root of the app, then it should go to login - { - path: "/home-schedule", - name: "home-schedule", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-schedule.vue" - ) - }, - { - path: "/home-memos", - name: "home-memos", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/home-memos.vue") - }, - { - path: "/home-memos/:recordid", - name: "memo-edit", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/home-memo.vue") - }, - { - path: "/home-notifications", - name: "home-notifications", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-notifications.vue" - ) - }, - { - path: "/home-notify-direct", - name: "home-notify-direct", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-notify-direct.vue" - ) - }, - { - path: "/home-reminders", - name: "home-reminders", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-reminders.vue" - ) - }, - { - path: "/home-reminders/:recordid", - name: "reminder-edit", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-reminder.vue" - ) - }, - { - path: "/home-reviews/:aType?/:objectId?/:name?", - name: "home-reviews", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/home-reviews.vue") - }, - { - path: "/home-reviews/:recordid/:aType?/:objectId?/:name?", - name: "review-edit", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/home-review.vue") - }, - { - path: "/home-user-settings", - name: "home-user-settings", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-user-settings.vue" - ) - }, - { - path: "/home-reset", - name: "home-reset", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/home-reset.vue") - }, - { - path: "/home-password", - name: "home-password", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-password.vue" - ) - }, - { - path: "/home-security", - name: "home-security", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-security.vue" - ) - }, - { - path: "/home-notify-subscriptions", - name: "home-notify-subscriptions", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-notify-subscriptions.vue" - ) - }, - { - path: "/home-notify-subscriptions/:recordid", - name: "home-notify-subscription", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/home-notify-subscription.vue" - ) - }, - //####################### CUSTOMERS GROUP ############################## - { - path: "/cust-customers", - name: "cust-customers", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-customers.vue") - }, - { - path: "/cust-customers/:recordid", - name: "customer-edit", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-customer.vue") - }, - { - path: "/cust-customer-notes/:customerid", - name: "customer-notes", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-customer-notes.vue") - }, - { - path: "/cust-customer-note/:recordid", - name: "customer-note-edit", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-customer-note.vue") - }, - { - path: "/cust-users", - name: "cust-users", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-users.vue") - }, - { - path: "/cust-users/:recordid", - name: "cust-user", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-user.vue") - }, - { - path: "/cust-head-offices", - name: "cust-head-offices", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-head-offices.vue") - }, - { - path: "/cust-head-offices/:recordid", - name: "head-office-edit", - component: () => - import(/* webpackChunkName: "cust" */ "./views/cust-head-office.vue") - }, - { - path: "/cust-notify-subscriptions", - name: "cust-notify-subscriptions", - component: () => - import( - /* webpackChunkName: "cust" */ "./views/customer-notify-subscriptions.vue" - ) - }, - { - path: "/cust-notify-subscriptions/:recordid", - name: "cust-notify-subscription", - component: () => - import( - /* webpackChunkName: "cust" */ "./views/customer-notify-subscription.vue" - ) - }, - - //####################### BUSINESS GROUP ############################## - { - path: "/biz-license-list", - name: "biz-license-list", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-license-list.vue") - }, - { - path: "/biz-trial-request-list", - name: "biz-trial-request-list", - component: () => - import( - /* webpackChunkName: "biz" */ "./views/biz-trial-request-list.vue" - ) - }, - { - path: "/biz-subscription-server-list", - name: "biz-subscription-server-list", - component: () => - import( - /* webpackChunkName: "biz" */ "./views/biz-subscription-server-list.vue" - ) - }, - { - path: "/biz-subscription-server-list/:recordid", - name: "subscription-server-edit", - component: () => - import( - /* webpackChunkName: "biz" */ "./views/biz-subscription-server.vue" - ) - }, - { - path: "/biz-purchase-list", - name: "biz-purchase-list", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-purchase-list.vue") - }, - { - path: "/biz-purchase-list/:recordid", - name: "purchase-edit", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-purchase.vue") - }, - { - path: "/biz-product-list", - name: "biz-product-list", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-product-list.vue") - }, - { - path: "/biz-product-list/:recordid", - name: "product-edit", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-product.vue") - }, - { - path: "/biz-vendor-list", - name: "biz-vendor-list", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-vendor-list.vue") - }, - { - path: "/biz-vendor-list/:recordid", - name: "vendor-edit", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-vendor.vue") - }, - { - path: "/biz-gzcase-list", - name: "biz-gzcase-list", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-gzcase-list.vue") - }, - { - path: "/biz-gzcase-list/:recordid", - name: "gzcase-edit", - component: () => - import(/* webpackChunkName: "biz" */ "./views/biz-gzcase.vue") - }, - // //####################### SERVICE GROUP ############################## - // { - // path: "/svc-schedule", - // name: "svc-schedule", - // component: () => - // import(/* webpackChunkName: "svc" */ "./views/svc-schedule.vue") - // }, - - //######################### ADMINISTRATION GROUP ##################################### - { - path: "/adm-global-settings", - name: "adm-global-settings", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-global-settings.vue") - }, - { - path: "/adm-global-select-templates", - name: "adm-global-select-templates", - component: () => - import( - /* webpackChunkName: "adm" */ "./views/adm-global-select-templates.vue" - ) - }, - { - path: "/adm-global-seeds", - name: "adm-global-seeds", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-global-seeds.vue") - }, - { - path: "/adm-global-logo", - name: "adm-global-logo", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-global-logo.vue") - }, - - { - path: "/adm-users", - name: "adm-users", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-users.vue") - }, - { - path: "/adm-users/:recordid", - name: "adm-user", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-user.vue") - }, - { - path: "/adm-translations", - name: "adm-translations", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-translations.vue") - }, - { - path: "/adm-translations/:recordid", - name: "adm-translation", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-translation.vue") - }, - - { - path: "/adm-report-templates", - name: "adm-report-templates", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-report-templates.vue") - }, - { - path: "/report-edit/:recordid", //Route to edit a report template - name: "sock-report-edit", - component: () => - import( - //it gets it's own chunk name because it's huge and rarely used - /* webpackChunkName: "sock-report-edit" */ "./views/sock-report-edit.vue" - ) - }, - { - path: "/adm-attachments", - name: "adm-attachments", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-attachments.vue") - }, - - { - path: "/adm-history", - name: "adm-history", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-history.vue") - }, - { - path: "/adm-import", - name: "adm-import", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-import.vue") - }, - { - path: "/adm-integrations", - name: "adm-integrations", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-integrations.vue") - }, - { - path: "/adm-integrations/:recordid", - name: "adm-integration", - component: () => - import(/* webpackChunkName: "adm" */ "./views/adm-integration.vue") - }, - - //########################## OPERATIONS GROUP ############################ - { - path: "/ops-backup", - name: "ops-backup", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-backup.vue") - }, - - { - path: "/ops-server-state", - name: "ops-server-state", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-server-state.vue") - }, - - { - path: "/ops-jobs", - name: "ops-jobs", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-jobs.vue") - }, - - { - path: "/ops-log", - name: "ops-log", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-log.vue") - }, - { - path: "/ops-view-configuration", - name: "ops-view-configuration", - component: () => - import( - /* webpackChunkName: "ops" */ "./views/ops-view-configuration.vue" - ) - }, - - { - path: "/ops-metrics", - name: "ops-metrics", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-metrics.vue") - }, - { - path: "/ops-profile", - name: "ops-profile", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-profile.vue") - }, - { - path: "/ops-notify-queue", - name: "ops-notify-queue", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-notify-queue.vue") - }, - { - path: "/ops-notification-settings", - name: "ops-notification-settings", - component: () => - import( - /* webpackChunkName: "ops" */ "./views/ops-notification-settings.vue" - ) - }, - { - path: "/ops-notify-log", - name: "ops-notify-log", - component: () => - import(/* webpackChunkName: "ops" */ "./views/ops-notify-log.vue") - }, - { - path: "/ops-customer-notify-log", - name: "ops-customer-notify-log", - component: () => - import( - /* webpackChunkName: "ops" */ "./views/ops-customer-notify-log.vue" - ) - }, - - //############################## SPECIAL ROUTES ############################### - - { - //No rights - happens when customer user logs in without access to anything at all due to configuration not allowing it - path: "/no-features-available", - name: "no-features-available", - component: () => - import( - /* webpackChunkName: "sock-common" */ "./views/nofeaturesavailable.vue" - ) - }, - { - //404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 - path: "*", - name: "notfound", - component: () => - import(/* webpackChunkName: "sock-common" */ "./views/notfound.vue") - } - ] -}); diff --git a/client/src/store.js b/client/src/store.js deleted file mode 100644 index e8cac3e..0000000 --- a/client/src/store.js +++ /dev/null @@ -1,210 +0,0 @@ -import Vue from "vue"; -import Vuex from "vuex"; -import createPersistedState from "vuex-persistedstate"; - -const MaxLogLength = 100; - -Vue.use(Vuex); - -//reset all local settings via url -//localhost:8080/login?reset -if (window.location.search) { - var searchParams = new URLSearchParams(window.location.search); - if (searchParams.has("reset")) { - localStorage.removeItem("Sockeye"); - console.log("LOCAL SETTINGS RESET"); - } -} - -export default new Vuex.Store({ - plugins: [createPersistedState({ key: "Sockeye" })], - state: { - lastClientVersion: "", - authenticated: false, - apiToken: "-", - downloadToken: "-", - l: false, //license lockout flag - tfaEnabled: undefined, - customerRights: {}, - userId: 0, - userName: "NOT AUTHENTICATED", - roles: 0, - userType: 0, - homePage: undefined, - translationText: {}, - enums: {}, //all enum values with translated text to match stored as key - userOptions: { - languageOverride: "en-US", - timeZoneOverride: null, //use browser tz by default - currencyName: "USD", - hour12: true, - uiColor: "#000000ff", - emailAddress: null, - mapUrlTemplate: null - }, - globalSettings: {}, - navItems: [], - logArray: [], - formSettings: {}, //this is the settings on forms that survive a refresh like grid number of items to show etc - formCustomTemplate: {}, //this is the custom fields settings for forms, - darkMode: false, - nativeDateTimeInput: false, - knownPassword: false, - newNotificationCount: 0 - }, - getters: { - /* User types: - Service = 1, - NotService = 2, - Customer = 3, - HeadOffice = 4, - ServiceContractor = 5 - */ - isCustomerUser: state => { - return state.userType == 3 || state.userType == 4; - }, - isSubContractorUser: state => { - return state.userType == 5; - }, - isScheduleableUser: state => { - return state.userType == 1 || state.userType == 5; - }, - canSubscribeToNotifications: state => { - switch (state.userType) { - case 1: - case 2: - return true; - case 3: - case 4: - //customer / headoffice and some notifications are enabled for them - return ( - state.customerRights.notifyServiceImminent == true || - state.customerRights.notifyCSRAccepted == true || - state.customerRights.notifyCSRRejected == true || - state.customerRights.notifyWOCompleted == true || - state.customerRights.notifyWOCreated == true - ); - case 5: //subcontractor for now no notification subscriptions available - return false; - } - return false; - }, - isSuperUser: state => { - return state.userId === 1; - } - }, - mutations: { - setLastClientVersion(state, data) { - state.lastClientVersion = data; - }, - login(state, data) { - // mutate state - state.authenticated = data.authenticated; - state.userId = data.userId; - state.roles = data.roles; - state.apiToken = data.apiToken; - state.userName = data.userName; - state.userType = data.userType; - state.downloadToken = data.dlt; - state.l = data.l; - state.tfaEnabled = data.tfaEnabled; - if (data.customerRights) { - state.customerRights = data.customerRights; - } - }, - logout(state) { - //Things that are reset on logout - state.apiToken = "-"; - state.downloadToken = "-"; - state.l = false; - state.tfaEnabled = undefined; - state.customerRights = {}; - state.authenticated = false; - state.userId = 0; - state.userName = "NOT AUTHENTICATED"; - state.roles = 0; - state.userType = 0; - state.homePage = undefined; - state.navItems = []; - state.translationText = {}; - state.enums = {}; - state.formCustomTemplate = {}; - state.userOptions.languageOverride = "en-US"; - state.userOptions.timeZoneOverride = null; - state.userOptions.currencyName = "USD"; - state.userOptions.hour12 = true; - //state.userOptions.uiColor = "#000000ff"; - state.userOptions.emailAddress = null; - state.userOptions.mapUrlTemplate = null; - state.globalSettings = {}; - state.knownPassword = false; - state.newNotificationCount = 0; - }, - addNavItem(state, data) { - state.navItems.push(data); - }, - setTranslationText(state, data) { - state.translationText[data.key] = data.value; - }, - setFormCustomTemplateItem(state, data) { - state.formCustomTemplate[data.formKey + "_concurrencyToken"] = - data.concurrency; - state.formCustomTemplate[data.formKey] = data.value; - }, - setUserOptions(state, data) { - // mutate state - state.userOptions.languageOverride = data.languageOverride; - state.userOptions.currencyName = data.currencyName; - state.userOptions.hour12 = data.hour12; - state.userOptions.timeZoneOverride = data.timeZoneOverride; - state.userOptions.emailAddress = data.emailAddress; - //state.userOptions.uiColor = data.uiColor; - state.userOptions.mapUrlTemplate = data.mapUrlTemplate; - }, - setGlobalSettings(state, data) { - // mutate state - state.globalSettings = data; - }, - setEnum(state, data) { - state.enums[data.enumKey] = data.items; - }, - logItem(state, msg) { - msg = new Date().toLocaleString("sv-SE") + "|" + msg; - state.logArray.push(msg); - if (state.logArray.length > MaxLogLength) { - //remove beginning elements - state.logArray = state.logArray.slice( - state.logArray.length - MaxLogLength - ); - } - }, - clearAllFormSettings(state) { - state.formSettings = {}; - }, - setFormSettings(state, data) { - state.formSettings[data.formKey] = data.formSettings; - }, - clearFormSettings(state, formKey) { - delete state.formSettings[formKey]; - }, - setHomePage(state, data) { - state.homePage = data; - }, - setDarkMode(state, data) { - state.darkMode = data; - }, - setNativeDateTimeInput(state, data) { - state.nativeDateTimeInput = data; - }, - setKnownPassword(state, data) { - state.knownPassword = data; - }, - setNewNotificationCount(state, data) { - state.newNotificationCount = data; - }, - setTfaEnabled(state, data) { - state.tfaEnabled = data; - } - }, - actions: {} -}); diff --git a/client/src/sw.js b/client/src/sw.js deleted file mode 100644 index 944252f..0000000 --- a/client/src/sw.js +++ /dev/null @@ -1,25 +0,0 @@ -// This is the code piece that GenerateSW mode can't provide for us. -// This code listens for the user's confirmation to update the app. -//https://medium.com/@dougallrich/give-users-control-over-app-updates-in-vue-cli-3-pwas-20453aedc1f2 -self.addEventListener("message", e => { - if (!e.data) { - return; - } - - switch (e.data) { - case "skipWaiting": - self.skipWaiting(); - break; - default: - // NOOP - break; - } -}); - -workbox.core.clientsClaim(); // Vue CLI 4 and Workbox v4, else -// workbox.clientsClaim(); // Vue CLI 3 and Workbox v3. - -// The precaching code provided by Workbox. -self.__precacheManifest = [].concat(self.__precacheManifest || []); -// workbox.precaching.suppressWarnings(); // Only used with Vue CLI 3 and Workbox v3. -workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); diff --git a/client/src/views/adm-attachments.vue b/client/src/views/adm-attachments.vue deleted file mode 100644 index b248bf4..0000000 --- a/client/src/views/adm-attachments.vue +++ /dev/null @@ -1,315 +0,0 @@ - - diff --git a/client/src/views/adm-global-logo.vue b/client/src/views/adm-global-logo.vue deleted file mode 100644 index 73c56aa..0000000 --- a/client/src/views/adm-global-logo.vue +++ /dev/null @@ -1,282 +0,0 @@ - - diff --git a/client/src/views/adm-global-seeds.vue b/client/src/views/adm-global-seeds.vue deleted file mode 100644 index 65e165a..0000000 --- a/client/src/views/adm-global-seeds.vue +++ /dev/null @@ -1,298 +0,0 @@ - - diff --git a/client/src/views/adm-global-select-templates.vue b/client/src/views/adm-global-select-templates.vue deleted file mode 100644 index 41340ca..0000000 --- a/client/src/views/adm-global-select-templates.vue +++ /dev/null @@ -1,479 +0,0 @@ - - diff --git a/client/src/views/adm-global-settings.vue b/client/src/views/adm-global-settings.vue deleted file mode 100644 index 33ebb5a..0000000 --- a/client/src/views/adm-global-settings.vue +++ /dev/null @@ -1,764 +0,0 @@ - - diff --git a/client/src/views/adm-history.vue b/client/src/views/adm-history.vue deleted file mode 100644 index 47239a1..0000000 --- a/client/src/views/adm-history.vue +++ /dev/null @@ -1,68 +0,0 @@ - - - diff --git a/client/src/views/adm-import.vue b/client/src/views/adm-import.vue deleted file mode 100644 index f39de61..0000000 --- a/client/src/views/adm-import.vue +++ /dev/null @@ -1,635 +0,0 @@ - - diff --git a/client/src/views/adm-integration.vue b/client/src/views/adm-integration.vue deleted file mode 100644 index 7a079dd..0000000 --- a/client/src/views/adm-integration.vue +++ /dev/null @@ -1,418 +0,0 @@ - - diff --git a/client/src/views/adm-integrations.vue b/client/src/views/adm-integrations.vue deleted file mode 100644 index 07ab721..0000000 --- a/client/src/views/adm-integrations.vue +++ /dev/null @@ -1,84 +0,0 @@ - - diff --git a/client/src/views/adm-report-templates.vue b/client/src/views/adm-report-templates.vue deleted file mode 100644 index aedad99..0000000 --- a/client/src/views/adm-report-templates.vue +++ /dev/null @@ -1,119 +0,0 @@ - - - diff --git a/client/src/views/adm-translation.vue b/client/src/views/adm-translation.vue deleted file mode 100644 index c0befa9..0000000 --- a/client/src/views/adm-translation.vue +++ /dev/null @@ -1,626 +0,0 @@ - - diff --git a/client/src/views/adm-translations.vue b/client/src/views/adm-translations.vue deleted file mode 100644 index 3ef994a..0000000 --- a/client/src/views/adm-translations.vue +++ /dev/null @@ -1,119 +0,0 @@ - - diff --git a/client/src/views/adm-user.vue b/client/src/views/adm-user.vue deleted file mode 100644 index fe738c6..0000000 --- a/client/src/views/adm-user.vue +++ /dev/null @@ -1,1137 +0,0 @@ - - diff --git a/client/src/views/adm-users.vue b/client/src/views/adm-users.vue deleted file mode 100644 index 9aa3415..0000000 --- a/client/src/views/adm-users.vue +++ /dev/null @@ -1,173 +0,0 @@ - - - diff --git a/client/src/views/biz-gzcase-list.vue b/client/src/views/biz-gzcase-list.vue deleted file mode 100644 index 1e0b102..0000000 --- a/client/src/views/biz-gzcase-list.vue +++ /dev/null @@ -1,177 +0,0 @@ - - - diff --git a/client/src/views/biz-gzcase.vue b/client/src/views/biz-gzcase.vue deleted file mode 100644 index d269ddd..0000000 --- a/client/src/views/biz-gzcase.vue +++ /dev/null @@ -1,613 +0,0 @@ - - diff --git a/client/src/views/biz-license-list.vue b/client/src/views/biz-license-list.vue deleted file mode 100644 index 47b5e6c..0000000 --- a/client/src/views/biz-license-list.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - diff --git a/client/src/views/biz-product-list.vue b/client/src/views/biz-product-list.vue deleted file mode 100644 index 60fd95a..0000000 --- a/client/src/views/biz-product-list.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - diff --git a/client/src/views/biz-product.vue b/client/src/views/biz-product.vue deleted file mode 100644 index 3f2d53c..0000000 --- a/client/src/views/biz-product.vue +++ /dev/null @@ -1,671 +0,0 @@ - - diff --git a/client/src/views/biz-purchase-list.vue b/client/src/views/biz-purchase-list.vue deleted file mode 100644 index 0eb7da9..0000000 --- a/client/src/views/biz-purchase-list.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - diff --git a/client/src/views/biz-purchase.vue b/client/src/views/biz-purchase.vue deleted file mode 100644 index 84933ad..0000000 --- a/client/src/views/biz-purchase.vue +++ /dev/null @@ -1,774 +0,0 @@ - - diff --git a/client/src/views/biz-subscription-server-list.vue b/client/src/views/biz-subscription-server-list.vue deleted file mode 100644 index b34c452..0000000 --- a/client/src/views/biz-subscription-server-list.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - diff --git a/client/src/views/biz-subscription-server.vue b/client/src/views/biz-subscription-server.vue deleted file mode 100644 index 845ad9f..0000000 --- a/client/src/views/biz-subscription-server.vue +++ /dev/null @@ -1,1487 +0,0 @@ - - diff --git a/client/src/views/biz-trial-request-list.vue b/client/src/views/biz-trial-request-list.vue deleted file mode 100644 index 3f566f4..0000000 --- a/client/src/views/biz-trial-request-list.vue +++ /dev/null @@ -1,183 +0,0 @@ - - - diff --git a/client/src/views/biz-vendor-list.vue b/client/src/views/biz-vendor-list.vue deleted file mode 100644 index a71912b..0000000 --- a/client/src/views/biz-vendor-list.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - diff --git a/client/src/views/biz-vendor.vue b/client/src/views/biz-vendor.vue deleted file mode 100644 index a74351f..0000000 --- a/client/src/views/biz-vendor.vue +++ /dev/null @@ -1,1209 +0,0 @@ - - diff --git a/client/src/views/cust-customer-note.vue b/client/src/views/cust-customer-note.vue deleted file mode 100644 index 57c0334..0000000 --- a/client/src/views/cust-customer-note.vue +++ /dev/null @@ -1,465 +0,0 @@ - - diff --git a/client/src/views/cust-customer-notes.vue b/client/src/views/cust-customer-notes.vue deleted file mode 100644 index 1fd41c8..0000000 --- a/client/src/views/cust-customer-notes.vue +++ /dev/null @@ -1,171 +0,0 @@ - - diff --git a/client/src/views/cust-customer.vue b/client/src/views/cust-customer.vue deleted file mode 100644 index bf03348..0000000 --- a/client/src/views/cust-customer.vue +++ /dev/null @@ -1,1420 +0,0 @@ - - diff --git a/client/src/views/cust-customers.vue b/client/src/views/cust-customers.vue deleted file mode 100644 index a7457b6..0000000 --- a/client/src/views/cust-customers.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - diff --git a/client/src/views/cust-head-office.vue b/client/src/views/cust-head-office.vue deleted file mode 100644 index 4fa400e..0000000 --- a/client/src/views/cust-head-office.vue +++ /dev/null @@ -1,1339 +0,0 @@ - - diff --git a/client/src/views/cust-head-offices.vue b/client/src/views/cust-head-offices.vue deleted file mode 100644 index 44108af..0000000 --- a/client/src/views/cust-head-offices.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - diff --git a/client/src/views/cust-user.vue b/client/src/views/cust-user.vue deleted file mode 100644 index 5ff877c..0000000 --- a/client/src/views/cust-user.vue +++ /dev/null @@ -1,1084 +0,0 @@ - - diff --git a/client/src/views/cust-users.vue b/client/src/views/cust-users.vue deleted file mode 100644 index b2bb1b7..0000000 --- a/client/src/views/cust-users.vue +++ /dev/null @@ -1,157 +0,0 @@ - - - diff --git a/client/src/views/customer-notify-subscription.vue b/client/src/views/customer-notify-subscription.vue deleted file mode 100644 index 2ee089f..0000000 --- a/client/src/views/customer-notify-subscription.vue +++ /dev/null @@ -1,1353 +0,0 @@ - - diff --git a/client/src/views/customer-notify-subscriptions.vue b/client/src/views/customer-notify-subscriptions.vue deleted file mode 100644 index bf1d5f1..0000000 --- a/client/src/views/customer-notify-subscriptions.vue +++ /dev/null @@ -1,238 +0,0 @@ - - diff --git a/client/src/views/home-dashboard.vue b/client/src/views/home-dashboard.vue deleted file mode 100644 index 1e6bcff..0000000 --- a/client/src/views/home-dashboard.vue +++ /dev/null @@ -1,381 +0,0 @@ - - - diff --git a/client/src/views/home-memo.vue b/client/src/views/home-memo.vue deleted file mode 100644 index 377e1e6..0000000 --- a/client/src/views/home-memo.vue +++ /dev/null @@ -1,689 +0,0 @@ - - diff --git a/client/src/views/home-memos.vue b/client/src/views/home-memos.vue deleted file mode 100644 index b8c41f4..0000000 --- a/client/src/views/home-memos.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - diff --git a/client/src/views/home-notifications.vue b/client/src/views/home-notifications.vue deleted file mode 100644 index abb2cc1..0000000 --- a/client/src/views/home-notifications.vue +++ /dev/null @@ -1,321 +0,0 @@ - - - diff --git a/client/src/views/home-notify-direct.vue b/client/src/views/home-notify-direct.vue deleted file mode 100644 index b71a4c2..0000000 --- a/client/src/views/home-notify-direct.vue +++ /dev/null @@ -1,310 +0,0 @@ - - diff --git a/client/src/views/home-notify-subscription.vue b/client/src/views/home-notify-subscription.vue deleted file mode 100644 index 320a302..0000000 --- a/client/src/views/home-notify-subscription.vue +++ /dev/null @@ -1,789 +0,0 @@ - - diff --git a/client/src/views/home-notify-subscriptions.vue b/client/src/views/home-notify-subscriptions.vue deleted file mode 100644 index 2808c76..0000000 --- a/client/src/views/home-notify-subscriptions.vue +++ /dev/null @@ -1,258 +0,0 @@ - - diff --git a/client/src/views/home-password.vue b/client/src/views/home-password.vue deleted file mode 100644 index b649b79..0000000 --- a/client/src/views/home-password.vue +++ /dev/null @@ -1,280 +0,0 @@ - - diff --git a/client/src/views/home-reminder.vue b/client/src/views/home-reminder.vue deleted file mode 100644 index ad78742..0000000 --- a/client/src/views/home-reminder.vue +++ /dev/null @@ -1,592 +0,0 @@ - - diff --git a/client/src/views/home-reminders.vue b/client/src/views/home-reminders.vue deleted file mode 100644 index 7dd7259..0000000 --- a/client/src/views/home-reminders.vue +++ /dev/null @@ -1,150 +0,0 @@ - - diff --git a/client/src/views/home-reset.vue b/client/src/views/home-reset.vue deleted file mode 100644 index 5a2b522..0000000 --- a/client/src/views/home-reset.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - diff --git a/client/src/views/home-review.vue b/client/src/views/home-review.vue deleted file mode 100644 index 9cb4340..0000000 --- a/client/src/views/home-review.vue +++ /dev/null @@ -1,676 +0,0 @@ - - diff --git a/client/src/views/home-reviews.vue b/client/src/views/home-reviews.vue deleted file mode 100644 index c2c06e9..0000000 --- a/client/src/views/home-reviews.vue +++ /dev/null @@ -1,181 +0,0 @@ - - diff --git a/client/src/views/home-schedule.vue b/client/src/views/home-schedule.vue deleted file mode 100644 index ee07f3c..0000000 --- a/client/src/views/home-schedule.vue +++ /dev/null @@ -1,1289 +0,0 @@ - - - diff --git a/client/src/views/home-search.vue b/client/src/views/home-search.vue deleted file mode 100644 index db5c80c..0000000 --- a/client/src/views/home-search.vue +++ /dev/null @@ -1,363 +0,0 @@ - - diff --git a/client/src/views/home-security.vue b/client/src/views/home-security.vue deleted file mode 100644 index 1a5fea9..0000000 --- a/client/src/views/home-security.vue +++ /dev/null @@ -1,273 +0,0 @@ - - diff --git a/client/src/views/home-user-settings.vue b/client/src/views/home-user-settings.vue deleted file mode 100644 index 458716a..0000000 --- a/client/src/views/home-user-settings.vue +++ /dev/null @@ -1,543 +0,0 @@ - - diff --git a/client/src/views/login.vue b/client/src/views/login.vue deleted file mode 100644 index 2d181b2..0000000 --- a/client/src/views/login.vue +++ /dev/null @@ -1,501 +0,0 @@ - - diff --git a/client/src/views/nofeaturesavailable.vue b/client/src/views/nofeaturesavailable.vue deleted file mode 100644 index fbcff02..0000000 --- a/client/src/views/nofeaturesavailable.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/client/src/views/notfound.vue b/client/src/views/notfound.vue deleted file mode 100644 index 23f5545..0000000 --- a/client/src/views/notfound.vue +++ /dev/null @@ -1,46 +0,0 @@ - - diff --git a/client/src/views/ops-backup.vue b/client/src/views/ops-backup.vue deleted file mode 100644 index 9c7488b..0000000 --- a/client/src/views/ops-backup.vue +++ /dev/null @@ -1,487 +0,0 @@ - - diff --git a/client/src/views/ops-customer-notify-log.vue b/client/src/views/ops-customer-notify-log.vue deleted file mode 100644 index e420f81..0000000 --- a/client/src/views/ops-customer-notify-log.vue +++ /dev/null @@ -1,78 +0,0 @@ - - diff --git a/client/src/views/ops-jobs.vue b/client/src/views/ops-jobs.vue deleted file mode 100644 index 538b226..0000000 --- a/client/src/views/ops-jobs.vue +++ /dev/null @@ -1,257 +0,0 @@ - - diff --git a/client/src/views/ops-log.vue b/client/src/views/ops-log.vue deleted file mode 100644 index bc1a19b..0000000 --- a/client/src/views/ops-log.vue +++ /dev/null @@ -1,236 +0,0 @@ - - diff --git a/client/src/views/ops-metrics.vue b/client/src/views/ops-metrics.vue deleted file mode 100644 index dbc2caa..0000000 --- a/client/src/views/ops-metrics.vue +++ /dev/null @@ -1,528 +0,0 @@ - - diff --git a/client/src/views/ops-notification-settings.vue b/client/src/views/ops-notification-settings.vue deleted file mode 100644 index f9e9547..0000000 --- a/client/src/views/ops-notification-settings.vue +++ /dev/null @@ -1,460 +0,0 @@ - - diff --git a/client/src/views/ops-notify-log.vue b/client/src/views/ops-notify-log.vue deleted file mode 100644 index 2a77a88..0000000 --- a/client/src/views/ops-notify-log.vue +++ /dev/null @@ -1,78 +0,0 @@ - - diff --git a/client/src/views/ops-notify-queue.vue b/client/src/views/ops-notify-queue.vue deleted file mode 100644 index 87ea3ad..0000000 --- a/client/src/views/ops-notify-queue.vue +++ /dev/null @@ -1,253 +0,0 @@ - - diff --git a/client/src/views/ops-profile.vue b/client/src/views/ops-profile.vue deleted file mode 100644 index 104d6db..0000000 --- a/client/src/views/ops-profile.vue +++ /dev/null @@ -1,125 +0,0 @@ - - diff --git a/client/src/views/ops-server-state.vue b/client/src/views/ops-server-state.vue deleted file mode 100644 index 790db64..0000000 --- a/client/src/views/ops-server-state.vue +++ /dev/null @@ -1,285 +0,0 @@ - - diff --git a/client/src/views/ops-view-configuration.vue b/client/src/views/ops-view-configuration.vue deleted file mode 100644 index 85cfcb2..0000000 --- a/client/src/views/ops-view-configuration.vue +++ /dev/null @@ -1,322 +0,0 @@ - - diff --git a/client/src/views/sock-about.vue b/client/src/views/sock-about.vue deleted file mode 100644 index 2c7a4a1..0000000 --- a/client/src/views/sock-about.vue +++ /dev/null @@ -1,379 +0,0 @@ - - diff --git a/client/src/views/sock-customize.vue b/client/src/views/sock-customize.vue deleted file mode 100644 index bb7ab74..0000000 --- a/client/src/views/sock-customize.vue +++ /dev/null @@ -1,451 +0,0 @@ - - diff --git a/client/src/views/sock-data-list-column-view.vue b/client/src/views/sock-data-list-column-view.vue deleted file mode 100644 index 43a9236..0000000 --- a/client/src/views/sock-data-list-column-view.vue +++ /dev/null @@ -1,477 +0,0 @@ - - diff --git a/client/src/views/sock-evaluate.vue b/client/src/views/sock-evaluate.vue deleted file mode 100644 index fc6e1f6..0000000 --- a/client/src/views/sock-evaluate.vue +++ /dev/null @@ -1,365 +0,0 @@ - - diff --git a/client/src/views/sock-history.vue b/client/src/views/sock-history.vue deleted file mode 100644 index 6b1c212..0000000 --- a/client/src/views/sock-history.vue +++ /dev/null @@ -1,470 +0,0 @@ - - diff --git a/client/src/views/sock-log.vue b/client/src/views/sock-log.vue deleted file mode 100644 index 8167a9a..0000000 --- a/client/src/views/sock-log.vue +++ /dev/null @@ -1,54 +0,0 @@ - - diff --git a/client/src/views/sock-open.vue b/client/src/views/sock-open.vue deleted file mode 100644 index 6de6dd8..0000000 --- a/client/src/views/sock-open.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/client/src/views/sock-report-edit.vue b/client/src/views/sock-report-edit.vue deleted file mode 100644 index 4ab7bf1..0000000 --- a/client/src/views/sock-report-edit.vue +++ /dev/null @@ -1,1163 +0,0 @@ - - diff --git a/client/src/views/sock-report-view.vue b/client/src/views/sock-report-view.vue deleted file mode 100644 index 434f7e6..0000000 --- a/client/src/views/sock-report-view.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - diff --git a/client/src/views/svc-schedule.vue b/client/src/views/svc-schedule.vue deleted file mode 100644 index 6fede6d..0000000 --- a/client/src/views/svc-schedule.vue +++ /dev/null @@ -1,1215 +0,0 @@ - - - diff --git a/client/vue.config.js b/client/vue.config.js deleted file mode 100644 index 176e827..0000000 --- a/client/vue.config.js +++ /dev/null @@ -1,53 +0,0 @@ -const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin"); - -module.exports = { - //https://medium.com/@mrodal/how-to-make-lazy-loading-actually-work-in-vue-cli-3-7f3f88cfb102 - chainWebpack: config => { - config.plugins.delete("prefetch"); - }, - - configureWebpack: { - devtool: "source-map", //THIS ENABLES DEBUGGING AT BROWSER!! - plugins: [ - new MonacoWebpackPlugin({ - // available options are documented at https://github.com/Microsoft/monaco-editor-webpack-plugin#options - //https://github.com/Microsoft/monaco-editor-webpack-plugin - // publicPath: "./js/", - languages: [ - "javascript", - "css", - "html", - "typescript", - "json", - "handlebars" - ] - }) - ] - }, - - transpileDependencies: ["vuetify"], - - pwa: { - //https://cli.vuejs.org/core-plugins/pwa.html#configuration - // manifestPath: "manifest.json", - name: "Sockeye", - themeColor: "#00205B", - msTileColor: "#ffc40d", - workboxPluginMode: "InjectManifest", - workboxOptions: { - swSrc: "./src/sw.js", - swDest: "service-worker.js" - }, - iconPaths: { - //disable automatic icons, they have the wrong ones basically, use this guide https://developers.google.com/web/fundamentals/design-and-ux/browser-customization - //and put them directly into the index.html in the public folder as it's the source one used - //and https://realfavicongenerator.net/ - //favicon32: null, - favicon16: null, - appleTouchIcon: null, - maskIcon: null, - msTileImage: null - } - }, - productionSourceMap: false -}; diff --git a/client/webpack.config.js b/client/webpack.config.js deleted file mode 100644 index 4bb38fa..0000000 --- a/client/webpack.config.js +++ /dev/null @@ -1,28 +0,0 @@ -// webpack.config.js - -module.exports = { - // optimization: { - // splitChunks: { - // chunks: "all" - // } - // }, - rules: [ - { - test: /\.s(c|a)ss$/, - use: [ - "vue-style-loader", - "css-loader", - { - loader: "sass-loader", - options: { - implementation: require("sass"), - sassOptions: { - fiber: require("fibers"), - indentedSyntax: true // optional - } - } - } - ] - } - ] -}; diff --git a/server/biz/GlobalBizSettingsBiz.cs b/server/biz/GlobalBizSettingsBiz.cs index 2c87642..2e20bb3 100644 --- a/server/biz/GlobalBizSettingsBiz.cs +++ b/server/biz/GlobalBizSettingsBiz.cs @@ -143,10 +143,12 @@ namespace Sockeye.Biz password = "b43698c255365ee739c05ba0d42855e96c2365c76bb2f9b9eb149cec7b52174c" }), Encoding.UTF8, "application/json"); - // var content = new StringContent("login=john&password=b43698c255365ee739c05ba0d42855e96c2365c76bb2f9b9eb149cec7b52174c", Encoding.UTF8, "application/json"); var client = ServiceProviderProvider.HttpClientFactory.CreateClient(); + + + //AUTHENTICATE var res = await client.PostAsync($"{URL_ROCKFISH}authenticate?login=john&password=b43698c255365ee739c05ba0d42855e96c2365c76bb2f9b9eb149cec7b52174c", content); var responseText = await res.Content.ReadAsStringAsync(); @@ -174,13 +176,33 @@ namespace Sockeye.Biz // }} + //CUSTOMERS + /* + [ + { + "active": false, + "lapsed": true, + "id": 1, + "name": "4PRINT" + }, + { + "active": true, + "lapsed": false, + "id": 118, + "name": "AAA TEST DEVELOPMENT" + },etc + */ + res = await client.PostAsync($"{URL_ROCKFISH}/api/customer/list", content); + responseText = await res.Content.ReadAsStringAsync(); + responseJson = JObject.Parse(responseText); + // } catch (Exception ex) { - var msg = "E1020 - Error authenticating to rockfish see log for details"; + var msg = "Error importing rockfish"; log.LogError(ex, msg); }

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 HhQIzF1Y`oH diff --git a/client/src/assets/img/sockeye.ico b/client/src/assets/img/sockeye.ico deleted file mode 100644 index 369e8bf02ba67d7e88ad061ffe9cc3fc4057a65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113054 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