From 4de83ec33eb0add081985c0efe7079dc3be0f3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 14 Feb 2020 10:34:05 -0300 Subject: [PATCH 01/46] refactor: update @ionic/angular to v5 (#482) --- package-lock.json | 22 +++++++++---------- package.json | 2 +- src/app/app.component.html | 6 ++--- .../components/close-popup/close-popup.html | 2 +- .../confirm-transaction.html | 2 +- .../custom-network-create.html | 4 ++-- .../custom-network-edit.html | 4 ++-- .../custom-network-edit.ts | 4 ++-- .../custom-network-manage.html | 6 +++-- .../enter-second-passphrase.html | 4 ++-- .../generate-entropy/generate-entropy.html | 2 +- .../passphrase-word-tester.html | 4 ++-- .../modals/wallet-backup/wallet-backup.html | 2 +- .../contact-create/contact-create.html | 4 ++-- .../contacts/contact-list/contact-list.html | 6 ++--- .../contacts/contact-list/contact-list.ts | 10 ++------- .../delegate-detail/delegate-detail.html | 2 +- src/app/pages/delegates/delegates.html | 3 ++- src/app/pages/intro/intro.html | 2 +- .../pages/network-status/network-status.html | 2 +- .../profile-create/profile-create.html | 12 +++++----- .../profiles/profile-create/profile-create.ts | 6 +++-- .../profile-signin/profile-signin.html | 6 ++--- .../profiles/profile-signin/profile-signin.ts | 4 +--- src/app/pages/settings/settings.html | 8 +++++-- .../transaction-receive.html | 2 +- .../transaction-response.html | 2 +- .../transaction-send/transaction-send.html | 2 +- .../transaction-show/transaction-show.html | 4 ++-- .../register-delegate/register-delegate.html | 8 +++++-- .../register-second-passphrase.html | 4 ++-- .../modal/set-label/set-label.html | 2 +- .../wallet-dashboard/wallet-dashboard.html | 14 +++++------- .../wallet-dashboard/wallet-dashboard.scss | 1 + .../wallet-dashboard/wallet-dashboard.ts | 4 ++-- .../wallet-import-manual.html | 4 ++-- .../wallet/wallet-import/wallet-import.html | 2 +- .../pages/wallet/wallet-list/wallet-list.html | 4 ++-- .../pages/wallet/wallet-list/wallet-list.ts | 2 +- .../top-wallet-details.html | 6 ++--- .../wallet-top-list/wallet-top-list.html | 2 +- src/assets/svg/arrow-down.svg | 1 + src/assets/svg/arrow-up.svg | 1 + 43 files changed, 101 insertions(+), 93 deletions(-) create mode 100644 src/assets/svg/arrow-down.svg create mode 100644 src/assets/svg/arrow-up.svg diff --git a/package-lock.json b/package-lock.json index 16ba26e65..d1a53fe50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3606,11 +3606,11 @@ } }, "@ionic/angular": { - "version": "4.11.10", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-4.11.10.tgz", - "integrity": "sha512-wdi4LJLUEfGK7jxYLNH+8Q2nMPBFCGaheRmQV4hQLQDx3RjVMFJKCsqAmgXXkLtUJfSDBY68r/dvWeYO645HaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.0.0.tgz", + "integrity": "sha512-LUcc3xj/yEminnMC4mRWcOVgXP0LjWS6MKA7GHHChsXHKvg7xhP39z2l88kmplTED3TH6bSD2HF060/jFkXaPg==", "requires": { - "@ionic/core": "4.11.10", + "@ionic/core": "5.0.0", "tslib": "^1.9.3" } }, @@ -3892,11 +3892,11 @@ } }, "@ionic/core": { - "version": "4.11.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-4.11.10.tgz", - "integrity": "sha512-PeonKl5E+VOTBeKDr83y0N/1wbfkZ5jV3PSJTsVPE3Q15LxGEO0GzBvVMgkmkssuqOI3WJPXxYWZVL8ejzSFOQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.0.0.tgz", + "integrity": "sha512-F+qSeL6Icy34dgpWvXe2ImwtlXrz6KbAthVpy3VSzlbZ5Du8V7xfe4RXXE2TtFsfV1lLOmX1KAgxbYnlMMlYzw==", "requires": { - "ionicons": "^4.6.3", + "ionicons": "^5.0.0", "tslib": "^1.10.0" } }, @@ -9880,9 +9880,9 @@ } }, "ionicons": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.6.3.tgz", - "integrity": "sha512-cgP+VIr2cTJpMfFyVHTerq6n2jeoiGboVoe3GlaAo5zoSBDAEXORwUZhv6m+lCyxlsHCS3nqPUE+MKyZU71t8Q==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.0.tgz", + "integrity": "sha512-tqKI5QyqCQOikbWYIA7teJPPXKfYZhEff8ARvbkOIh7PWbKI7sd0IBJcjhbw/mUilIA7U9Bcdm7qGBPhVWOCWg==" }, "ios-sim": { "version": "8.0.2", diff --git a/package.json b/package.json index 9819ea39a..cec565734 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@ionic-native/splash-screen": "^5.20.0", "@ionic-native/status-bar": "^5.20.0", "@ionic-native/vibration": "^5.20.0", - "@ionic/angular": "^4.11.10", + "@ionic/angular": "^5.0.0", "@ionic/storage": "^2.2.0", "@ngx-translate/core": "^12.0.0", "@ngx-translate/http-loader": "^4.0.0", diff --git a/src/app/app.component.html b/src/app/app.component.html index 545a2990c..e1dbb07ff 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -35,17 +35,17 @@

{{ "NETWORKS_PAGE.NETWORK_STATUS" | translate }} - + {{ "SETTINGS_PAGE.SETTINGS" | translate }} - + {{ "CONTACTS_PAGE.CONTACTS" | translate }} - + diff --git a/src/app/components/close-popup/close-popup.html b/src/app/components/close-popup/close-popup.html index f61cf6275..0349f09a5 100644 --- a/src/app/components/close-popup/close-popup.html +++ b/src/app/components/close-popup/close-popup.html @@ -1,7 +1,7 @@ diff --git a/src/app/modals/confirm-transaction/confirm-transaction.html b/src/app/modals/confirm-transaction/confirm-transaction.html index 6d0b518d0..e1e34b575 100644 --- a/src/app/modals/confirm-transaction/confirm-transaction.html +++ b/src/app/modals/confirm-transaction/confirm-transaction.html @@ -140,7 +140,7 @@ - + + {{ 'CUSTOM_NETWORK.CREATE_NETWORK' | translate }} @@ -51,7 +51,7 @@ - + + {{ 'CUSTOM_NETWORK.EDIT' | translate }} @@ -164,7 +164,7 @@ - + diff --git a/src/app/modals/custom-network-edit/custom-network-edit.ts b/src/app/modals/custom-network-edit/custom-network-edit.ts index 4a79b30e8..053b9cae1 100644 --- a/src/app/modals/custom-network-edit/custom-network-edit.ts +++ b/src/app/modals/custom-network-edit/custom-network-edit.ts @@ -20,7 +20,7 @@ export interface EditNetworkResult { templateUrl: "custom-network-edit.html", }) export class CustomNetworkEditModal { - public network: StoredNetwork = new StoredNetwork(); + public network: StoredNetwork; public apiPort: number; public p2pPort: number; public networkId: string; @@ -33,7 +33,7 @@ export class CustomNetworkEditModal { private translateService: TranslateService, private toastProvider: ToastProvider, ) { - this.network = this.navParams.get("network") || {}; + this.network = this.navParams.get("network") || new StoredNetwork(); this.networkId = this.navParams.get("id"); this.apiPort = this.network.isV2 ? this.network.apiPort diff --git a/src/app/modals/custom-network-manage/custom-network-manage.html b/src/app/modals/custom-network-manage/custom-network-manage.html index 9dd8e665b..ad7c2e166 100644 --- a/src/app/modals/custom-network-manage/custom-network-manage.html +++ b/src/app/modals/custom-network-manage/custom-network-manage.html @@ -1,4 +1,4 @@ - + {{ 'CUSTOM_NETWORK.MANAGE_NETWORKS' | translate }} - + diff --git a/src/app/modals/enter-second-passphrase/enter-second-passphrase.html b/src/app/modals/enter-second-passphrase/enter-second-passphrase.html index 6e708d40e..2f1c050a2 100644 --- a/src/app/modals/enter-second-passphrase/enter-second-passphrase.html +++ b/src/app/modals/enter-second-passphrase/enter-second-passphrase.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.SECOND_PASSPHRASE' | translate }} - + {{ 'CONFIRM' | translate }} diff --git a/src/app/modals/generate-entropy/generate-entropy.html b/src/app/modals/generate-entropy/generate-entropy.html index 1c50de688..cc6cc09a4 100644 --- a/src/app/modals/generate-entropy/generate-entropy.html +++ b/src/app/modals/generate-entropy/generate-entropy.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.GENERATE_ENTROPY' | translate }} diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html index e59b2b2be..f0d958ae4 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.CREATE_WALLET' | translate }} @@ -26,7 +26,7 @@ - + - + {{ title | translate }} diff --git a/src/app/pages/contacts/contact-create/contact-create.html b/src/app/pages/contacts/contact-create/contact-create.html index be95f02fc..c9f4274fe 100644 --- a/src/app/pages/contacts/contact-create/contact-create.html +++ b/src/app/pages/contacts/contact-create/contact-create.html @@ -1,4 +1,4 @@ - + @@ -39,7 +39,7 @@ - + + @@ -10,7 +10,7 @@ - + @@ -24,7 +24,7 @@ = new Subject(); constructor( - private platform: Platform, private navCtrl: NavController, private userDataProvider: UserDataProvider, private contactsProvider: ContactsProvider, @@ -52,9 +50,7 @@ export class ContactListPage { { text: translation.EDIT, role: "label", - icon: this.platform.is("ios") - ? "ios-create-outline" - : "md-create", + icon: "create", handler: () => { this.openEditPage(address); }, @@ -62,9 +58,7 @@ export class ContactListPage { { text: translation.DELETE, role: "label", - icon: this.platform.is("ios") - ? "ios-trash-outline" - : "md-trash", + icon: "trash", handler: () => { this.showDeleteConfirm(address); }, diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.html b/src/app/pages/delegates/delegate-detail/delegate-detail.html index 2c004980f..4a5c16952 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.html +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.html @@ -87,7 +87,7 @@

- + diff --git a/src/app/pages/delegates/delegates.html b/src/app/pages/delegates/delegates.html index 62631ca81..4644a6d70 100644 --- a/src/app/pages/delegates/delegates.html +++ b/src/app/pages/delegates/delegates.html @@ -1,4 +1,4 @@ - + @@ -16,6 +16,7 @@ animated="true" showCancelButton="false" placeholder="{{ 'SEARCH' | translate }}" + class="ion-no-shadow" > diff --git a/src/app/pages/intro/intro.html b/src/app/pages/intro/intro.html index 6e52054af..9431734ae 100644 --- a/src/app/pages/intro/intro.html +++ b/src/app/pages/intro/intro.html @@ -18,7 +18,7 @@

{{ slide.title }}

- +
diff --git a/src/app/pages/network-status/network-status.html b/src/app/pages/network-status/network-status.html index f882a4664..289677d43 100644 --- a/src/app/pages/network-status/network-status.html +++ b/src/app/pages/network-status/network-status.html @@ -1,4 +1,4 @@ - + diff --git a/src/app/pages/profiles/profile-create/profile-create.html b/src/app/pages/profiles/profile-create/profile-create.html index d240bf01a..4f565a860 100644 --- a/src/app/pages/profiles/profile-create/profile-create.html +++ b/src/app/pages/profiles/profile-create/profile-create.html @@ -1,4 +1,4 @@ - + @@ -48,11 +48,13 @@ >{{ 'NETWORKS_PAGE.NETWORK_TYPE' | translate }} - + {{ networkChoice.name }} - + item.id === detail, + ); + this.newProfile.networkId = this.activeNetworkChoice.id; } submitForm() { diff --git a/src/app/pages/profiles/profile-signin/profile-signin.html b/src/app/pages/profiles/profile-signin/profile-signin.html index 776e5920a..560ff0350 100644 --- a/src/app/pages/profiles/profile-signin/profile-signin.html +++ b/src/app/pages/profiles/profile-signin/profile-signin.html @@ -1,4 +1,4 @@ - + @@ -10,7 +10,7 @@ - + @@ -25,7 +25,7 @@ { if (!this.profileHasWallets(profileId)) { this.showDeleteConfirm(profileId); diff --git a/src/app/pages/settings/settings.html b/src/app/pages/settings/settings.html index ce43d12a9..80b1c8ff1 100644 --- a/src/app/pages/settings/settings.html +++ b/src/app/pages/settings/settings.html @@ -1,4 +1,4 @@ - + @@ -71,7 +71,11 @@ - + {{ 'SETTINGS_PAGE.CHANGE_PIN' | translate }} diff --git a/src/app/pages/transaction/transaction-receive/transaction-receive.html b/src/app/pages/transaction/transaction-receive/transaction-receive.html index 5a60cf918..5f299861e 100644 --- a/src/app/pages/transaction/transaction-receive/transaction-receive.html +++ b/src/app/pages/transaction/transaction-receive/transaction-receive.html @@ -1,4 +1,4 @@ - + diff --git a/src/app/pages/transaction/transaction-response/transaction-response.html b/src/app/pages/transaction/transaction-response/transaction-response.html index e5d7f1514..98d7be5ca 100644 --- a/src/app/pages/transaction/transaction-response/transaction-response.html +++ b/src/app/pages/transaction/transaction-response/transaction-response.html @@ -1,4 +1,4 @@ - + {{ transaction?.getTypeLabel() | translate }} + diff --git a/src/app/pages/transaction/transaction-show/transaction-show.html b/src/app/pages/transaction/transaction-show/transaction-show.html index d2875d66a..066cf88db 100644 --- a/src/app/pages/transaction/transaction-show/transaction-show.html +++ b/src/app/pages/transaction/transaction-show/transaction-show.html @@ -1,4 +1,4 @@ - + @@ -6,7 +6,7 @@ {{ 'TRANSACTIONS_PAGE.TRANSACTION' | translate }} - + diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html index 83ab9000f..7ac723e1a 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html +++ b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html @@ -1,4 +1,4 @@ - + {{ 'DELEGATES_PAGE.REGISTER_DELEGATE' | translate }} @@ -32,7 +32,11 @@ required > - +

{{ 'DELEGATES_PAGE.USERNAME_ALREADY_EXISTS' | translate }} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html index 75a3bfdcf..0304a612e 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html +++ b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.SECOND_PASSPHRASE' | translate }} - +

{{ 'WALLETS_PAGE.BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT' | translate }} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html b/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html index ea3e4d7d4..c40e2d61c 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html +++ b/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.LABEL' | translate }} diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html index 212746209..c0c7149c2 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html @@ -1,9 +1,8 @@ - + {{ wallet?.username || wallet?.label || ('WALLETS_PAGE.MY_WALLET' | @@ -11,14 +10,13 @@ > - + @@ -128,13 +126,13 @@

diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss index cf88dc0ea..70a90e2af 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss @@ -34,6 +34,7 @@ .icon-rotate-right { transform: rotate(30deg); + --ionicon-stroke-width: 5px; } .transactions { diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts index cebc79d47..3c964a858 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts @@ -272,7 +272,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { { text: translation["TRANSACTIONS_PAGE.RECEIVE"], role: "receive", - icon: "arrow-round-down", + icon: "arrow-down", handler: () => { return this.openTransactionReceive(); }, @@ -282,7 +282,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { buttons.push({ text: translation["TRANSACTIONS_PAGE.SEND"], role: "send", - icon: "arrow-round-up", + icon: "arrow-up", handler: () => { return this.navCtrl.navigateForward( "/transaction/send", diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html index abb27f7a8..9987b7818 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html @@ -1,4 +1,4 @@ - + @@ -154,7 +154,7 @@ - + + diff --git a/src/app/pages/wallet/wallet-list/wallet-list.html b/src/app/pages/wallet/wallet-list/wallet-list.html index 5047b929a..9cbfcd86c 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.html +++ b/src/app/pages/wallet/wallet-list/wallet-list.html @@ -1,4 +1,4 @@ - + @@ -20,7 +20,7 @@ *ngIf="wallets?.length > 0" > - + diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 0d91c3e2e..e2954886e 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -139,7 +139,7 @@ export class WalletListPage implements OnDestroy { { text: translation["WALLETS_PAGE.SCAN_QRCODE"], role: "qrcode", - icon: "qr-scanner", + icon: "qr-code", handler: () => { this.presentWalletImport("qrcode"); }, diff --git a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html index 51bd26841..e9905b54b 100644 --- a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html +++ b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html @@ -1,4 +1,4 @@ - + @@ -90,14 +90,14 @@

diff --git a/src/app/pages/wallet/wallet-top-list/wallet-top-list.html b/src/app/pages/wallet/wallet-top-list/wallet-top-list.html index d1f23588d..82acba493 100644 --- a/src/app/pages/wallet/wallet-top-list/wallet-top-list.html +++ b/src/app/pages/wallet/wallet-top-list/wallet-top-list.html @@ -1,4 +1,4 @@ - + diff --git a/src/assets/svg/arrow-down.svg b/src/assets/svg/arrow-down.svg new file mode 100644 index 000000000..6ca542d33 --- /dev/null +++ b/src/assets/svg/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/arrow-up.svg b/src/assets/svg/arrow-up.svg new file mode 100644 index 000000000..e64e56cd9 --- /dev/null +++ b/src/assets/svg/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file From 97a0b2ef8f6f8443523a24945f58504f247e357b Mon Sep 17 00:00:00 2001 From: Alex Barnsley <8069294+alexbarnsley@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:20:43 +0000 Subject: [PATCH 02/46] chore: update codeowners (#498) --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 7fcdafa0c..6e36071ce 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @luciorubeens @alexbarnsley \ No newline at end of file +* @luciorubeens @clucasalcantara From ff6a85ad4d84fcf7dcaa523aa6b7c38c8a2152de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 14 Feb 2020 10:34:05 -0300 Subject: [PATCH 03/46] refactor: update @ionic/angular to v5 (#482) --- package-lock.json | 22 +++++++++---------- package.json | 2 +- src/app/app.component.html | 6 ++--- .../components/close-popup/close-popup.html | 2 +- .../confirm-transaction.html | 2 +- .../custom-network-create.html | 4 ++-- .../custom-network-edit.html | 4 ++-- .../custom-network-edit.ts | 4 ++-- .../custom-network-manage.html | 6 +++-- .../enter-second-passphrase.html | 4 ++-- .../generate-entropy/generate-entropy.html | 2 +- .../passphrase-word-tester.html | 4 ++-- .../modals/wallet-backup/wallet-backup.html | 2 +- .../contact-create/contact-create.html | 4 ++-- .../contacts/contact-list/contact-list.html | 6 ++--- .../contacts/contact-list/contact-list.ts | 10 ++------- .../delegate-detail/delegate-detail.html | 2 +- src/app/pages/delegates/delegates.html | 3 ++- src/app/pages/intro/intro.html | 2 +- .../pages/network-status/network-status.html | 2 +- .../profile-create/profile-create.html | 12 +++++----- .../profiles/profile-create/profile-create.ts | 6 +++-- .../profile-signin/profile-signin.html | 6 ++--- .../profiles/profile-signin/profile-signin.ts | 4 +--- src/app/pages/settings/settings.html | 8 +++++-- .../transaction-receive.html | 2 +- .../transaction-response.html | 2 +- .../transaction-send/transaction-send.html | 2 +- .../transaction-show/transaction-show.html | 4 ++-- .../register-delegate/register-delegate.html | 8 +++++-- .../register-second-passphrase.html | 4 ++-- .../modal/set-label/set-label.html | 2 +- .../wallet-dashboard/wallet-dashboard.html | 14 +++++------- .../wallet-dashboard/wallet-dashboard.scss | 1 + .../wallet-dashboard/wallet-dashboard.ts | 4 ++-- .../wallet-import-manual.html | 4 ++-- .../wallet/wallet-import/wallet-import.html | 2 +- .../pages/wallet/wallet-list/wallet-list.html | 4 ++-- .../pages/wallet/wallet-list/wallet-list.ts | 2 +- .../top-wallet-details.html | 6 ++--- .../wallet-top-list/wallet-top-list.html | 2 +- src/assets/svg/arrow-down.svg | 1 + src/assets/svg/arrow-up.svg | 1 + 43 files changed, 101 insertions(+), 93 deletions(-) create mode 100644 src/assets/svg/arrow-down.svg create mode 100644 src/assets/svg/arrow-up.svg diff --git a/package-lock.json b/package-lock.json index 16ba26e65..d1a53fe50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3606,11 +3606,11 @@ } }, "@ionic/angular": { - "version": "4.11.10", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-4.11.10.tgz", - "integrity": "sha512-wdi4LJLUEfGK7jxYLNH+8Q2nMPBFCGaheRmQV4hQLQDx3RjVMFJKCsqAmgXXkLtUJfSDBY68r/dvWeYO645HaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.0.0.tgz", + "integrity": "sha512-LUcc3xj/yEminnMC4mRWcOVgXP0LjWS6MKA7GHHChsXHKvg7xhP39z2l88kmplTED3TH6bSD2HF060/jFkXaPg==", "requires": { - "@ionic/core": "4.11.10", + "@ionic/core": "5.0.0", "tslib": "^1.9.3" } }, @@ -3892,11 +3892,11 @@ } }, "@ionic/core": { - "version": "4.11.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-4.11.10.tgz", - "integrity": "sha512-PeonKl5E+VOTBeKDr83y0N/1wbfkZ5jV3PSJTsVPE3Q15LxGEO0GzBvVMgkmkssuqOI3WJPXxYWZVL8ejzSFOQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.0.0.tgz", + "integrity": "sha512-F+qSeL6Icy34dgpWvXe2ImwtlXrz6KbAthVpy3VSzlbZ5Du8V7xfe4RXXE2TtFsfV1lLOmX1KAgxbYnlMMlYzw==", "requires": { - "ionicons": "^4.6.3", + "ionicons": "^5.0.0", "tslib": "^1.10.0" } }, @@ -9880,9 +9880,9 @@ } }, "ionicons": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.6.3.tgz", - "integrity": "sha512-cgP+VIr2cTJpMfFyVHTerq6n2jeoiGboVoe3GlaAo5zoSBDAEXORwUZhv6m+lCyxlsHCS3nqPUE+MKyZU71t8Q==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.0.tgz", + "integrity": "sha512-tqKI5QyqCQOikbWYIA7teJPPXKfYZhEff8ARvbkOIh7PWbKI7sd0IBJcjhbw/mUilIA7U9Bcdm7qGBPhVWOCWg==" }, "ios-sim": { "version": "8.0.2", diff --git a/package.json b/package.json index 01e2c465b..81deacec9 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@ionic-native/splash-screen": "^5.20.0", "@ionic-native/status-bar": "^5.20.0", "@ionic-native/vibration": "^5.20.0", - "@ionic/angular": "^4.11.10", + "@ionic/angular": "^5.0.0", "@ionic/storage": "^2.2.0", "@ngx-translate/core": "^12.0.0", "@ngx-translate/http-loader": "^4.0.0", diff --git a/src/app/app.component.html b/src/app/app.component.html index 545a2990c..e1dbb07ff 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -35,17 +35,17 @@

{{ "NETWORKS_PAGE.NETWORK_STATUS" | translate }} - + {{ "SETTINGS_PAGE.SETTINGS" | translate }} - + {{ "CONTACTS_PAGE.CONTACTS" | translate }} - + diff --git a/src/app/components/close-popup/close-popup.html b/src/app/components/close-popup/close-popup.html index f61cf6275..0349f09a5 100644 --- a/src/app/components/close-popup/close-popup.html +++ b/src/app/components/close-popup/close-popup.html @@ -1,7 +1,7 @@ diff --git a/src/app/modals/confirm-transaction/confirm-transaction.html b/src/app/modals/confirm-transaction/confirm-transaction.html index 6d0b518d0..e1e34b575 100644 --- a/src/app/modals/confirm-transaction/confirm-transaction.html +++ b/src/app/modals/confirm-transaction/confirm-transaction.html @@ -140,7 +140,7 @@ - + + {{ 'CUSTOM_NETWORK.CREATE_NETWORK' | translate }} @@ -51,7 +51,7 @@ - + + {{ 'CUSTOM_NETWORK.EDIT' | translate }} @@ -165,7 +165,7 @@ - + diff --git a/src/app/modals/custom-network-edit/custom-network-edit.ts b/src/app/modals/custom-network-edit/custom-network-edit.ts index 3fc54d0ae..4efe37c2a 100644 --- a/src/app/modals/custom-network-edit/custom-network-edit.ts +++ b/src/app/modals/custom-network-edit/custom-network-edit.ts @@ -20,7 +20,7 @@ export interface EditNetworkResult { templateUrl: "custom-network-edit.html", }) export class CustomNetworkEditModal { - public network: StoredNetwork = new StoredNetwork(); + public network: StoredNetwork; public apiPort: number; public p2pPort: number; public networkId: string; @@ -37,7 +37,7 @@ export class CustomNetworkEditModal { const defaultNetworksNames = this.userDataProvider.defaultNetworks.map( item => item.name, ); - this.network = this.navParams.get("network"); + this.network = this.navParams.get("network") || new StoredNetwork(); this.networkId = this.navParams.get("id"); this.isDefault = defaultNetworksNames.includes(this.network.name); diff --git a/src/app/modals/custom-network-manage/custom-network-manage.html b/src/app/modals/custom-network-manage/custom-network-manage.html index 9dd8e665b..ad7c2e166 100644 --- a/src/app/modals/custom-network-manage/custom-network-manage.html +++ b/src/app/modals/custom-network-manage/custom-network-manage.html @@ -1,4 +1,4 @@ - + {{ 'CUSTOM_NETWORK.MANAGE_NETWORKS' | translate }} - + diff --git a/src/app/modals/enter-second-passphrase/enter-second-passphrase.html b/src/app/modals/enter-second-passphrase/enter-second-passphrase.html index 6e708d40e..2f1c050a2 100644 --- a/src/app/modals/enter-second-passphrase/enter-second-passphrase.html +++ b/src/app/modals/enter-second-passphrase/enter-second-passphrase.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.SECOND_PASSPHRASE' | translate }} - + {{ 'CONFIRM' | translate }} diff --git a/src/app/modals/generate-entropy/generate-entropy.html b/src/app/modals/generate-entropy/generate-entropy.html index 1c50de688..cc6cc09a4 100644 --- a/src/app/modals/generate-entropy/generate-entropy.html +++ b/src/app/modals/generate-entropy/generate-entropy.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.GENERATE_ENTROPY' | translate }} diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html index e59b2b2be..f0d958ae4 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.CREATE_WALLET' | translate }} @@ -26,7 +26,7 @@ - + - + {{ title | translate }} diff --git a/src/app/pages/contacts/contact-create/contact-create.html b/src/app/pages/contacts/contact-create/contact-create.html index be95f02fc..c9f4274fe 100644 --- a/src/app/pages/contacts/contact-create/contact-create.html +++ b/src/app/pages/contacts/contact-create/contact-create.html @@ -1,4 +1,4 @@ - + @@ -39,7 +39,7 @@ - + + @@ -10,7 +10,7 @@ - + @@ -24,7 +24,7 @@ = new Subject(); constructor( - private platform: Platform, private navCtrl: NavController, private userDataProvider: UserDataProvider, private contactsProvider: ContactsProvider, @@ -52,9 +50,7 @@ export class ContactListPage { { text: translation.EDIT, role: "label", - icon: this.platform.is("ios") - ? "ios-create-outline" - : "md-create", + icon: "create", handler: () => { this.openEditPage(address); }, @@ -62,9 +58,7 @@ export class ContactListPage { { text: translation.DELETE, role: "label", - icon: this.platform.is("ios") - ? "ios-trash-outline" - : "md-trash", + icon: "trash", handler: () => { this.showDeleteConfirm(address); }, diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.html b/src/app/pages/delegates/delegate-detail/delegate-detail.html index 2c004980f..4a5c16952 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.html +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.html @@ -87,7 +87,7 @@

- + diff --git a/src/app/pages/delegates/delegates.html b/src/app/pages/delegates/delegates.html index e690e9cb0..e802e516c 100644 --- a/src/app/pages/delegates/delegates.html +++ b/src/app/pages/delegates/delegates.html @@ -1,4 +1,4 @@ - + @@ -16,6 +16,7 @@ animated="true" showCancelButton="false" placeholder="{{ 'SEARCH' | translate }}" + class="ion-no-shadow" > diff --git a/src/app/pages/intro/intro.html b/src/app/pages/intro/intro.html index 6e52054af..9431734ae 100644 --- a/src/app/pages/intro/intro.html +++ b/src/app/pages/intro/intro.html @@ -18,7 +18,7 @@

{{ slide.title }}

- +
diff --git a/src/app/pages/network-status/network-status.html b/src/app/pages/network-status/network-status.html index f882a4664..289677d43 100644 --- a/src/app/pages/network-status/network-status.html +++ b/src/app/pages/network-status/network-status.html @@ -1,4 +1,4 @@ - + diff --git a/src/app/pages/profiles/profile-create/profile-create.html b/src/app/pages/profiles/profile-create/profile-create.html index d240bf01a..4f565a860 100644 --- a/src/app/pages/profiles/profile-create/profile-create.html +++ b/src/app/pages/profiles/profile-create/profile-create.html @@ -1,4 +1,4 @@ - + @@ -48,11 +48,13 @@ >{{ 'NETWORKS_PAGE.NETWORK_TYPE' | translate }} - + {{ networkChoice.name }} - + item.id === detail, + ); + this.newProfile.networkId = this.activeNetworkChoice.id; } submitForm() { diff --git a/src/app/pages/profiles/profile-signin/profile-signin.html b/src/app/pages/profiles/profile-signin/profile-signin.html index 776e5920a..560ff0350 100644 --- a/src/app/pages/profiles/profile-signin/profile-signin.html +++ b/src/app/pages/profiles/profile-signin/profile-signin.html @@ -1,4 +1,4 @@ - + @@ -10,7 +10,7 @@ - + @@ -25,7 +25,7 @@ { if (!this.profileHasWallets(profileId)) { this.showDeleteConfirm(profileId); diff --git a/src/app/pages/settings/settings.html b/src/app/pages/settings/settings.html index ce43d12a9..80b1c8ff1 100644 --- a/src/app/pages/settings/settings.html +++ b/src/app/pages/settings/settings.html @@ -1,4 +1,4 @@ - + @@ -71,7 +71,11 @@ - + {{ 'SETTINGS_PAGE.CHANGE_PIN' | translate }} diff --git a/src/app/pages/transaction/transaction-receive/transaction-receive.html b/src/app/pages/transaction/transaction-receive/transaction-receive.html index fdb2b4c28..0f06204b4 100644 --- a/src/app/pages/transaction/transaction-receive/transaction-receive.html +++ b/src/app/pages/transaction/transaction-receive/transaction-receive.html @@ -1,4 +1,4 @@ - + diff --git a/src/app/pages/transaction/transaction-response/transaction-response.html b/src/app/pages/transaction/transaction-response/transaction-response.html index e5d7f1514..98d7be5ca 100644 --- a/src/app/pages/transaction/transaction-response/transaction-response.html +++ b/src/app/pages/transaction/transaction-response/transaction-response.html @@ -1,4 +1,4 @@ - + {{ transaction?.getTypeLabel() | translate }} + diff --git a/src/app/pages/transaction/transaction-show/transaction-show.html b/src/app/pages/transaction/transaction-show/transaction-show.html index eb54705b6..1b866c78c 100644 --- a/src/app/pages/transaction/transaction-show/transaction-show.html +++ b/src/app/pages/transaction/transaction-show/transaction-show.html @@ -1,4 +1,4 @@ - + @@ -6,7 +6,7 @@ {{ 'TRANSACTIONS_PAGE.TRANSACTION' | translate }} - + diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html index 83ab9000f..7ac723e1a 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html +++ b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html @@ -1,4 +1,4 @@ - + {{ 'DELEGATES_PAGE.REGISTER_DELEGATE' | translate }} @@ -32,7 +32,11 @@ required > - +

{{ 'DELEGATES_PAGE.USERNAME_ALREADY_EXISTS' | translate }} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html index 75a3bfdcf..0304a612e 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html +++ b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.SECOND_PASSPHRASE' | translate }} - +

{{ 'WALLETS_PAGE.BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT' | translate }} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html b/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html index ea3e4d7d4..c40e2d61c 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html +++ b/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.html @@ -1,4 +1,4 @@ - + {{ 'WALLETS_PAGE.LABEL' | translate }} diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html index 212746209..c0c7149c2 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html @@ -1,9 +1,8 @@ - + {{ wallet?.username || wallet?.label || ('WALLETS_PAGE.MY_WALLET' | @@ -11,14 +10,13 @@ > - + @@ -128,13 +126,13 @@

diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss index cf88dc0ea..70a90e2af 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.scss @@ -34,6 +34,7 @@ .icon-rotate-right { transform: rotate(30deg); + --ionicon-stroke-width: 5px; } .transactions { diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts index 0eb52cd79..fd2ce9c4f 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts @@ -272,7 +272,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { { text: translation["TRANSACTIONS_PAGE.RECEIVE"], role: "receive", - icon: "arrow-round-down", + icon: "arrow-down", handler: () => { return this.openTransactionReceive(); }, @@ -282,7 +282,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { buttons.push({ text: translation["TRANSACTIONS_PAGE.SEND"], role: "send", - icon: "arrow-round-up", + icon: "arrow-up", handler: () => { return this.navCtrl.navigateForward( "/transaction/send", diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html index abb27f7a8..9987b7818 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html @@ -1,4 +1,4 @@ - + @@ -154,7 +154,7 @@ - + + diff --git a/src/app/pages/wallet/wallet-list/wallet-list.html b/src/app/pages/wallet/wallet-list/wallet-list.html index 4c573ee2f..3874549c2 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.html +++ b/src/app/pages/wallet/wallet-list/wallet-list.html @@ -1,4 +1,4 @@ - + @@ -20,7 +20,7 @@ *ngIf="wallets?.length > 0" > - + diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 0d91c3e2e..e2954886e 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -139,7 +139,7 @@ export class WalletListPage implements OnDestroy { { text: translation["WALLETS_PAGE.SCAN_QRCODE"], role: "qrcode", - icon: "qr-scanner", + icon: "qr-code", handler: () => { this.presentWalletImport("qrcode"); }, diff --git a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html index 51bd26841..e9905b54b 100644 --- a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html +++ b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html @@ -1,4 +1,4 @@ - + @@ -90,14 +90,14 @@

diff --git a/src/app/pages/wallet/wallet-top-list/wallet-top-list.html b/src/app/pages/wallet/wallet-top-list/wallet-top-list.html index d1f23588d..82acba493 100644 --- a/src/app/pages/wallet/wallet-top-list/wallet-top-list.html +++ b/src/app/pages/wallet/wallet-top-list/wallet-top-list.html @@ -1,4 +1,4 @@ - + diff --git a/src/assets/svg/arrow-down.svg b/src/assets/svg/arrow-down.svg new file mode 100644 index 000000000..6ca542d33 --- /dev/null +++ b/src/assets/svg/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/arrow-up.svg b/src/assets/svg/arrow-up.svg new file mode 100644 index 000000000..e64e56cd9 --- /dev/null +++ b/src/assets/svg/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file From 59841a0fa9b4d2299bfd7a0c0c1a3db6b5068582 Mon Sep 17 00:00:00 2001 From: Alex Barnsley <8069294+alexbarnsley@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:20:43 +0000 Subject: [PATCH 04/46] chore: update codeowners (#498) --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 7fcdafa0c..6e36071ce 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @luciorubeens @alexbarnsley \ No newline at end of file +* @luciorubeens @clucasalcantara From c318ea1b8c7af1c72bc5004066197435b370707b Mon Sep 17 00:00:00 2001 From: Breno Polanski Date: Wed, 26 Feb 2020 13:40:42 -0300 Subject: [PATCH 05/46] feat: add script to find missing translations (#481) --- missing-translations.js | 42 +++ package.json | 3 +- src/assets/i18n/zh.json | 634 ++++++++++++++++++++-------------------- 3 files changed, 361 insertions(+), 318 deletions(-) create mode 100755 missing-translations.js diff --git a/missing-translations.js b/missing-translations.js new file mode 100755 index 000000000..396c1c17e --- /dev/null +++ b/missing-translations.js @@ -0,0 +1,42 @@ +const fs = require('fs'); +const path = require('path'); + +const i18nDir = path.join(__dirname, '//src//assets//i18n'); +const masterFileName = 'en.json'; + +const getMissingKeys = (master, slave, missingKeys, pathPrefix) => { + if (!missingKeys) { + missingKeys = []; + } + + if (typeof master !== 'object') { + return missingKeys; + } + + Object.keys(master).forEach(key => { + const slaveValue = slave ? slave[key] : slave + const pathKey = pathPrefix ? `${pathPrefix}.${key}` : key; + if (!slaveValue) { + missingKeys.push(pathKey); + } + getMissingKeys(master[key], slaveValue, missingKeys, pathKey); + }); + + return missingKeys; +}; + +fs.readFile(path.join(i18nDir, masterFileName), 'utf8', (err, masterJson) => { + fs.readdir(i18nDir, (err, files) => { + files.filter(fileName => fileName !== masterFileName).forEach((fileName) => { + fs.readFile(path.join(i18nDir, fileName), 'utf8', (err, json) => { + const missingKeys = getMissingKeys(JSON.parse(masterJson), JSON.parse(json)); + if (missingKeys.length) { + console.log(`\n Missing translations in ${fileName} (${missingKeys.length}):\n`); + missingKeys.forEach(key => console.log(` ${key}`)); + } else { + console.log(`File ${fileName} has no missing translations`); + } + }); + }); + }); +}); diff --git a/package.json b/package.json index 81deacec9..183f166ea 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "debug:ios": "PLATFORM=ios ionic cordova run ios --address=0.0.0.0 --debug --consolelogs -l", "build:ios": "PLATFORM=ios ionic cordova build ios --prod --release", "debug:android": "ionic cordova run android --debug --consolelogs -l", - "build:android": "ionic cordova build android --prod --release" + "build:android": "ionic cordova build android --prod --release", + "missing-translations": "node missing-translations" }, "private": true, "dependencies": { diff --git a/src/assets/i18n/zh.json b/src/assets/i18n/zh.json index ac8b4e32f..571ca51da 100644 --- a/src/assets/i18n/zh.json +++ b/src/assets/i18n/zh.json @@ -1,335 +1,335 @@ -{ - "API": { - "BALANCE_TOO_LOW": "余额不足无法交易", - "BALANCE_TOO_LOW_DETAIL": "您钱包的余额不足! 所需交易费用为: {{ totalAmount }} ({{ amount }} + {{ fee }} 费用). 你的余额只有 {{ balance }}!", - "DESTINATION_ADDRESS_ERROR": "交易目的地地址 '{{ address }}' 不正确", - "PEER_LIST_ERROR": "无法获得同行列表", - "TRANSACTION_FAILED": "交易失败", - "TRANSACTION_SENT": "交易已发送" - }, - "ARE_YOU_SURE": "你确定吗?", - "BACK_BUTTON_TEXT": "后退", - "CANCEL": "取消", - "CONFIRM": "确定", - "CONTACTS_PAGE": { - "ADD_CONTACT_TEXT": "单击下面的按钮添加联系人", - "CONTACT": "联系人", - "CONTACTS": "联系人", - "INVALID_ADDRESS": "地址无效 '{{ address }}'!", - "CONTACT_NAME_EMPTY": "联系人姓名为空!", - "CONTACT_EXISTS_ADDRESS": "该地址已经存在联系人 '{{ address }}'!", - "CONTACT_NOT_EXISTS_ADDRESS": "该地址的联系人不存在 '{{ address }}'", - "CONTACT_EXISTS_NAME": "该姓名联系人已经存在 '{{ name }}'!", - "DELETE_CONTACT": "确定要删除该联系人吗 '{{ name }}'?", - "OVERWRITE_CONTACT": "该地址已经有叫 '{{ name }}' 的联系人存在,你确定要替换该联系人吗 '{{ newName }}'?" - }, - "COPIED_CLIPBOARD": "复制到剪贴板", - "COPY": "复制", - "COPY_CLIPBOARD_FAILED": "复制到剪切板失败", - "CREATE": "创建", - "CUSTOM_NETWORK": { - "ADDRESS_VERSION": "地址版本", - "API_SERVER_PORT": "种子服务器API端口", - "CHOOSE_EXISTING": "选择现有的自定义网络...", - "CONFIGURE": "组态", - "CONFIGURE_ERROR": "尝试从对等服务器检索网络设置时出错!", - "CONFIRM_DELETE": "您确定要删除此网络吗?", - "CUSTOM_NETWORK": "自定义网络", - "CREATE_NEW": "创建", - "CREATE_NETWORK": "创建自定义网络", - "DELETE_FAIL_NOT_EMPTY": "无法删除此网络,因为仍有使用此网络的配置文件。你必须先删除它们", - "DELETE_SUCCESSFUL": "成功删除网络!", - "EDIT": "编辑网络", - "EXPLORER": "浏览器", - "IS_VERSION_2": "版本2?", - "NAME": "姓名", - "NETHASH": "Nethash", - "MANAGE_NETWORKS": "管理自定义网络", - "MARKET_SYMBOL_NAME": "市场符号名称(用于获取美元,BTC等的价格)", - "NO_NETWORK_CONFIGURED": "尚未配置自定义网络。单击下面的按钮创建一个", - "OR_CREATE_NEW": "... 或创建一个新的自定义网络", - "SAVE_SUCCESSFUL": "成功保存了网络!", - "SEED_SERVER": "种子服务器URL", - "SEED_SERVER_IP": "种子服务器IP", - "SEED_SERVER_PORT": "种子服务器端口#", - "SYMBOL_NAME": "符号名称", - "TOKEN_NAME": "令牌名称" - }, - "DATE": "日期", - "DELEGATES_PAGE": { - "ACTIVE": "激活", - "APPROVAL": "批准", - "DELEGATE": "验证者”“验证人", - "DELEGATE_NAME": "代理姓名", - "DELEGATES": "代理", - "MISSED_BLOCKS": "错过的区块", - "NO_MATCHING_SEARCH": "没有匹配的代理", - "NOTE_COST_TEXT": "注册代理所需费用为", - "PRODUCED_BLOCKS": "区块建立完成", - "RANK": "Rank", - "REGISTER_DELEGATE": "注册代理", - "STANDBY": "待命", - "SUPPLY": "供应", - "TOTAL_FORGED": "全部伪造", - "UNVOTE": "取消选择", - "UNVOTE_CURRENT_DELEGATE": "你已经有了一个代表,你想首先取消 {{ delegate }} 吗?", +{ + "API": { + "BALANCE_TOO_LOW": "余额不足无法交易", + "BALANCE_TOO_LOW_DETAIL": "您钱包的余额不足! 所需交易费用为: {{ totalAmount }} ({{ amount }} + {{ fee }} 费用). 你的余额只有 {{ balance }}!", + "DESTINATION_ADDRESS_ERROR": "交易目的地地址 '{{ address }}' 不正确", + "PEER_LIST_ERROR": "无法获得同行列表", + "TRANSACTION_FAILED": "交易失败", + "TRANSACTION_SENT": "交易已发送" + }, + "ARE_YOU_SURE": "你确定吗?", + "BACK_BUTTON_TEXT": "后退", + "CANCEL": "取消", + "CONFIRM": "确定", + "CONTACTS_PAGE": { + "ADD_CONTACT_TEXT": "单击下面的按钮添加联系人", + "CONTACT": "联系人", + "CONTACTS": "联系人", + "INVALID_ADDRESS": "地址无效 '{{ address }}'!", + "CONTACT_NAME_EMPTY": "联系人姓名为空!", + "CONTACT_EXISTS_ADDRESS": "该地址已经存在联系人 '{{ address }}'!", + "CONTACT_NOT_EXISTS_ADDRESS": "该地址的联系人不存在 '{{ address }}'", + "CONTACT_EXISTS_NAME": "该姓名联系人已经存在 '{{ name }}'!", + "DELETE_CONTACT": "确定要删除该联系人吗 '{{ name }}'?", + "OVERWRITE_CONTACT": "该地址已经有叫 '{{ name }}' 的联系人存在,你确定要替换该联系人吗 '{{ newName }}'?" + }, + "COPIED_CLIPBOARD": "复制到剪贴板", + "COPY": "复制", + "COPY_CLIPBOARD_FAILED": "复制到剪切板失败", + "CREATE": "创建", + "CUSTOM_NETWORK": { + "ADDRESS_VERSION": "地址版本", + "API_SERVER_PORT": "种子服务器API端口", + "CHOOSE_EXISTING": "选择现有的自定义网络...", + "CONFIGURE": "组态", + "CONFIGURE_ERROR": "尝试从对等服务器检索网络设置时出错!", + "CONFIRM_DELETE": "您确定要删除此网络吗?", + "CUSTOM_NETWORK": "自定义网络", + "CREATE_NEW": "创建", + "CREATE_NETWORK": "创建自定义网络", + "DELETE_FAIL_NOT_EMPTY": "无法删除此网络,因为仍有使用此网络的配置文件。你必须先删除它们", + "DELETE_SUCCESSFUL": "成功删除网络!", + "EDIT": "编辑网络", + "EXPLORER": "浏览器", + "IS_VERSION_2": "版本2?", + "NAME": "姓名", + "NETHASH": "Nethash", + "MANAGE_NETWORKS": "管理自定义网络", + "MARKET_SYMBOL_NAME": "市场符号名称(用于获取美元,BTC等的价格)", + "NO_NETWORK_CONFIGURED": "尚未配置自定义网络。单击下面的按钮创建一个", + "OR_CREATE_NEW": "... 或创建一个新的自定义网络", + "SAVE_SUCCESSFUL": "成功保存了网络!", + "SEED_SERVER": "种子服务器URL", + "SEED_SERVER_IP": "种子服务器IP", + "SEED_SERVER_PORT": "种子服务器端口#", + "SYMBOL_NAME": "符号名称", + "TOKEN_NAME": "令牌名称" + }, + "DATE": "日期", + "DELEGATES_PAGE": { + "ACTIVE": "激活", + "APPROVAL": "批准", + "DELEGATE": "验证者”“验证人", + "DELEGATE_NAME": "代理姓名", + "DELEGATES": "代理", + "MISSED_BLOCKS": "错过的区块", + "NO_MATCHING_SEARCH": "没有匹配的代理", + "NOTE_COST_TEXT": "注册代理所需费用为", + "PRODUCED_BLOCKS": "区块建立完成", + "RANK": "Rank", + "REGISTER_DELEGATE": "注册代理", + "STANDBY": "待命", + "SUPPLY": "供应", + "TOTAL_FORGED": "全部伪造", + "UNVOTE": "取消选择", + "UNVOTE_CURRENT_DELEGATE": "你已经有了一个代表,你想首先取消 {{ delegate }} 吗?", - "UPDATING": "上传中", - "UPTIME": "正常运行时间", - "USERNAME_ALREADY_EXISTS": "此用户名已存在", - "VOTE": "选择", - "VOTED": "已选择", - "VOTE_FETCH_ERROR": "无法获取当前选择", - "WARNING_SELECT_WALLET_FIRST": "你需要挑选一个钱包然后进行选择" - }, - "DELETE": "删除", - "DONE": "完成", - "EDIT": "编辑", - "SIGN_OUT": "登出", - "EXIT_APP_TEXT": "退出APP?", - "FAILED": "失败", - "GENERAL": "一般", - "GENERATE": "生成", - "IMPORT": "导入", - "INTRO_PAGE": { - "FAST_EASY": "快速便捷", - "GET_STARTED": "开始", - "SECURITY": "安全", - "TEXT_1": "我们提供您在全球任何时间,任何地点管理ARK硬币所需的所有工具!", + "UPDATING": "上传中", + "UPTIME": "正常运行时间", + "USERNAME_ALREADY_EXISTS": "此用户名已存在", + "VOTE": "选择", + "VOTED": "已选择", + "VOTE_FETCH_ERROR": "无法获取当前选择", + "WARNING_SELECT_WALLET_FIRST": "你需要挑选一个钱包然后进行选择" + }, + "DELETE": "删除", + "DONE": "完成", + "EDIT": "编辑", + "SIGN_OUT": "登出", + "EXIT_APP_TEXT": "退出APP?", + "FAILED": "失败", + "GENERAL": "一般", + "GENERATE": "生成", + "IMPORT": "导入", + "INTRO_PAGE": { + "FAST_EASY": "快速便捷", + "GET_STARTED": "开始", + "SECURITY": "安全", + "TEXT_1": "我们提供您在全球任何时间,任何地点管理ARK硬币所需的所有工具!", - "TEXT_2": "使用PBKDF2算法和受PIN码保护的AES-256加密安全地存储所有敏感数据", + "TEXT_2": "使用PBKDF2算法和受PIN码保护的AES-256加密安全地存储所有敏感数据", - "TEXT_3": "在个人资料和钱包之间切换,查看余额,发送和接收资金等等", - "WELCOME": "欢迎加入我们" - }, - "SIGN_IN_PAGE": { - "ARK_WALLET": "ARK钱包", - "CREATE_PROFILE": "创建账户", - "SLOGAN": "欢迎来到ARK生态系统" - }, - "SIGN_OUT_PROFILE_TEXT": "确定要登出当前账户?", - "MARKETS_PAGE": { - "MARKET_CAP": "市值", - "MARKET_DATA": "市场数据", - "PERCENTAGE_CHANGE": "24小时走势", - "PRICE": "价格", - "VOLUME": "交易量" - }, - "NAME": "姓名", - "NETWORKS_PAGE": { - "CHANGE_PEER": "改变代理", - "CHOOSE_ONE": "选择一种网络类型", + "TEXT_3": "在个人资料和钱包之间切换,查看余额,发送和接收资金等等", + "WELCOME": "欢迎加入我们" + }, + "SIGN_IN_PAGE": { + "ARK_WALLET": "ARK钱包", + "CREATE_PROFILE": "创建账户", + "SLOGAN": "欢迎来到ARK生态系统" + }, + "SIGN_OUT_PROFILE_TEXT": "确定要登出当前账户?", + "MARKETS_PAGE": { + "MARKET_CAP": "市值", + "MARKET_DATA": "市场数据", + "PERCENTAGE_CHANGE": "24小时走势", + "PRICE": "价格", + "VOLUME": "交易量" + }, + "NAME": "姓名", + "NETWORKS_PAGE": { + "CHANGE_PEER": "改变代理", + "CHOOSE_ONE": "选择一种网络类型", - "DELAY": "延迟", - "HEIGHT": "高峰", - "LOOKING_GOOD_PEER": "寻找一个好的代理", - "PEER_SUCCESSFULLY_CHANGED": "成功更换代理", - "NETWORK_STATUS": "网络状况", - "NETWORK_TYPE": "网络类型", - "INTERNET_DESCONNECTED": "无法连接到互联网!", - "PEER": "代理" - }, - "NEXT": "下一步", - "NO": "不", - "PASSPHRASE_TEST": { - "INFO": "请输入密码中所需的单词以验证钱包创建.", + "DELAY": "延迟", + "HEIGHT": "高峰", + "LOOKING_GOOD_PEER": "寻找一个好的代理", + "PEER_SUCCESSFULLY_CHANGED": "成功更换代理", + "NETWORK_STATUS": "网络状况", + "NETWORK_TYPE": "网络类型", + "INTERNET_DESCONNECTED": "无法连接到互联网!", + "PEER": "代理" + }, + "NEXT": "下一步", + "NO": "不", + "PASSPHRASE_TEST": { + "INFO": "请输入密码中所需的单词以验证钱包创建.", - "WRONG_WORD": "键入的单词不正确", - "DEVNET_WORDS_NOTICE": "Devnet会自动填写单词" - }, - "PIN_CODE": { - "CONFIRM": "确认您的PIN码", - "CREATE": "创建您的PIN码", - "DEFAULT_MESSAGE": "输入您的PIN码", - "WRONG_PIN_MANY_TIMES": "您输入错误的PIN次数太多了!", + "WRONG_WORD": "键入的单词不正确", + "DEVNET_WORDS_NOTICE": "Devnet会自动填写单词" + }, + "PIN_CODE": { + "CONFIRM": "确认您的PIN码", + "CREATE": "创建您的PIN码", + "DEFAULT_MESSAGE": "输入您的PIN码", + "WRONG_PIN_MANY_TIMES": "您输入错误的PIN次数太多了!", - "WAIT_TO_TRY": "请稍等 {{ time }} 后重试", - "SIGN_IN_ERROR": "使用您的PIN登录时出现问题", - "PIN_CREATED_ERROR_TEXT": "使用您的PIN登录时出现问题", - "PIN_CREATED_TEXT": "您的PIN已创建", - "PIN_UPDATED_ERROR_TEXT": "更新PIN码时出现问题", - "PIN_UPDATED_TEXT": "您的个人识别码已更新", - "TYPE_PIN_ENCRYPT_PASSPHRASE": "输入您的PIN以加密密码", - "TYPE_PIN_REMOVE_WALLET": "输入您的PIN码以删除钱包", - "TYPE_PIN_SIGN_TRANSACTION": "输入您的PIN码以签署交易", - "UPDATING": "更新所有配置文件和钱包的PIN码...", + "WAIT_TO_TRY": "请稍等 {{ time }} 后重试", + "SIGN_IN_ERROR": "使用您的PIN登录时出现问题", + "PIN_CREATED_ERROR_TEXT": "使用您的PIN登录时出现问题", + "PIN_CREATED_TEXT": "您的PIN已创建", + "PIN_UPDATED_ERROR_TEXT": "更新PIN码时出现问题", + "PIN_UPDATED_TEXT": "您的个人识别码已更新", + "TYPE_PIN_ENCRYPT_PASSPHRASE": "输入您的PIN以加密密码", + "TYPE_PIN_REMOVE_WALLET": "输入您的PIN码以删除钱包", + "TYPE_PIN_SIGN_TRANSACTION": "输入您的PIN码以签署交易", + "UPDATING": "更新所有配置文件和钱包的PIN码...", - "WRONG": "请输入正确的PIN码", - "WEAK_PIN": "密码弱", - "WEAK_PIN_DETAIL": "您输入的PIN被认为很脆弱且易于猜测。您确定要使用它吗?" - }, - "PROFILES_PAGE": { - "PROFILENAME_ALREADY_EXISTS": "已经有一个名称的个人资料 '{{ name }}'!", + "WRONG": "请输入正确的PIN码", + "WEAK_PIN": "密码弱", + "WEAK_PIN_DETAIL": "您输入的PIN被认为很脆弱且易于猜测。您确定要使用它吗?" + }, + "PROFILES_PAGE": { + "PROFILENAME_ALREADY_EXISTS": "已经有一个名称的个人资料 '{{ name }}'!", - "ADD_PROFILE_ERROR": "无法添加个人资料", + "ADD_PROFILE_ERROR": "无法添加个人资料", - "ADD_PROFILE_TEXT": "单击下面的按钮以创建配置个人资料", - "CREATE_PROFILE": "创建个人资料", - "CUSTOM": "选择", - "DELETE_NOT_EMPTY": "您无法删除包含1个或多个钱包的配置文件", - "GET_STARTED": "开始", - "SIGN_IN": "登入" - }, - "QR_CODE": { - "INVALID_QR_ERROR": "扫描QR码时出现问题", - "INVALID_QRCODE": "此QR码没有有效的地址或密码", - "PERMISSION_DENIED": "QR相机被拒绝了", + "ADD_PROFILE_TEXT": "单击下面的按钮以创建配置个人资料", + "CREATE_PROFILE": "创建个人资料", + "CUSTOM": "选择", + "DELETE_NOT_EMPTY": "您无法删除包含1个或多个钱包的配置文件", + "GET_STARTED": "开始", + "SIGN_IN": "登入" + }, + "QR_CODE": { + "INVALID_QR_ERROR": "扫描QR码时出现问题", + "INVALID_QRCODE": "此QR码没有有效的地址或密码", + "PERMISSION_DENIED": "QR相机被拒绝了", - "PERMISSION_PERMANENTLY_DENIED": "QR相机永久否认。转到“设备设置”进行更改.", - "PROBLEM_TEXT": "扫描QR码时出现问题" - }, - "RENAME": "重命名", - "SAVE": "保存", - "SEARCH": "搜索", - "SETTINGS_PAGE": { - "ABOUT": "关于", - "APPEARANCE": "出现", - "APPLICATION": "应用", - "CHANGE_PIN": "更改PIN", - "CLEAR_DATA": "清除数据", - "CLEAR_DATA_TEXT": "您的所有数据(包括已创建的个人资料,钱包和联系人)都将从应用中删除,并重置为默认值", - "CURRENCY": "币种", - "DARK_MODE": "暗模式", - "LANGUAGE": "语言", - "PRIVACY_POLICY": "隐私政策", - "SECURITY": "安全", - "NOT_AVAILABLE_WATCH_ONLY": "不适用于仅限观看地址", - "NOTIFICATIONS": "通知", - "SETTINGS": "设置", - "VERSION": "版本", - "WALLET_BACKUP": "钱包备份", - "WORDLIST_LANGUAGE": "密码短语" - }, - "SHOW_ADVANCED": "显示高级", + "PERMISSION_PERMANENTLY_DENIED": "QR相机永久否认。转到“设备设置”进行更改.", + "PROBLEM_TEXT": "扫描QR码时出现问题" + }, + "RENAME": "重命名", + "SAVE": "保存", + "SEARCH": "搜索", + "SETTINGS_PAGE": { + "ABOUT": "关于", + "APPEARANCE": "出现", + "APPLICATION": "应用", + "CHANGE_PIN": "更改PIN", + "CLEAR_DATA": "清除数据", + "CLEAR_DATA_TEXT": "您的所有数据(包括已创建的个人资料,钱包和联系人)都将从应用中删除,并重置为默认值", + "CURRENCY": "币种", + "DARK_MODE": "暗模式", + "LANGUAGE": "语言", + "PRIVACY_POLICY": "隐私政策", + "SECURITY": "安全", + "NOT_AVAILABLE_WATCH_ONLY": "不适用于仅限观看地址", + "NOTIFICATIONS": "通知", + "SETTINGS": "设置", + "VERSION": "版本", + "WALLET_BACKUP": "钱包备份", + "WORDLIST_LANGUAGE": "密码短语" + }, + "SHOW_ADVANCED": "显示高级", - "SKIP": "跳过", - "STATUS": "状态", - "TRANSACTIONS_PAGE": { - "2ND_SIGNATURE_CREATION": "第二次签名创作", - "ADD_ADDRESS_TO_CONTACTS": "添加 {{ address }} 到联系人", - "AMOUNT": "金额", - "CONFIRMATIONS": "确认", - "COPY_TXID": "复制TXID", - "CREATE_TRANSACTION_ERROR": "无法创建交易。检查互联网连接", - "DELEGATE_REGISTRATION": "代理注册", - "ENCRYPT_SAVE_SECOND_PASSPHRASE": "您想要加密并保存第二个密码吗?", - "EXISTING_CONTACT": "联系人", - "EXISTING_WALLET": "钱包", - "FEE": "费用", - "FETCHING_TRANSACTIONS": "获取交易", + "SKIP": "跳过", + "STATUS": "状态", + "TRANSACTIONS_PAGE": { + "2ND_SIGNATURE_CREATION": "第二次签名创作", + "ADD_ADDRESS_TO_CONTACTS": "添加 {{ address }} 到联系人", + "AMOUNT": "金额", + "CONFIRMATIONS": "确认", + "COPY_TXID": "复制TXID", + "CREATE_TRANSACTION_ERROR": "无法创建交易。检查互联网连接", + "DELEGATE_REGISTRATION": "代理注册", + "ENCRYPT_SAVE_SECOND_PASSPHRASE": "您想要加密并保存第二个密码吗?", + "EXISTING_CONTACT": "联系人", + "EXISTING_WALLET": "钱包", + "FEE": "费用", + "FETCHING_TRANSACTIONS": "获取交易", - "FROM": "来自", - "ID": "ID", - "INVALID_ADDRESS_ERROR": "无效地址", - "INVALID_CONTACT_ERROR": "无效联系人", - "INVALID_FORM_ERROR": "表单数据无效", + "FROM": "来自", + "ID": "ID", + "INVALID_ADDRESS_ERROR": "无效地址", + "INVALID_CONTACT_ERROR": "无效联系人", + "INVALID_FORM_ERROR": "表单数据无效", - "MULTISIGNATURE_CREATION": "多重签名创作", - "NEW_CONTACT_NAME": "新联系人姓名 (可选)", - "NEW_WALLET_LABEL": "钱包标签 (可选)", + "MULTISIGNATURE_CREATION": "多重签名创作", + "NEW_CONTACT_NAME": "新联系人姓名 (可选)", + "NEW_WALLET_LABEL": "钱包标签 (可选)", - "OPEN_EXPLORER": "在浏览器打开", - "PERFORMING_DESTINATION_ADDRESS_CHECKS": "执行目标地址检查...", - "QRCODE_COPY": "点击地址将其复制到剪贴板或单击图标以共享QR码。您也可以选择输入金额,然后将其包含在QR码中.", + "OPEN_EXPLORER": "在浏览器打开", + "PERFORMING_DESTINATION_ADDRESS_CHECKS": "执行目标地址检查...", + "QRCODE_COPY": "点击地址将其复制到剪贴板或单击图标以共享QR码。您也可以选择输入金额,然后将其包含在QR码中.", - "RECEIVE": "接收", - "RECEIVE_TOKEN": "接收 {{ Token }}", - "RECEIVED": "已接收", - "RECEIVED_FROM": "来自", - "RECIPIENT": "接收人", - "SECOND_SIGNATURE_CREATION": "第二次签名创作", + "RECEIVE": "接收", + "RECEIVE_TOKEN": "接收 {{ Token }}", + "RECEIVED": "已接收", + "RECEIVED_FROM": "来自", + "RECIPIENT": "接收人", + "SECOND_SIGNATURE_CREATION": "第二次签名创作", - "SECOND_PASSPHRASE_NOT_ENTERED": "尚未输入第二个密码", + "SECOND_PASSPHRASE_NOT_ENTERED": "尚未输入第二个密码", - "SEND": "发送", - "SEND_ALL": "发送所有", - "SEND_TOKEN_TO_ADDRESS": "发送 {{ token }} 到 {{ address }}", - "SENT": "已发送", - "SENT_TO": "已发送到", - "SEND_TRANSACTION": "发送交易", - "SENT_SUCCESS": "交易发送成功!", - "SMART_BRIDGE": "SmartBridge (可选)", - "TO": "To", - "TRANSACTION": "交易" - }, - "TYPE": "类别", - "VALIDATION": { - "INVALID_ADDRESS": "此地址无效!", - "IS_OWN_ADDRESS": "您确定要发送到自己的地址吗?", - "NO_TRANSACTIONS": "看来地址没有任何交易。你确定它是正确的吗?", - "IS_NEO_ADDRESS": "看起来这是一个'NEO'地址。你确定它是正确的吗?", - "LABEL_EXISTS": "已经有一个带有标签的钱包 '{{ label }}'!", - "INVALID_WALLET": "钱包无效或未设置!" - }, - "WALLETS_PAGE": { - "ADD_WALLET_ERROR": "添加钱包失败", - "ADD_WALLET_TEXT": "要导入或创建钱包,请单击下面的按钮", - "ADDRESS": "地址", - "ALERT_SUCCESSFULLY_ENCRYPTED_SECOND_PASSPHRASE": "第二个密码已成功加密", - "BACKUP_ACCOUNT": "重要!安全地备份这个'秘密密码',没有这些词你无法恢复钱包或发送交易,所有ARK硬币将丢失。.", - "BACKUP_PASSPHRASE": "安全地备份此密码,没有这些词语您无法恢复您的钱包.", - "BACKUP_SECOND_PASSPHRASE": "安全地备份第二个密码短语,没有这些话就无法移动你的资金.", - "BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT": "您可以编辑您选择的密码。记得安全备份,你需要重新输入验证", - "BALANCE": "余额", - "BIP38_SEED": "BIP38 SEED", - "CONVERT_TO_FULL_WALLET": "转换为完整钱包", - "CREATE_WALLET": "创建钱包", - "CUSTOM_PASSPHRASE": "自定义(非| BIP39 |)密码", - "ENTER_SECRET_PASSPHRASE": "输入您的秘密密码", - "ENTER_ADDRESS": "输入地址", - "ENTROPY": "熵", - "ENTROPY_RANDOM_BYTES": "滑动以生成随机字节", - "GENERATE_ENTROPY": "生成熵", - "IMPORT_INVALID_ADDRESS": "此地址无法导入此配置文件", - "IMPORT_WALLET": "导入钱包", - "INVALID_ADDRESS": "无效地址", - "INVALID_MNEMONIC": "无效的助记符", - "INVALID_WORD_NUMBER": "单词数无效", - "KEEP_SAFE": "保持安全", - "LABEL": "标签", - "MY_WALLET": "我的钱包", - "NEW_WALLET_NAME": "新钱包名字", - "NEW_TRANSACTION": "在 {{ profile }} 新的交易", - "NO_TRANSACTIONS": "没有交易存在", - "TYPE_PASSPHRASE_OR_ADDRESS": "或手动输入您的|秘密密码|或您的|地址|", - "PASSPHRASE": "密码", - "PASSPHRASE_NOT_MATCH": "输入的密码与您刚刚获得的密码不匹配", - "PUBLIC_ADDRESS": "公共地址", - "PUBLIC_ADDRESS_SHARE": "公共地址 (分享)", - "PUBLIC_KEY": "公共密匙", - "PASSPHRASE_NOT_BELONG_TO_ADDRESS": "输入的密码短语不属于该地址 '{{ address }}'!", - "PASSPHRASE_NOT_BIP39": "您尚未输入有效的BIP-39密码", - "PASSPHRASE_UNSUPPORTED_INPUT": "隐藏模式下不支持的输入,请更改密码短语可见性", - "RE_ENTER_PASSPHRASE": "重新输入您的密码", - "REMOVE_WALLET": "移除钱包", - "REMOVE_WALLET_TEXT": "您的钱包将被删除。确保您已备份,您需要原始密码才能恢复", - "REMOVE_WATCH_ONLY_WALLET_TEXT": "钱包将被删除,您将无法再看到它", - "SCAN_QRCODE": "扫描二维码", - "SCAN_QRCODE_TEXT": "使用二维码导入您的地址或密码,只需指向并扫描即可", - "SECOND_BIP38_SEED": "第二个BIP38种子", - "SECOND_PASSPHRASE": "第二个密码", - "SECOND_WIF": "第二个WIF", - "SECRET_PASSPHRASE": "秘密密码", - "SECRET_PASSPHRASE_KEEP_SAFE": "秘密密码短语 (保持安全)", - "SEED": "种子", - "TOP_WALLETS": "富豪榜", - "TOTAL_BALANCE": "全部余额", - "USERNAME": "用户名", - "VALID_ADDRESS": "有效的地址", - "VALID_PASSPHRASE": "有效的密码", - "WALLETS": "钱包", - "WIF": "WIF" - }, - "WATCH_ONLY": "仅限观看", - "WEEK_DAY": { - "FRIDAY": "星期五", - "MONDAY": "星期一", - "SATURDAY": "星期六", - "SUNDAY": "星期日", - "THURSDAY": "星期四", - "TUESDAY": "星期二", - "WEDNESDAY": "星期三" - }, - "WORD": "文字", - "YES": "是" + "SEND": "发送", + "SEND_ALL": "发送所有", + "SEND_TOKEN_TO_ADDRESS": "发送 {{ token }} 到 {{ address }}", + "SENT": "已发送", + "SENT_TO": "已发送到", + "SEND_TRANSACTION": "发送交易", + "SENT_SUCCESS": "交易发送成功!", + "SMART_BRIDGE": "SmartBridge (可选)", + "TO": "To", + "TRANSACTION": "交易" + }, + "TYPE": "类别", + "VALIDATION": { + "INVALID_ADDRESS": "此地址无效!", + "IS_OWN_ADDRESS": "您确定要发送到自己的地址吗?", + "NO_TRANSACTIONS": "看来地址没有任何交易。你确定它是正确的吗?", + "IS_NEO_ADDRESS": "看起来这是一个'NEO'地址。你确定它是正确的吗?", + "LABEL_EXISTS": "已经有一个带有标签的钱包 '{{ label }}'!", + "INVALID_WALLET": "钱包无效或未设置!" + }, + "WALLETS_PAGE": { + "ADD_WALLET_ERROR": "添加钱包失败", + "ADD_WALLET_TEXT": "要导入或创建钱包,请单击下面的按钮", + "ADDRESS": "地址", + "ALERT_SUCCESSFULLY_ENCRYPTED_SECOND_PASSPHRASE": "第二个密码已成功加密", + "BACKUP_ACCOUNT": "重要!安全地备份这个'秘密密码',没有这些词你无法恢复钱包或发送交易,所有ARK硬币将丢失。.", + "BACKUP_PASSPHRASE": "安全地备份此密码,没有这些词语您无法恢复您的钱包.", + "BACKUP_SECOND_PASSPHRASE": "安全地备份第二个密码短语,没有这些话就无法移动你的资金.", + "BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT": "您可以编辑您选择的密码。记得安全备份,你需要重新输入验证", + "BALANCE": "余额", + "BIP38_SEED": "BIP38 SEED", + "CONVERT_TO_FULL_WALLET": "转换为完整钱包", + "CREATE_WALLET": "创建钱包", + "CUSTOM_PASSPHRASE": "自定义(非| BIP39 |)密码", + "ENTER_SECRET_PASSPHRASE": "输入您的秘密密码", + "ENTER_ADDRESS": "输入地址", + "ENTROPY": "熵", + "ENTROPY_RANDOM_BYTES": "滑动以生成随机字节", + "GENERATE_ENTROPY": "生成熵", + "IMPORT_INVALID_ADDRESS": "此地址无法导入此配置文件", + "IMPORT_WALLET": "导入钱包", + "INVALID_ADDRESS": "无效地址", + "INVALID_MNEMONIC": "无效的助记符", + "INVALID_WORD_NUMBER": "单词数无效", + "KEEP_SAFE": "保持安全", + "LABEL": "标签", + "MY_WALLET": "我的钱包", + "NEW_WALLET_NAME": "新钱包名字", + "NEW_TRANSACTION": "在 {{ profile }} 新的交易", + "NO_TRANSACTIONS": "没有交易存在", + "TYPE_PASSPHRASE_OR_ADDRESS": "或手动输入您的|秘密密码|或您的|地址|", + "PASSPHRASE": "密码", + "PASSPHRASE_NOT_MATCH": "输入的密码与您刚刚获得的密码不匹配", + "PUBLIC_ADDRESS": "公共地址", + "PUBLIC_ADDRESS_SHARE": "公共地址 (分享)", + "PUBLIC_KEY": "公共密匙", + "PASSPHRASE_NOT_BELONG_TO_ADDRESS": "输入的密码短语不属于该地址 '{{ address }}'!", + "PASSPHRASE_NOT_BIP39": "您尚未输入有效的BIP-39密码", + "PASSPHRASE_UNSUPPORTED_INPUT": "隐藏模式下不支持的输入,请更改密码短语可见性", + "RE_ENTER_PASSPHRASE": "重新输入您的密码", + "REMOVE_WALLET": "移除钱包", + "REMOVE_WALLET_TEXT": "您的钱包将被删除。确保您已备份,您需要原始密码才能恢复", + "REMOVE_WATCH_ONLY_WALLET_TEXT": "钱包将被删除,您将无法再看到它", + "SCAN_QRCODE": "扫描二维码", + "SCAN_QRCODE_TEXT": "使用二维码导入您的地址或密码,只需指向并扫描即可", + "SECOND_BIP38_SEED": "第二个BIP38种子", + "SECOND_PASSPHRASE": "第二个密码", + "SECOND_WIF": "第二个WIF", + "SECRET_PASSPHRASE": "秘密密码", + "SECRET_PASSPHRASE_KEEP_SAFE": "秘密密码短语 (保持安全)", + "SEED": "种子", + "TOP_WALLETS": "富豪榜", + "TOTAL_BALANCE": "全部余额", + "USERNAME": "用户名", + "VALID_ADDRESS": "有效的地址", + "VALID_PASSPHRASE": "有效的密码", + "WALLETS": "钱包", + "WIF": "WIF" + }, + "WATCH_ONLY": "仅限观看", + "WEEK_DAY": { + "FRIDAY": "星期五", + "MONDAY": "星期一", + "SATURDAY": "星期六", + "SUNDAY": "星期日", + "THURSDAY": "星期四", + "TUESDAY": "星期二", + "WEDNESDAY": "星期三" + }, + "WORD": "文字", + "YES": "是" } From 4a2694b979d562bdf58ae508be4029b43aaacf97 Mon Sep 17 00:00:00 2001 From: Breno Polanski Date: Wed, 26 Feb 2020 14:05:46 -0300 Subject: [PATCH 06/46] chore: update pt-br translation (#484) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update pt-br translation * Update pt-br.json Co-authored-by: Lúcio Rubens <4539235+luciorubeens@users.noreply.github.com> --- src/assets/i18n/pt-br.json | 123 +++++++++++++++++++++++++++++++++++-- 1 file changed, 117 insertions(+), 6 deletions(-) diff --git a/src/assets/i18n/pt-br.json b/src/assets/i18n/pt-br.json index ffde44176..411a848e0 100644 --- a/src/assets/i18n/pt-br.json +++ b/src/assets/i18n/pt-br.json @@ -14,12 +14,47 @@ "CONTACTS_PAGE": { "ADD_CONTACT_TEXT": "Clique no botão abaixo para adicionar um contato", "CONTACT": "Contato", - "CONTACTS": "Contatos" + "CONTACTS": "Contatos", + "INVALID_ADDRESS": "O endereço '{{ address }}' é inválido!", + "CONTACT_NAME_EMPTY": "O nome do contato está vazio!", + "CONTACT_EXISTS_ADDRESS": "Já existe um contato com o endereço '{{ address }}'!", + "CONTACT_NOT_EXISTS_ADDRESS": "Um contato com o endereço '{{ address }}' não existe!", + "CONTACT_EXISTS_NAME": "Já existe um contato com o nome '{{ name }}'!", + "DELETE_CONTACT": "Tem certeza de que deseja excluir o contato '{{ name }}'?", + "OVERWRITE_CONTACT": "Já existe um contato chamado '{{ name }}' com este endereço. Deseja sobrescrever o nome com '{{ newName }}'?" }, "COPIED_CLIPBOARD": "Copiado para área de transferência", "COPY": "Copiar", "COPY_CLIPBOARD_FAILED": "A cópia para área de transferência falhou", "CREATE": "Criar", + "CUSTOM_NETWORK": { + "ADDRESS_VERSION": "Versão do endereço", + "API_SERVER_PORT": "Porta da API do servidor Seed", + "CHOOSE_EXISTING": "Escolha uma rede personalizada existente...", + "CONFIGURE": "Configurar", + "CONFIGURE_ERROR": "Erro ao tentar recuperar as configurações de rede do seu servidor peer!", + "CONFIRM_DELETE": "Tem certeza de que deseja excluir esta rede?", + "CUSTOM_NETWORK": "Rede Personalizada", + "CREATE_NEW": "Criar", + "CREATE_NETWORK": "Criar Rede Personalizada", + "DELETE_FAIL_NOT_EMPTY": "Esta rede não pode ser excluída porque ainda existem perfis que usam essa rede. Você precisa excluí-los primeiro.", + "DELETE_SUCCESSFUL": "Rede excluída com sucesso!", + "EDIT": "Editar Rede", + "EXPLORER": "Explorer", + "IS_VERSION_2": "É a versão 2?", + "NAME": "Nome", + "NETHASH": "Nethash", + "MANAGE_NETWORKS": "Gerenciar Redes Personalizadas", + "MARKET_SYMBOL_NAME": "Nome do símbolo de mercado (para obter preços em USD, BTC, etc.)", + "NO_NETWORK_CONFIGURED": "Nenhuma rede personalizada foi configurada ainda. Clique no botão abaixo para criar uma.", + "OR_CREATE_NEW": "... ou crie uma nova rede personalizada", + "SAVE_SUCCESSFUL": "Rede salva com sucesso!", + "SEED_SERVER": "URL do servidor Seed", + "SEED_SERVER_IP": "IP do servidor Seed", + "SEED_SERVER_PORT": "Porta do Servidor Seed", + "SYMBOL_NAME": "Nome do símbolo", + "TOKEN_NAME": "Nome do token" + }, "DATE": "Data", "DELEGATES_PAGE": { "ACTIVE": "Ativo", @@ -42,6 +77,7 @@ "UPTIME": "Tempo de atividade", "USERNAME_ALREADY_EXISTS": "Este username já está sendo utilizado", "VOTE": "Voto", + "VOTED": "Votado", "VOTE_FETCH_ERROR": "Não foi possível buscar o voto atual", "WARNING_SELECT_WALLET_FIRST": "Você precisa selecionar uma carteira primeiro para ativar o processo de voto" }, @@ -54,6 +90,8 @@ "GENERAL": "Geral", "GENERATE": "Gerar", "IMPORT": "Importar", + "IMPORT_ADDRESS": "Importar Endereço", + "IMPORT_PASSPHRASE": "Importar frase secreta", "INTRO_PAGE": { "FAST_EASY": "Rápido e Fácil", "GET_STARTED": "Iniciar", @@ -83,18 +121,21 @@ "DELAY": "Atraso", "HEIGHT": "Altura", "LOOKING_GOOD_PEER": "Procurando por um bom peer", + "NO_GOOD_PEER": "Nenhum bom peer foi encontrado!", "PEER_SUCCESSFULLY_CHANGED": "Peer alterado com sucesso", "NETWORK_STATUS": "Status de Rede", "NETWORK_TYPE": "Tipo de Rede", "INTERNET_DESCONNECTED": "Não foi possível conectar-se à Internet", "PEER": "Peer", + "RESET_TO_SEED": "Redefinir para Seed Peer", "VERSION": "Versão" }, "NEXT": "Próximo", "NO": "Não", "PASSPHRASE_TEST": { "INFO": "Por favor, digite as palavras da sua frase secreta para validar a criação da carteira.", - "WRONG_WORD": "A palavra digitada está incorreta" + "WRONG_WORD": "A palavra digitada está incorreta", + "DEVNET_WORDS_NOTICE": "As palavras são preenchidas automaticamente para Devnet" }, "PIN_CODE": { "CONFIRM": "Confirme seu PIN", @@ -108,13 +149,31 @@ "PIN_UPDATED_ERROR_TEXT": "Houve um problema ao tentar atualizar o seu PIN", "PIN_UPDATED_TEXT": "Seu PIN foi atualizado com sucesso", "TYPE_PIN_ENCRYPT_PASSPHRASE": "Digite seu PIN para encriptar a frase secreta", + "TYPE_PIN_REMOVE_WALLET": "Digite seu PIN para remover a carteira", "TYPE_PIN_SIGN_TRANSACTION": "Digite seu PIN para assinar a transação", - "WRONG": "Por favor informe o PIN correto" + "UPDATING": "Atualizando o código PIN para todos os perfis e carteiras...", + "WRONG": "Por favor informe o PIN correto", + "WEAK_PIN": "PIN Fraco", + "WEAK_PIN_DETAIL": "O PIN digitado é considerado fraco e fácil de adivinhar. Tem certeza de que deseja usá-lo?" + }, + "INPUT_FEE": { + "MIN": "Mín", + "AVERAGE": "Média", + "MAX": "Max", + "LOW_FEE_NOTICE": "Transações com taxas baixas podem nunca ser confirmadas", + "ADVANCED_NOTICE": "Cuidado com a taxa que você escolher, pois ela custará mais do que o necessário se for muito alta", + "STATIC_FEE": "A taxa de rede foi definida com o valor estático de {{ fee }}", + "ERROR": { + "MORE_THAN_MAXIMUM": "A taxa máxima é {{ symbol }} {{ fee }}" + } }, + "PULL_REFRESH": "Puxe para atualizar", "PROFILES_PAGE": { + "PROFILENAME_ALREADY_EXISTS": "Já existe um perfil com o nome '{{ name }}'!", "ADD_PROFILE_ERROR": "Não foi possível adicionar o perfil", "ADD_PROFILE_TEXT": "Clique no botão abaixo para criar um perfil", "CREATE_PROFILE": "Criar perfil", + "CUSTOM": "Personalizado", "DELETE_NOT_EMPTY": "Você não pode deletar um perfil que possui 1 ou mais carteiras", "GET_STARTED": "Iniciar", "SIGN_IN": "Registrar" @@ -127,6 +186,7 @@ "PROBLEM_TEXT": "Houve um problema ao escanear o Código QR" }, "RENAME": "Renomear", + "REFRESHING": "Atualizando", "SAVE": "Salvar", "SEARCH": "Buscar", "SETTINGS_PAGE": { @@ -143,9 +203,11 @@ "SECURITY": "Segurança", "SELECT_WALLET_FIRST_TEXT": "Selecione primeiro uma carteira na página de carteiras", "NOT_AVAILABLE_WATCH_ONLY": "Não disponível para carteiras no modo Watch Only", + "NOTIFICATIONS": "Notificações", "SETTINGS": "Configurações", "VERSION": "Versão", - "WALLET_BACKUP": "Backup da Carteira" + "WALLET_BACKUP": "Backup da Carteira", + "WORDLIST_LANGUAGE": "Idioma da frase secreta" }, "SHOW_ADVANCED": "Opções avançadas", "SKIP": "Pular", @@ -155,11 +217,12 @@ "ADD_ADDRESS_TO_CONTACTS": "Adicionar {{ address }} aos contatos", "AMOUNT": "Quantia", "CONFIRMATIONS": "Confirmações", - "NEW_CONTACT_NAME": "Novo nome do contato (optional)", "COPY_TXID": "Copiar TXID", "CREATE_TRANSACTION_ERROR": "Não foi possível criar transação. Verifique sua conexão com a internet.", "DELEGATE_REGISTRATION": "Registro de Delegado", "ENCRYPT_SAVE_SECOND_PASSPHRASE": "Deseja criptografar e salvar sua frase secreta secundária?", + "EXISTING_CONTACT": "Contato", + "EXISTING_WALLET": "Carteira", "FEE": "Taxa", "FETCHING_TRANSACTIONS": "Obtendo transações", "FROM": "Remetente", @@ -168,6 +231,10 @@ "INVALID_CONTACT_ERROR": "Contato Inválido", "INVALID_FORM_ERROR": "Dados de Formulário Inválidos", "MULTISIGNATURE_CREATION": "Criação Multi-Assinatura", + "MULTISIGNATURE_REGISTRATION": "Registro de várias assinaturas", + "NEW_CONTACT_NAME": "Novo nome do contato (opcional)", + "NEW_WALLET_LABEL": "Rótulo da carteira (opcional)", + "PERFORMING_DESTINATION_ADDRESS_CHECKS": "Realizando verificações no endereço de destino...", "OPEN_EXPLORER": "Abrir no Explorer", "QRCODE_COPY": "Toque no endereço para copiá-lo para a área de transferência ou clique no ícone para compartilhar o código QR. Opcionalmente, você também pode inserir um valor que será incluído no código QR.", "RECEIVE": "Receber", @@ -186,9 +253,36 @@ "SENT_SUCCESS": "Transação enviada com sucesso!", "SMART_BRIDGE": "SmartBridge (opcional)", "TO": "Destinatário", - "TRANSACTION": "Transação" + "TRANSACTION": "Transação", + "WARNING": { + "BROADCAST": "A transação foi transmitida para outros peers. Pode não ser aceito por eles" + }, + "ERROR": { + "NOTHING_SENT": "Não foi possível enviar a transação. Verifique sua conexão de rede ou altere o peer", + "FEE_TOO_LOW": "Não foi possível enviar a transação porque a taxa ({{ fee }}) está muito baixa" + }, + "IPFS": "IPFS", + "MULTI_PAYMENT": "Pagamento Múltiplo", + "DELEGATE_RESIGNATION": "Renúncia de Delegado", + "HTLC_LOCK": "Bloqueio de tempo", + "HTLC_CLAIM": "Reivindicação do bloqueio de tempo", + "HTLC_REFUND": "Reembolso do bloqueio de tempo", + "BUSINESS_REGISTRATION": "Registro de Negócio", + "BUSINESS_RESIGNATION": "Renúncia de Negócio", + "BUSINESS_UPDATE": "Atualização de Negócio", + "BRIDGECHAIN_REGISTRATION": "Registro de Bridgechain", + "BRIDGECHAIN_RESIGNATION": "Renúncia de Bridgechain", + "BRIDGECHAIN_UPDATE": "Atualização de Bridgechain" }, "TYPE": "Tipo", + "VALIDATION": { + "INVALID_ADDRESS": "Este endereço é inválido!", + "IS_OWN_ADDRESS": "Este é o seu próprio endereço. Tem certeza de que deseja enviar para seu próprio endereço?", + "NO_TRANSACTIONS": "Parece que o endereço não possui transações. Tem certeza de que está correto?", + "IS_NEO_ADDRESS": "Parece que este é um endereço 'NEO'. Tem certeza de que está correto?", + "LABEL_EXISTS": "Já existe uma carteira com o rótulo '{{ label }}'!", + "INVALID_WALLET": "A carteira é inválida ou não está definida!" + }, "WALLETS_PAGE": { "ADD_WALLET_ERROR": "Não foi possível adicionar a carteira", "ADD_WALLET_TEXT": "Para importar ou criar uma carteira clique no botão abaixo", @@ -200,26 +294,38 @@ "BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT": "Você pode editar para uma frase secreta de sua escolha. Lembre-se de fazer backup com segurança, você precisará re-digitar para validação.", "BALANCE": "Balanço", "BIP38_SEED": "BIP38 Seed", + "CONVERT_TO_FULL_WALLET": "Converter em carteira completa", "CREATE_WALLET": "Criar carteira", + "CUSTOM_PASSPHRASE": "Personalizada (non | BIP39|) frase secreta", "ENTER_SECRET_PASSPHRASE": "Entre com sua frase secreta", + "ENTER_ADDRESS": "Digite seu endereço", "ENTROPY": "Entropia", "ENTROPY_RANDOM_BYTES": "Deslize para gerar bytes aleátorios", "GENERATE_ENTROPY": "Gerar Entropia", "IMPORT_INVALID_ADDRESS": "Esse endereço não pode ser importado para este perfil", "IMPORT_WALLET": "Importar carteira", + "INVALID_ADDRESS": "Endereço inválido", + "INVALID_MNEMONIC": "Mnemônico inválido", + "INVALID_WORD_NUMBER": "Número inválido de palavras", "KEEP_SAFE": "Manter a salvo", "LABEL": "Rótulo", "MY_WALLET": "Minha Carteira", "NEW_WALLET_NAME": "Novo nome da carteira", + "NEW_TRANSACTION": "Nova transação em {{ profile }}", "NO_TRANSACTIONS": "Nenhuma transação disponível", + "TYPE_PASSPHRASE_OR_ADDRESS": "ou digite sua | frase secreta | ou seu | endereço | manualmente.", "PASSPHRASE": "Frase Secreta", "PASSPHRASE_NOT_MATCH": "A frase secreta inserida não corresponde àquela que você acabou de obter.", "PUBLIC_ADDRESS": "Endereço público", "PUBLIC_ADDRESS_SHARE": "Endereço público (COMPARTILHAR)", "PUBLIC_KEY": "Chave pública", + "PASSPHRASE_NOT_BELONG_TO_ADDRESS": "A frase secreta inserida não pertence ao endereço '{{ address }}'!", + "PASSPHRASE_NOT_BIP39": "Você não inseriu uma frase secreta BIP-39 válida", + "PASSPHRASE_UNSUPPORTED_INPUT": "Entrada não suportada no modo oculto, altere a visibilidade da frase secreta.", "RE_ENTER_PASSPHRASE": "Digite sua frase secreta novamente", "REMOVE_WALLET": "Remover carteira", "REMOVE_WALLET_TEXT": "Sua conta será removida. Certifique-se de ter feito backup, você irá precisar de sua frase secreta original para restaurar.", + "REMOVE_WATCH_ONLY_WALLET_TEXT": "A carteira será removida e você não poderá mais assisti-la.", "SCAN_QRCODE": "Escanear Código QR", "SCAN_QRCODE_TEXT": "Importe seu endereço ou frase secreta usando Código QR, apenas apontar e escanear!", "SECOND_BIP38_SEED": "Segundo BIP38 Seed", @@ -228,9 +334,14 @@ "SECRET_PASSPHRASE": "Frase Secreta", "SECRET_PASSPHRASE_KEEP_SAFE": "Frase Secreta (Salve)", "SEED": "Seed", + "TOP_WALLETS": "Carteiras Top", + "TOP_WALLET_RANK": "Classificação", "TOTAL_BALANCE": "Balanço total", "USERNAME": "Nome de Usuário", + "VALID_ADDRESS": "Endereço válido", + "VALID_PASSPHRASE": "Frase secreta válida", "WALLETS": "Carteira", + "WARNING_SELECT_WALLET_TRANSACTION_LOOKUP": "Você precisa selecionar uma carteira primeiro para pesquisar transações", "WIF": "WIF" }, "WATCH_ONLY": "Modo Watch Only", From 9285ca99076bafdd150642f8df0bba881ad7ddaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:09:39 -0300 Subject: [PATCH 07/46] fix: remove unused local notifications provider (#503) --- config.xml | 1 - package-lock.json | 26 --- package.json | 5 - .../local-notifications.ts | 212 ------------------ 4 files changed, 244 deletions(-) delete mode 100644 src/app/services/local-notifications/local-notifications.ts diff --git a/config.xml b/config.xml index 4ffcdd4dc..f3147b55b 100644 --- a/config.xml +++ b/config.xml @@ -123,7 +123,6 @@ - diff --git a/package-lock.json b/package-lock.json index d1a53fe50..a96ca3cdb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3501,14 +3501,6 @@ "integrity": "sha512-WRVyNBwgr8Oerh50b+cSv6Gafk7qhLDablckcMZ2213haXH2Nwm9Aa982orsvaZLTuAsTXBxCBCyinMxKG1Ghw==", "dev": true }, - "@ionic-native/background-mode": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/background-mode/-/background-mode-5.20.0.tgz", - "integrity": "sha512-ulkJVRxFlal1RBDtqprx1Kk1ch6CrS/TLQXHXwf+kA1fHMc7bVyMV4MYIjipaYJ4I9fkofhPlo2k3PjzFuKB4A==", - "requires": { - "@types/cordova": "^0.0.34" - } - }, "@ionic-native/clipboard": { "version": "5.20.0", "resolved": "https://registry.npmjs.org/@ionic-native/clipboard/-/clipboard-5.20.0.tgz", @@ -3541,14 +3533,6 @@ "@types/cordova": "^0.0.34" } }, - "@ionic-native/local-notifications": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-5.20.0.tgz", - "integrity": "sha512-ipA9NezZeDlsqUea69Fjg/UJiKgauofqOU8EYriudh1vgfGW57xWW+4aLYhPyEDhpOOT2ncW+Kjsjo8fWb+Ujg==", - "requires": { - "@types/cordova": "^0.0.34" - } - }, "@ionic-native/network": { "version": "5.20.0", "resolved": "https://registry.npmjs.org/@ionic-native/network/-/network-5.20.0.tgz", @@ -6882,11 +6866,6 @@ } } }, - "cordova-plugin-badge": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/cordova-plugin-badge/-/cordova-plugin-badge-0.8.8.tgz", - "integrity": "sha512-RhIBtd5xhD/iLnxjt35jvOae28oNW/wtMZBOmQR3Rf0y4wirvA1bpAZEhBoFqL+rZGhsd6ddOdQXdex1T0DRyQ==" - }, "cordova-plugin-device": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.3.tgz", @@ -6907,11 +6886,6 @@ "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.1.3.tgz", "integrity": "sha512-hlrUF0kLjjEkZmpYlLJO0NnXmVjMmQ3MOZVXm1ytDihLPKHklYCOpCvjA5Wz3hJrPD1shFEsqi/SPnp873AsdQ==" }, - "cordova-plugin-local-notification": { - "version": "0.9.0-beta.2", - "resolved": "https://registry.npmjs.org/cordova-plugin-local-notification/-/cordova-plugin-local-notification-0.9.0-beta.2.tgz", - "integrity": "sha512-63n77K1pt8dnbWnNR8QWETi9Glezi1bvNHvHWmGNIOv0xCb0phZnm+Ku49BQ+omwe8Z5voMvrA4I03SYPpv38w==" - }, "cordova-plugin-network-information": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/cordova-plugin-network-information/-/cordova-plugin-network-information-2.0.2.tgz", diff --git a/package.json b/package.json index 183f166ea..3827b6cff 100644 --- a/package.json +++ b/package.json @@ -29,12 +29,10 @@ "@angular/platform-browser-dynamic": "~8.2.14", "@angular/router": "~8.2.14", "@arkecosystem/crypto": "^2.6.0-next.6", - "@ionic-native/background-mode": "^5.20.0", "@ionic-native/clipboard": "^5.20.0", "@ionic-native/core": "^5.20.0", "@ionic-native/in-app-browser": "^5.20.0", "@ionic-native/keyboard": "^5.20.0", - "@ionic-native/local-notifications": "^5.20.0", "@ionic-native/network": "^5.20.0", "@ionic-native/qr-scanner": "^5.20.0", "@ionic-native/screen-orientation": "^5.20.0", @@ -59,12 +57,10 @@ "cordova-custom-config": "^5.1.0", "cordova-ios": "5.1.1", "cordova-plugin-add-swift-support": "^2.0.2", - "cordova-plugin-badge": "^0.8.8", "cordova-plugin-device": "^2.0.3", "cordova-plugin-inappbrowser": "^3.2.0", "cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-webview": "^4.1.3", - "cordova-plugin-local-notification": "^0.9.0-beta.2", "cordova-plugin-network-information": "^2.0.2", "cordova-plugin-qrscanner": "^3.0.1", "cordova-plugin-screen-orientation": "^3.0.2", @@ -152,7 +148,6 @@ "cordova-plugin-x-socialsharing": { "ANDROID_SUPPORT_V4_VERSION": "24.1.1+" }, - "cordova-plugin-local-notification": {}, "cordova-sqlite-storage": {}, "cordova-plugin-network-information": {}, "cordova-plugin-screen-orientation": {}, diff --git a/src/app/services/local-notifications/local-notifications.ts b/src/app/services/local-notifications/local-notifications.ts deleted file mode 100644 index a2dee350c..000000000 --- a/src/app/services/local-notifications/local-notifications.ts +++ /dev/null @@ -1,212 +0,0 @@ -import { Injectable } from "@angular/core"; - -import { BackgroundMode } from "@ionic-native/background-mode/ngx"; -import { LocalNotifications } from "@ionic-native/local-notifications/ngx"; - -import { Transaction, UserSettings, Wallet } from "@/models/model"; -import { ContactsProvider } from "@/services/contacts/contacts"; -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; -import { TranslateService } from "@ngx-translate/core"; - -import * as arkts from "ark-ts"; -import lodash from "lodash"; -import stringHash from "string-hash"; - -@Injectable({ providedIn: "root" }) -export class LocalNotificationsProvider { - private intervalListener; - - constructor( - private localNotifications: LocalNotifications, - private userDataProvider: UserDataProvider, - private contactsProvider: ContactsProvider, - private settingsDataProvider: SettingsDataProvider, - private translateService: TranslateService, - private backgroundMode: BackgroundMode, - ) {} - - // Start provider - public init() { - this.backgroundMode.setDefaults({ silent: true }); - this.backgroundMode.on("activate").subscribe(() => { - this.backgroundMode.disableWebViewOptimizations(); - }); - - this.settingsDataProvider.settings.subscribe(settings => - this.prepare(settings), - ); - this.settingsDataProvider.onUpdate$.subscribe(settings => - this.prepare(settings), - ); // Watch for updates - } - - // Check the settings, configure background mode and start/stop the main task - private prepare(settings: UserSettings) { - if (settings.notification && !this.intervalListener) { - this.backgroundMode.enable(); - this.checkPermission().then(() => { - this.watch(); - this.intervalListener = setInterval(() => this.watch(), 60000); - }); - } else if (!settings.notification && this.intervalListener) { - this.backgroundMode.disable(); - clearInterval(this.intervalListener); - } - } - - // Make sure the app is allowed to show notifications - private checkPermission() { - return new Promise((resolve, reject) => { - this.localNotifications.hasPermission().then(status => { - if (status) { - resolve(); - } else { - this.localNotifications.requestPermission().then(res => { - if (res) { - resolve(); - } - }); - } - }); - }); - } - - // Scan each wallet and find new transactions - watchTransactions(wallets: any) { - for (const address in wallets) { - if (address) { - const wallet = wallets[address]; - // Convert object to class - const network = new arkts.Network(); - Object.assign(network, wallet.network); - - // Request list of transactions in the specific network - const client = new arkts.Client(network); - client.transaction - .list({ senderId: address, recipientId: address }) - .subscribe(response => { - if (!response.success) { - return; - } - - if ( - Number(response.count) > wallet.transactions.length - ) { - const localLength = wallet.transactions.length; - - // Update transactions in the wallet - const w = new Wallet(); - Object.assign(w, wallet); - - w.loadTransactions(response.transactions); - - this.userDataProvider.updateWallet( - w, - wallet.profileId, - ); - - // Get only the new transaction and notify the user - const newTransactions = lodash.drop( - w.transactions, - localLength, - ); - this.notifyTransaction(newTransactions, wallet); - } - }); - } - } - } - - // Notify each new transaction - private notifyTransaction(transactions: Transaction[], wallet: any) { - const notifications = []; - - for (const transaction of transactions) { - if (!transaction.isTransfer()) { - return; - } - - const activityLabel = transaction.getActivityLabel(); - this.translateService - .get([activityLabel, "WALLETS_PAGE.NEW_TRANSACTION"], { - profile: wallet.profileName, - }) - .subscribe((translation: string[]) => { - const username = this.getAccountLabel( - transaction.address, - wallet.profileId, - ); - const recipientLabel = this.getAccountLabel( - transaction.getAppropriateAddress(), - wallet.profileId, - ); - - const title = `💸 ${translation["WALLETS_PAGE.NEW_TRANSACTION"]}`; - const text = `${username} ${translation[ - activityLabel - ].toLowerCase()} ${recipientLabel}`; - - notifications.push({ - id: stringHash(transaction.id), - title, - text, - }); - }); - } - - this.localNotifications.schedule(notifications); - } - - // Watch all tasks - private watch() { - if (lodash.isEmpty(this.userDataProvider.profiles)) { - return; - } - - const wallets = this.getAllWallets(); - - this.watchTransactions(wallets); - } - - // Transform profile list into unique wallets list - private getAllWallets() { - return lodash.transform( - this.userDataProvider.profiles, - (acc, value: any, key) => { - for (const address in value.wallets) { - if (address) { - const info = value.wallets[address]; - info.profileName = value.name; - info.profileId = key; - info.network = this.userDataProvider.getNetworkById( - value.networkId, - ); - acc[address] = info; - } - } - - return acc; - }, - {}, - ); - } - - // The pipe is not working properly - private getAccountLabel(address: string, profileId: string) { - const contact = this.contactsProvider.getContactByAddress( - address, - profileId, - ); - if (contact) { - return contact.name; - } - - const label = this.userDataProvider.getWalletLabel(address, profileId); - if (label) { - return label; - } - - return address; - } -} From c760614ca7624cd580f8acbd48aca679d6ee4918 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:34:00 -0300 Subject: [PATCH 08/46] fix(deps): update dependency uuid to v7 (#499) Co-authored-by: WhiteSource Renovate --- package-lock.json | 64 ++++++++++++++++++++++++++++++++++++++++++++--- package.json | 2 +- 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a96ca3cdb..74bec1671 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ark-mobile", - "version": "1.7.0", + "version": "1.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -329,6 +329,12 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "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 } } }, @@ -6811,6 +6817,13 @@ "requires": { "simple-plist": "^0.2.1", "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } } }, "xmlbuilder": { @@ -9823,6 +9836,12 @@ "readable-stream": "2 || 3" } }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -14220,6 +14239,12 @@ "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -15060,6 +15085,14 @@ "requires": { "faye-websocket": "^0.10.0", "uuid": "^3.0.1" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "sockjs-client": { @@ -16369,6 +16402,14 @@ "debug": "^3.0.0", "request": "^2.88.0", "uuid": "^3.0.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "universalify": { @@ -16554,9 +16595,9 @@ "dev": true }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.1.tgz", + "integrity": "sha512-yqjRXZzSJm9Dbl84H2VDHpM3zMjzSJQ+hn6C4zqd5ilW+7P4ZmLEEqwho9LjP+tGuZlF4xrHQXT0h9QZUS/pWA==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -18194,6 +18235,14 @@ "requires": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "webpack-merge": { @@ -18387,6 +18436,13 @@ "requires": { "simple-plist": "^1.0.0", "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } } }, "xml-escape": { diff --git a/package.json b/package.json index 3827b6cff..2e80f4d6d 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "semver": "^7.1.2", "string-hash": "^1.1.3", "tslib": "^1.10.0", - "uuid": "^3.4.0", + "uuid": "^7.0.0", "zone.js": "~0.10.2" }, "devDependencies": { From ca757a32e02ec0d00fd3e5819c53b9633c2b4068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 26 Feb 2020 14:34:41 -0300 Subject: [PATCH 09/46] fix: fee and range input correlation (#502) * fix: ionicons update * fix: fee and range input correlation --- src/app/app.component.html | 19 +++++-- .../input-fee/input-fee.component.html | 9 +-- .../input-fee/input-fee.component.ts | 56 ++++++++++++++----- .../components/input-fee/input-fee.module.ts | 3 +- .../network-overview.page.html | 2 +- .../network-status/network-status.html | 2 +- .../pages/wallet/wallet-list/wallet-list.ts | 2 +- 7 files changed, 61 insertions(+), 32 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index e1dbb07ff..ba043cc64 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -19,7 +19,7 @@

- + {{ "WALLETS_PAGE.WALLETS" | translate }} - + {{ "DELEGATES_PAGE.DELEGATES" | translate }} - + {{ "NETWORKS_PAGE.NETWORK_STATUS" | translate }} - + {{ "SETTINGS_PAGE.SETTINGS" | translate }} - + {{ "CONTACTS_PAGE.CONTACTS" | translate }} @@ -48,7 +55,7 @@

- + {{ "SIGN_OUT" | translate }} diff --git a/src/app/components/input-fee/input-fee.component.html b/src/app/components/input-fee/input-fee.component.html index 357f4c05f..68a634557 100644 --- a/src/app/components/input-fee/input-fee.component.html +++ b/src/app/components/input-fee/input-fee.component.html @@ -14,20 +14,15 @@ > {{ symbol }} - + diff --git a/src/app/components/input-fee/input-fee.component.ts b/src/app/components/input-fee/input-fee.component.ts index d829bec92..e59e5a3a7 100644 --- a/src/app/components/input-fee/input-fee.component.ts +++ b/src/app/components/input-fee/input-fee.component.ts @@ -12,6 +12,11 @@ import { FeeStatistic } from "@/models/stored-network"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ArkUtility } from "../../utils/ark-utility"; +import { + ControlContainer, + FormControl, + FormGroupDirective, +} from "@angular/forms"; import { TranslateService } from "@ngx-translate/core"; import { Subscription } from "rxjs"; import { switchMap } from "rxjs/operators"; @@ -20,6 +25,12 @@ import { switchMap } from "rxjs/operators"; selector: "input-fee", templateUrl: "input-fee.component.html", styleUrls: ["input-fee.component.scss"], + viewProviders: [ + { + provide: ControlContainer, + useExisting: FormGroupDirective, + }, + ], }) export class InputFeeComponent implements OnInit, OnDestroy { @Input() @@ -35,7 +46,6 @@ export class InputFeeComponent implements OnInit, OnDestroy { public v1Fee: number; public v2Fee: FeeStatistic; public rangeFee: number; - public inputFee: string; public min: number; public max: number; public avg: number; @@ -49,6 +59,7 @@ export class InputFeeComponent implements OnInit, OnDestroy { constructor( private arkApiProvider: ArkApiProvider, private translateService: TranslateService, + private parentForm: FormGroupDirective, ) { this.step = 1; this.min = this.step; @@ -56,6 +67,17 @@ export class InputFeeComponent implements OnInit, OnDestroy { } ngOnInit() { + this.parentForm.form.addControl("fee", new FormControl("fee")); + this.parentForm.form.addControl( + "feeRange", + new FormControl("feeRange"), + ); + this.parentForm.form.controls.fee.valueChanges.subscribe(value => + this.onInputText(value), + ); + this.parentForm.form.controls.feeRange.valueChanges.subscribe(value => + this.onInputRange(value), + ); this.prepareFeeStatistics(); } @@ -104,14 +126,17 @@ export class InputFeeComponent implements OnInit, OnDestroy { } public setRangeFee(value: number) { - this.rangeFee = value; - this.onInputRange(); + this.parentForm.form.controls.feeRange.setValue(value); this.emitChange(); } - public onInputRange() { - const fee = ArkUtility.subToUnit(this.rangeFee); - this.inputFee = fee; + public onInputRange(rangeFee?: number) { + this.rangeFee = rangeFee; + const fee = ArkUtility.subToUnit(rangeFee); + + this.parentForm.form.controls.fee.setValue(fee, { + emitEvent: false, + }); const translateParams = { symbol: this.symbol, @@ -131,13 +156,13 @@ export class InputFeeComponent implements OnInit, OnDestroy { this.errorMessage = null; this.warningMessage = null; - if (this.avg > this.rangeFee) { + if (this.avg > rangeFee) { this.warningMessage = translation["INPUT_FEE.LOW_FEE_NOTICE"]; - } else if (this.rangeFee > this.limitFee) { + } else if (rangeFee > this.limitFee) { this.errorMessage = translation["INPUT_FEE.ERROR.MORE_THAN_MAXIMUM"]; - } else if (this.rangeFee > this.max) { + } else if (rangeFee > this.max) { this.warningMessage = translation["INPUT_FEE.ADVANCED_NOTICE"]; } @@ -145,18 +170,19 @@ export class InputFeeComponent implements OnInit, OnDestroy { }); } - public onInputText() { - const arktoshi = parseInt(ArkUtility.unitToSub(this.inputFee)); + public onInputText(fee?: string) { + const arktoshi = parseInt(ArkUtility.unitToSub(fee)); - if (arktoshi !== this.rangeFee) { - this.rangeFee = arktoshi; - } + this.parentForm.form.controls.feeRange.setValue(arktoshi, { + emitEvent: false, + }); this.emitChange(); } public emitChange() { - this.change.next(this.rangeFee); + const rangeFee = this.parentForm.form.get("feeRange"); + this.change.next(rangeFee.value); } ngOnDestroy() { diff --git a/src/app/components/input-fee/input-fee.module.ts b/src/app/components/input-fee/input-fee.module.ts index 018c2a218..5ed7b7b3e 100644 --- a/src/app/components/input-fee/input-fee.module.ts +++ b/src/app/components/input-fee/input-fee.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; -import { FormsModule } from "@angular/forms"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; import { InputCurrencyComponentModule } from "../input-currency/input-currency.module"; @@ -11,6 +11,7 @@ import { InputFeeComponent } from "./input-fee.component"; imports: [ IonicModule, FormsModule, + ReactiveFormsModule, InputCurrencyComponentModule, TranslateModule, CommonModule, diff --git a/src/app/pages/network/network-overview/network-overview.page.html b/src/app/pages/network/network-overview/network-overview.page.html index d412fddf7..09aa5b0ea 100644 --- a/src/app/pages/network/network-overview/network-overview.page.html +++ b/src/app/pages/network/network-overview/network-overview.page.html @@ -1,4 +1,4 @@ - + diff --git a/src/app/pages/network/network-status/network-status.html b/src/app/pages/network/network-status/network-status.html index f882a4664..585b304fb 100644 --- a/src/app/pages/network/network-status/network-status.html +++ b/src/app/pages/network/network-status/network-status.html @@ -1,4 +1,4 @@ - + diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index e2954886e..17f2da4fa 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -147,7 +147,7 @@ export class WalletListPage implements OnDestroy { { text: translation.IMPORT_PASSPHRASE, role: "passphrase", - icon: "lock", + icon: "lock-closed", handler: () => { this.presentWalletImport("passphrase"); }, From 3166eb721dfd167ca0190a081c9fe4e3627596cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 26 Feb 2020 15:20:22 -0300 Subject: [PATCH 10/46] refactor: update @angular from 8 to 9 (#483) * refactor: update @angular from 8 to 9 * fix: remove unused pages --- package-lock.json | 6286 ++++++++++++----- package.json | 73 +- src/app/app-routing.module.ts | 7 - src/app/app.component.html | 4 - .../custom-network-manage.html | 27 - .../custom-network-manage.module.ts | 20 - .../custom-network-manage.ts | 14 - .../modals/wallet-backup/wallet-backup.html | 2 +- src/app/pages/delegates/delegates.ts | 4 +- .../pages/network-status/network-status.html | 57 - .../network-status/network-status.module.ts | 18 - .../pages/network-status/network-status.pcss | 17 - .../pages/network-status/network-status.ts | 129 - .../profile-create/profile-create.html | 2 +- .../register-delegate/register-delegate.html | 69 - .../register-delegate.module.ts | 25 - .../register-delegate/register-delegate.scss | 9 - .../register-delegate/register-delegate.ts | 65 - .../register-second-passphrase.html | 91 - .../register-second-passphrase.module.ts | 23 - .../register-second-passphrase.scss | 27 - .../register-second-passphrase.ts | 58 - .../wallet-dashboard/wallet-dashboard.html | 2 +- .../wallet-dashboard.module.ts | 5 +- .../wallet-dashboard/wallet-dashboard.ts | 128 +- .../pages/wallet/wallet-list/wallet-list.ts | 4 +- .../top-wallet-details.html | 109 - .../top-wallet-details.module.ts | 24 - .../top-wallet-details.scss | 73 - .../top-wallet-details/top-wallet-details.ts | 196 - .../wallet-top-list/wallet-top-list.html | 82 - .../wallet-top-list/wallet-top-list.module.ts | 25 - .../wallet-top-list/wallet-top-list.scss | 28 - .../wallet/wallet-top-list/wallet-top-list.ts | 117 - src/app/services/ark-api/ark-api.ts | 38 +- 35 files changed, 4564 insertions(+), 3294 deletions(-) delete mode 100644 src/app/modals/custom-network-manage/custom-network-manage.html delete mode 100644 src/app/modals/custom-network-manage/custom-network-manage.module.ts delete mode 100644 src/app/modals/custom-network-manage/custom-network-manage.ts delete mode 100644 src/app/pages/network-status/network-status.html delete mode 100644 src/app/pages/network-status/network-status.module.ts delete mode 100644 src/app/pages/network-status/network-status.pcss delete mode 100644 src/app/pages/network-status/network-status.ts delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.module.ts delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.scss delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.ts delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.module.ts delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.scss delete mode 100644 src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.ts delete mode 100644 src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html delete mode 100644 src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.module.ts delete mode 100644 src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.scss delete mode 100644 src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.ts delete mode 100644 src/app/pages/wallet/wallet-top-list/wallet-top-list.html delete mode 100644 src/app/pages/wallet/wallet-top-list/wallet-top-list.module.ts delete mode 100644 src/app/pages/wallet/wallet-top-list/wallet-top-list.scss delete mode 100644 src/app/pages/wallet/wallet-top-list/wallet-top-list.ts diff --git a/package-lock.json b/package-lock.json index 74bec1671..b3a9db5b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,30 +5,33 @@ "requires": true, "dependencies": { "@angular-builders/custom-webpack": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-8.4.1.tgz", - "integrity": "sha512-FbBt4mFbAxETdYLb6tTX869pIpm8nMiCpT34jROejuqLtsljymdqXhSCEWogWlel8ULAYus6BNdzZyRLyAkfqQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-9.0.0.tgz", + "integrity": "sha512-L69pCiYGG3NGX0yLi5P88Nw8Nm9jg8RiurwrAzcf9WBKIloHJtFDZJdznrncL+baB++mAcpahIZGz9WGOH9ByQ==", "dev": true, "requires": { + "@angular-devkit/architect": "^0.900.0", + "@angular-devkit/build-angular": "^0.900.0", + "@angular-devkit/core": "^9.0.0", "lodash": "^4.17.10", "ts-node": "^8.5.2", "webpack-merge": "^4.2.1" } }, "@angular-devkit/architect": { - "version": "0.803.25", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.25.tgz", - "integrity": "sha512-usV/zEncKCKQuF6AD3pRU6N5i5fbaAux/qZb+nbOz9/2G5jrXwe5sH+y3vxbgqB83e3LqusEQCTu7/tfg6LwZg==", + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", + "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.25", - "rxjs": "6.4.0" + "@angular-devkit/core": "9.0.2", + "rxjs": "6.5.3" }, "dependencies": { "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -37,98 +40,174 @@ } }, "@angular-devkit/build-angular": { - "version": "0.803.25", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.25.tgz", - "integrity": "sha512-WY0E7NgXuog3phhz5ZdutZPWQ9nbOr+omGN5KI1e8MZs1sJO4xkyaGRT8zOulkogkqJ2NboTBq3j9uSbZkcYeg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.803.25", - "@angular-devkit/build-optimizer": "0.803.25", - "@angular-devkit/build-webpack": "0.803.25", - "@angular-devkit/core": "8.3.25", - "@babel/core": "7.8.3", - "@babel/preset-env": "7.8.3", - "@ngtools/webpack": "8.3.25", + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.2.tgz", + "integrity": "sha512-w1FHd+Ub0YO1/Xlz+SrSxbFWbJVW0jmR++fABWreh04XHGtC8kqsqP6VY8DUYBO9PcD5JyB5uG9TBxVLVR/G/w==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.2", + "@angular-devkit/build-optimizer": "0.900.2", + "@angular-devkit/build-webpack": "0.900.2", + "@angular-devkit/core": "9.0.2", + "@babel/core": "7.7.7", + "@babel/generator": "7.7.7", + "@babel/preset-env": "7.7.7", + "@ngtools/webpack": "9.0.2", "ajv": "6.10.2", - "autoprefixer": "9.6.1", - "browserslist": "4.8.6", - "cacache": "12.0.2", - "caniuse-lite": "1.0.30001024", + "autoprefixer": "9.7.1", + "babel-loader": "8.0.6", + "browserslist": "4.8.3", + "cacache": "13.0.1", + "caniuse-lite": "1.0.30001020", "circular-dependency-plugin": "5.2.0", - "clean-css": "4.2.1", "copy-webpack-plugin": "5.1.1", - "core-js": "3.6.4", + "core-js": "3.6.0", "coverage-istanbul-loader": "2.0.3", + "cssnano": "4.1.10", "file-loader": "4.2.0", "find-cache-dir": "3.0.0", - "glob": "7.1.4", + "glob": "7.1.5", "jest-worker": "24.9.0", "karma-source-map-support": "1.4.0", - "less": "3.9.0", + "less": "3.10.3", "less-loader": "5.0.0", - "license-webpack-plugin": "2.1.2", + "license-webpack-plugin": "2.1.3", "loader-utils": "1.2.3", + "magic-string": "0.25.4", "mini-css-extract-plugin": "0.8.0", "minimatch": "3.0.4", - "open": "6.4.0", + "open": "7.0.0", "parse5": "4.0.0", - "postcss": "7.0.17", + "postcss": "7.0.21", "postcss-import": "12.0.1", "postcss-loader": "3.0.0", "raw-loader": "3.1.0", "regenerator-runtime": "0.13.3", - "rxjs": "6.4.0", - "sass": "1.22.9", - "sass-loader": "7.2.0", + "rimraf": "3.0.0", + "rollup": "1.25.2", + "rxjs": "6.5.3", + "sass": "1.23.3", + "sass-loader": "8.0.0", "semver": "6.3.0", "source-map": "0.7.3", "source-map-loader": "0.2.4", - "source-map-support": "0.5.13", + "source-map-support": "0.5.16", "speed-measure-webpack-plugin": "1.3.1", "style-loader": "1.0.0", - "stylus": "0.54.5", + "stylus": "0.54.7", "stylus-loader": "3.0.2", - "terser": "4.6.3", - "terser-webpack-plugin": "1.4.3", + "terser": "4.5.1", + "terser-webpack-plugin": "2.3.3", "tree-kill": "1.2.2", - "webpack": "4.39.2", + "webpack": "4.41.2", "webpack-dev-middleware": "3.7.2", "webpack-dev-server": "3.9.0", - "webpack-merge": "4.2.1", + "webpack-merge": "4.2.2", "webpack-sources": "1.4.3", - "webpack-subresource-integrity": "1.1.0-rc.6", + "webpack-subresource-integrity": "1.3.4", "worker-plugin": "3.2.0" }, "dependencies": { - "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "@angular-devkit/architect": { + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", + "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", "dev": true, "requires": { - "tslib": "^1.9.0" + "@angular-devkit/core": "9.0.2", + "rxjs": "6.5.3" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "autoprefixer": { + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz", + "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==", + "dev": true, + "requires": { + "browserslist": "^4.7.2", + "caniuse-lite": "^1.0.30001006", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.21", + "postcss-value-parser": "^4.0.2" + } + }, + "browserslist": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz", + "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001017", + "electron-to-chromium": "^1.3.322", + "node-releases": "^1.1.44" + } + }, + "caniuse-lite": { + "version": "1.0.30001020", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001020.tgz", + "integrity": "sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA==", "dev": true }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "core-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.0.tgz", + "integrity": "sha512-AHPTNKzyB+YwgDWoSOCaid9PUSEF6781vsfiK8qUz62zRR448/XgK2NtCbpiUGizbep8Lrpt0Du19PpGGZvw3Q==", "dev": true }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "glob": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "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" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { "source-map": { @@ -139,27 +218,63 @@ } } }, - "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + }, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.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 + }, + "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 + }, + "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": { - "lodash": "^4.17.5" + "has-flag": "^3.0.0" } } } }, "@angular-devkit/build-optimizer": { - "version": "0.803.25", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.25.tgz", - "integrity": "sha512-MiQimuEs8QeM3xo7bR3Yk1OWHHlp2pGCc2GLUMIcWhKqM+QjoRky0HoGoBazbznx292l+xjFjANvPEKbqJ2v7Q==", + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.2.tgz", + "integrity": "sha512-4jcjYKjGvUj1Q4vqQSUU0JT1LXOh7qC7vWCK+bbAsW77wAavtbKFt2mDjB2DMIRFzt9lSULi0Z+JVOD9KUzk2g==", "dev": true, "requires": { "loader-utils": "1.2.3", "source-map": "0.7.3", "tslib": "1.10.0", - "typescript": "3.5.3", + "typescript": "3.6.4", "webpack-sources": "1.4.3" }, "dependencies": { @@ -170,28 +285,38 @@ "dev": true }, "typescript": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", - "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", + "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.803.25", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.25.tgz", - "integrity": "sha512-WR7HWJIWL6TB3WHG7ZFn8s0z3WlojeQlod75UIKl5i+f4OU90kp8kxcoH5G6OCXu56x5w40oIi1ve5ljjWSJkw==", + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.2.tgz", + "integrity": "sha512-DiHUSO352NV9OcXB8cZY8gLijrUg0SIbPwrKUTjx1prZMJKa+MqWDpwhleVsM1VRyUH3qMTzhaUFmw+hqdR0BQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.803.25", - "@angular-devkit/core": "8.3.25", - "rxjs": "6.4.0" + "@angular-devkit/architect": "0.900.2", + "@angular-devkit/core": "9.0.2", + "rxjs": "6.5.3" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", + "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.2", + "rxjs": "6.5.3" + } + }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -200,22 +325,31 @@ } }, "@angular-devkit/core": { - "version": "8.3.25", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.25.tgz", - "integrity": "sha512-l7Gqy1tMrTpRmPVlovcFX8UA3mtXRlgO8kcSsbJ9MKRKNTCcxlfsWEYY5igyDBUVh6ADkgSIu0nuk31ZGTe0lw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.2.tgz", + "integrity": "sha512-lEmfYs7+oHmXEQ3y97QGm73zs7i6chpx+ZSaBUvMM9oCKj/lytcn+diVG+t4hMavH6TK0lai7DO1rAbYkbmdrA==", "dev": true, "requires": { "ajv": "6.10.2", "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.3", - "rxjs": "6.4.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", "source-map": "0.7.3" }, "dependencies": { + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -230,19 +364,20 @@ } }, "@angular-devkit/schematics": { - "version": "8.3.25", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.25.tgz", - "integrity": "sha512-/p1MkfursfLy+JRGXlJGPEmX55lrFCsR/2khWAVXZcMaFR3QlR/b6/zvB8I2pHFfr0/XWnYTT/BsF7rJjO3RmA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.2.tgz", + "integrity": "sha512-+MiSBWErz8hxcbyHioCQtTnFpbqaoCEQEknK0vCb15fFEY2Hi3u2TXK59QNKsqn8w+Mye5dHYhwmpsAC8Wcgtw==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.25", - "rxjs": "6.4.0" + "@angular-devkit/core": "9.0.2", + "ora": "4.0.2", + "rxjs": "6.5.3" }, "dependencies": { "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -251,25 +386,25 @@ } }, "@angular/cli": { - "version": "8.3.25", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.25.tgz", - "integrity": "sha512-CPJI5nnbBvvyBUFwOHfRXy/KVwsiYlcbDAeIk1klcjQjbVFYZbnY0iAhNupy9j7rPQhb7jle5oslU3TLfbqOTQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.2.tgz", + "integrity": "sha512-ih3bnvav94MXI9YpwJ4AaETfUGwzc+S2jg4vkfYMuBeWO8kJ7Ma4f2ZriIwWyfHWHlBLHDF6OjAVdisBKPpQag==", "dev": true, "requires": { - "@angular-devkit/architect": "0.803.25", - "@angular-devkit/core": "8.3.25", - "@angular-devkit/schematics": "8.3.25", - "@schematics/angular": "8.3.25", - "@schematics/update": "0.803.25", + "@angular-devkit/architect": "0.900.2", + "@angular-devkit/core": "9.0.2", + "@angular-devkit/schematics": "9.0.2", + "@schematics/angular": "9.0.2", + "@schematics/update": "0.900.2", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "^4.1.1", "ini": "1.3.5", - "inquirer": "6.5.1", - "npm-package-arg": "6.1.0", + "inquirer": "7.0.0", + "npm-package-arg": "6.1.1", "npm-pick-manifest": "3.0.2", - "open": "6.4.0", - "pacote": "9.5.5", + "open": "7.0.0", + "pacote": "9.5.8", "read-package-tree": "5.3.1", "rimraf": "3.0.0", "semver": "6.3.0", @@ -278,14 +413,24 @@ "uuid": "^3.3.2" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", + "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.2", + "rxjs": "6.5.3" + } + }, "@schematics/angular": { - "version": "8.3.25", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.25.tgz", - "integrity": "sha512-/vEPtE+fvgsWPml/MVqzmlGPBujadPPNwaTuuj5Uz1aVcKeEYzLkbN8YQOpml4vxZHCF8RDwNdGiU4SZg63Jfg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.2.tgz", + "integrity": "sha512-H6ZyxLYoIN68bbNKnUjBCPtB0fcwnpIyTkqXQHa3B4HITcU3uee4PLAl3xCkTS2NGv8m/0eWND9zt5wryGf8PQ==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.25", - "@angular-devkit/schematics": "8.3.25" + "@angular-devkit/core": "9.0.2", + "@angular-devkit/schematics": "9.0.2" } }, "ansi-colors": { @@ -318,6 +463,15 @@ "glob": "^7.1.3" } }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -339,36 +493,31 @@ } }, "@angular/common": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.14.tgz", - "integrity": "sha512-Qmt+aX2quUW54kaNT7QH7WGXnFxr/cC2C6sf5SW5SdkZfDQSiz8IaItvieZfXVQUbBOQKFRJ7TlSkt0jI/yjvw==", - "requires": { - "tslib": "^1.9.0" - } + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.1.tgz", + "integrity": "sha512-40jbKdCb4xi6NTzLt1kE0V/X7JxCLLo8eUEr3Z34Z9Ljnd4LC+/CkuThPdQJ3HW1Z8r5SWXj+rES+sn75YNVmA==" }, "@angular/compiler": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.14.tgz", - "integrity": "sha512-ABZO4E7eeFA1QyJ2trDezxeQM5ZFa1dXw1Mpl/+1vuXDKNjJgNyWYwKp/NwRkLmrsuV0yv4UDCDe4kJOGbPKnw==", - "requires": { - "tslib": "^1.9.0" - } + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.1.tgz", + "integrity": "sha512-ldamsPzIx+FLT/IYBqwsFL6qbP3BDgvPQa4Y3F/gFXDsoe+VTY5qwJfhr2iLbtF+fYomwOgY2kSL42BVQL873Q==" }, "@angular/compiler-cli": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.2.14.tgz", - "integrity": "sha512-XDrTyrlIZM+0NquVT+Kbg5bn48AaWFT+B3bAT288PENrTdkuxuF9AhjFRZj8jnMdmaE4O2rioEkXBtl6z3zptA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.1.tgz", + "integrity": "sha512-HxJAXr1TWoqVzR7pRe89UjWnu3ESJzo+gjWWtv1NtDMwUKQ2JHWmC3yp/U0URprA03Ii8lXlrZWBjps04ZIlAg==", "dev": true, "requires": { "canonical-path": "1.0.0", - "chokidar": "^2.1.1", + "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", "magic-string": "^0.25.0", "minimist": "^1.2.0", "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", "source-map": "^0.6.1", - "tslib": "^1.9.0", "yargs": "13.1.0" }, "dependencies": { @@ -378,707 +527,304 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "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 + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", "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" - } - } + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "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 }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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": { - "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" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "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": { - "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" + "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 - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": 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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": 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" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.1.tgz", + "integrity": "sha512-q/3VLGM98euB/ZluSuMqvWyQb563iabRcVkC/DrHqCQMadV1ZpvuOgf8Gm092d8GY/iC4CGlTsN0wiVapMxplQ==" + }, + "@angular/forms": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.1.tgz", + "integrity": "sha512-yzzlCslWp7IiFSYjSGNqexPmnKn9xhpT8FKzxNT0qEpQ+SieQ7apsjvMfR3TCip0Nnfus2qTh3kz1ZCaawAcjQ==" + }, + "@angular/language-service": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.1.tgz", + "integrity": "sha512-e/8CGATX7C0ElwBk6QjCfWk7A6lwikrBR1cesNu1kNwneZkiIeIel1jklbDUT0NFr4C2/FdBu2Z3GbvDeCO8Vw==", + "dev": true + }, + "@angular/localize": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.0.1.tgz", + "integrity": "sha512-hRUxGSrSscy/t/akxHLDjrrdTbLZjUDD1JoEgfcWzZMm21V0MhzA5jhOdD/bXjmX/Oqdx00C6cR088QcNb/8mg==", + "requires": { + "@babel/core": "7.8.3", + "glob": "7.1.2", + "yargs": "13.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" } }, - "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 + "@babel/core": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", + "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", + "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==" + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", + "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } }, - "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, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", "requires": { - "binary-extensions": "^1.0.0" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.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 + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "kind-of": "^3.0.2" + "ms": "^2.1.1" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "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==" + }, + "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==" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "is-buffer": "^1.1.5" + "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" } }, - "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, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "minimist": "^1.2.0" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "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 + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "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", @@ -1089,26 +835,14 @@ "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" } }, - "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" - } - }, "yargs": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", - "dev": true, "requires": { "cliui": "^4.0.0", "find-up": "^3.0.0", @@ -1127,7 +861,6 @@ "version": "13.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -1135,56 +868,25 @@ } } }, - "@angular/core": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.14.tgz", - "integrity": "sha512-zeePkigi+hPh3rN7yoNENG/YUBUsIvUXdxx+AZq+QPaFeKEA2FBSrKn36ojHFrdJUjKzl0lPMEiGC2b6a6bo6g==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/forms": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.14.tgz", - "integrity": "sha512-zhyKL3CFIqcyHJ/TQF/h1OZztK611a6rxuPHCrt/5Sn1SuBTJJQ1pPTkOYIDy6IrCrtyANc8qB6P17Mao71DNQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/language-service": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.2.14.tgz", - "integrity": "sha512-7EhN9JJbAJcH2xCa+rIOmekjiEuB0qwPdHuD5qn/wwMfRzMZo+Db4hHbR9KHrLH6H82PTwYKye/LLpDaZqoHOA==", - "dev": true - }, "@angular/platform-browser": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.14.tgz", - "integrity": "sha512-MtJptptyKzsE37JZ2VB/tI4cvMrdAH+cT9pMBYZd66YSZfKjIj5s+AZo7z8ncoskQSB1o3HMfDjSK7QXGx1mLQ==", - "requires": { - "tslib": "^1.9.0" - } + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.1.tgz", + "integrity": "sha512-0o2aRxbQ3xZ/ZeLXajDqhrRK6vcICzdJ7GKvPgZxdohnnJ7JN1qp8U7J4aEotPqfSAde/aD2JvoDDtKZ0XIDWg==" }, "@angular/platform-browser-dynamic": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.14.tgz", - "integrity": "sha512-mO2JPR5kLU/A3AQngy9+R/Q5gaF9csMStBQjwsCRI0wNtlItOIGL6+wTYpiTuh/ux+WVN1F2sLcEYU4Zf1ud9A==", - "requires": { - "tslib": "^1.9.0" - } + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.1.tgz", + "integrity": "sha512-DslT339T+TBt4jUlXMblPR4IghXtykB+jQctm02G4AJUlvMa4b798N1oM6sD5F8NmBMa6beZ2dcRJ07f75LVBA==" }, "@angular/router": { - "version": "8.2.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.14.tgz", - "integrity": "sha512-DHA2BhODqV7F0g6ZKgFaZgbsqzHHWRcfWchCOrOVKu2rYiKUTwwHVLBgZAhrpNeinq2pWanVYSIhMr7wy+LfEA==", - "requires": { - "tslib": "^1.9.0" - } + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.1.tgz", + "integrity": "sha512-pHLDooNvXEUtjYANWtJ7fMxG9l2mDJgPphOi/S6c27U5yNf0NVk+Qh3kuuNi2hQQ5RaR4jdRyCQePD2H4g2+/g==" }, "@arkecosystem/crypto": { - "version": "2.6.0-next.6", - "resolved": "https://registry.npmjs.org/@arkecosystem/crypto/-/crypto-2.6.0-next.6.tgz", - "integrity": "sha512-mLX83o+p6beaSxpIV8nNunfXyN0n56Q6Z0rS3pSFdqLQ1ViBPIQZxlFyPQgoerz4Nl0FBvS5+pRbNFa2N82LpQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@arkecosystem/crypto/-/crypto-2.6.1.tgz", + "integrity": "sha512-e81QnKCuJI0CEbTU4Bcg23o7ltu/OIAZlodwZJatAgu2uP7T0sfX/S1McZ5riUuuaAwDrlhiKSweiILXiNRCbg==", "requires": { "@arkecosystem/utils": "0.8.3", "ajv": "^6.10.2", @@ -1228,41 +930,21 @@ "@babel/highlight": "^7.0.0" } }, - "@babel/compat-data": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz", - "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "invariant": "^2.2.4", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "@babel/core": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", - "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", + "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helpers": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3", + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.7", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.7", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", @@ -1270,15 +952,6 @@ "source-map": "^0.5.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, "@babel/generator": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", @@ -1289,46 +962,19 @@ "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/parser": { @@ -1337,45 +983,6 @@ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", "dev": true }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -1619,27 +1226,6 @@ } } }, - "@babel/helper-compilation-targets": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz", - "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.8.4", - "browserslist": "^4.8.5", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "@babel/helper-create-regexp-features-plugin": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", @@ -2563,7 +2149,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", - "dev": true, "requires": { "@babel/template": "^7.8.3", "@babel/traverse": "^7.8.4", @@ -2574,7 +2159,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, "requires": { "@babel/highlight": "^7.8.3" } @@ -2583,7 +2167,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", - "dev": true, "requires": { "@babel/types": "^7.8.3", "jsesc": "^2.5.1", @@ -2595,7 +2178,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.8.3", "@babel/template": "^7.8.3", @@ -2606,7 +2188,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, "requires": { "@babel/types": "^7.8.3" } @@ -2615,7 +2196,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, "requires": { "@babel/types": "^7.8.3" } @@ -2624,7 +2204,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -2634,14 +2213,12 @@ "@babel/parser": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", - "dev": true + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==" }, "@babel/template": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.8.3", "@babel/parser": "^7.8.3", @@ -2652,7 +2229,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", - "dev": true, "requires": { "@babel/code-frame": "^7.8.3", "@babel/generator": "^7.8.4", @@ -2669,7 +2245,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "dev": true, "requires": { "esutils": "^2.0.2", "lodash": "^4.17.13", @@ -2680,7 +2255,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -2688,14 +2262,12 @@ "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -2747,16 +2319,6 @@ "@babel/plugin-syntax-json-strings": "^7.8.0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", @@ -2777,16 +2339,6 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", - "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", @@ -2824,15 +2376,6 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@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-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", @@ -2851,15 +2394,6 @@ "@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-top-level-await": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", @@ -3348,81 +2882,64 @@ } }, "@babel/preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz", - "integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.8.0", - "@babel/helper-compilation-targets": "^7.8.3", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.8.3", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.8.3", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.8.3", - "@babel/plugin-transform-modules-commonjs": "^7.8.3", - "@babel/plugin-transform-modules-systemjs": "^7.8.3", - "@babel/plugin-transform-modules-umd": "^7.8.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.3", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.3", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.3", - "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/types": "^7.8.3", - "browserslist": "^4.8.2", - "core-js-compat": "^3.6.2", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", + "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.4", + "@babel/plugin-proposal-dynamic-import": "^7.7.4", + "@babel/plugin-proposal-json-strings": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", + "@babel/plugin-syntax-async-generators": "^7.7.4", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-syntax-json-strings": "^7.7.4", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", + "@babel/plugin-syntax-top-level-await": "^7.7.4", + "@babel/plugin-transform-arrow-functions": "^7.7.4", + "@babel/plugin-transform-async-to-generator": "^7.7.4", + "@babel/plugin-transform-block-scoped-functions": "^7.7.4", + "@babel/plugin-transform-block-scoping": "^7.7.4", + "@babel/plugin-transform-classes": "^7.7.4", + "@babel/plugin-transform-computed-properties": "^7.7.4", + "@babel/plugin-transform-destructuring": "^7.7.4", + "@babel/plugin-transform-dotall-regex": "^7.7.7", + "@babel/plugin-transform-duplicate-keys": "^7.7.4", + "@babel/plugin-transform-exponentiation-operator": "^7.7.4", + "@babel/plugin-transform-for-of": "^7.7.4", + "@babel/plugin-transform-function-name": "^7.7.4", + "@babel/plugin-transform-literals": "^7.7.4", + "@babel/plugin-transform-member-expression-literals": "^7.7.4", + "@babel/plugin-transform-modules-amd": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.5", + "@babel/plugin-transform-modules-systemjs": "^7.7.4", + "@babel/plugin-transform-modules-umd": "^7.7.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", + "@babel/plugin-transform-new-target": "^7.7.4", + "@babel/plugin-transform-object-super": "^7.7.4", + "@babel/plugin-transform-parameters": "^7.7.7", + "@babel/plugin-transform-property-literals": "^7.7.4", + "@babel/plugin-transform-regenerator": "^7.7.5", + "@babel/plugin-transform-reserved-words": "^7.7.4", + "@babel/plugin-transform-shorthand-properties": "^7.7.4", + "@babel/plugin-transform-spread": "^7.7.4", + "@babel/plugin-transform-sticky-regex": "^7.7.4", + "@babel/plugin-transform-template-literals": "^7.7.4", + "@babel/plugin-transform-typeof-symbol": "^7.7.4", + "@babel/plugin-transform-unicode-regex": "^7.7.4", + "@babel/types": "^7.7.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.6.0", "invariant": "^2.2.2", - "levenary": "^1.1.0", + "js-levenshtein": "^1.1.3", "semver": "^5.5.0" }, "dependencies": { - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -3501,96 +3018,106 @@ "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" }, - "@ionic-native-mocks/splash-screen": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@ionic-native-mocks/splash-screen/-/splash-screen-2.0.12.tgz", - "integrity": "sha512-WRVyNBwgr8Oerh50b+cSv6Gafk7qhLDablckcMZ2213haXH2Nwm9Aa982orsvaZLTuAsTXBxCBCyinMxKG1Ghw==", - "dev": true + "@ionic-native/background-mode": { + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/background-mode/-/background-mode-5.21.5.tgz", + "integrity": "sha512-/YGBbyGhyJzzjRWFVz+2jWnwChYWF0F3VQ7F8+mcloZQrwLN1XicK+YTfaYgOvVITFcWUuwl7J2JlRTqhcxsWA==", + "requires": { + "@types/cordova": "^0.0.34" + } }, "@ionic-native/clipboard": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/clipboard/-/clipboard-5.20.0.tgz", - "integrity": "sha512-Cy5M7G76TQloamtozf0YDfbEkYAzrBYk17Izx71MMYJ/E8gA/Xkw38M4gihiKRdc0CssK79um+HTtKwlVzvdLg==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/clipboard/-/clipboard-5.21.5.tgz", + "integrity": "sha512-gb2uFJdeOKcpghgUuDczp7O0DytZgRE1R2Fvuk+VqWiB+5snuPt1NdABmgVJuwgQSSZJrQIHxIlMPX4Dy7viSg==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/core": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.20.0.tgz", - "integrity": "sha512-s2ctXGCsJBcFVJ5kzEumNQzrxGira40yk3PFeUHhr7Rt2kPqXHvtuOSFBsIYB4NFIhkbIiXxBJ7rgRqdDvHOLQ==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.21.5.tgz", + "integrity": "sha512-Ds0sxb/hFcWPMOwDoRVp+iPL11ZNziNlX0szS5au5X6eQX+8aEhd6mJ5TgE6xC9KQdNIjV1/xB+1eMdWrEpY+Q==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/in-app-browser": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.20.0.tgz", - "integrity": "sha512-s0tdZ+VIXObbX0zhdPjWuAytyrBF1uW5DAuNXm4NGiLkhf0sDNzUavnr7g04HrbaWgkODv00y5zdmmSZPuNZfg==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.21.5.tgz", + "integrity": "sha512-7+aPNedk7LELoizR4y7WC/4CRBQ76EuVfJMDLV7oZ+gDoubbZJfSnWoF+24mMtJFxfiMWs2HbGNaOdv08kE/0A==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/keyboard": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/keyboard/-/keyboard-5.20.0.tgz", - "integrity": "sha512-b9BcwArkCzhH9rIx4BS+/6E0/hF5uW07ozuQZNMezhEwhA/vQHmC3nuKxa3jaZsVLeg6OpqyLllIyZcMVQJwhg==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/keyboard/-/keyboard-5.21.5.tgz", + "integrity": "sha512-1fPiFcH3Bj1h9tFPFCNpatDFCfOx+HTtO0o2AEwFctnKygaizXw3mvRvJFMb63KVa/ktaZ4BTxS7NJhElUr8IA==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, + "@ionic-native/local-notifications": { + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-5.21.5.tgz", + "integrity": "sha512-Z7jKM10ySZHrFSEbkr8yEonBEvgTOJUt35b4SirlxUUhcnpHvTZBiIOkhZdQQkjfRdsUnf2jTI2pm8L+IFwt6g==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/network": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/network/-/network-5.20.0.tgz", - "integrity": "sha512-1abUIuNuq7yFKDEWMpnQdMndOOhHLTvtGmnhwTwea7czxoeJnyHdo047SXgukmNT7rTdMv6smlgpALXAXOF8+A==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/network/-/network-5.21.5.tgz", + "integrity": "sha512-UcisBfMxCJFQYLqxZDs3EgE6ePCe9ANbqcEIyvUWXR5RSCqwi4eMFiOpKFJvKZkI3XqMyqjWPgSZz+TEKWpUAQ==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/qr-scanner": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.20.0.tgz", - "integrity": "sha512-qu7wkR1lfMY3zdtKmzDavXSlxlzl1ii52kEeGTChmSbAw1Y5CLsiiGz4kZq06g5FoylcXnfrviHd8R9ssLCj+w==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.21.5.tgz", + "integrity": "sha512-acdpvRACCtj97R0fjIUkhHMNWdsr7TzRDcOFZMULZFzxFlloD9n7Ub7Q4GLWEb4H+O7iQT96KQVHKhB/g6CWKQ==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/screen-orientation": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/screen-orientation/-/screen-orientation-5.20.0.tgz", - "integrity": "sha512-m05RJ6xFNZrGMV5VBhlZ1LNEBrpuhzY27FA5pQ8OWsQ/arWuDyOnSHP3UeVupOA4YlHdrPWe8TeCfzne7DXasw==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/screen-orientation/-/screen-orientation-5.21.5.tgz", + "integrity": "sha512-53qt1seRqqtdvr6uLFd9pCPfQlxofAuf9DjP0Q1WSiKi80LSC+xb1/V/OVdUKdRLNDtTE7h75d/xP+VXijZaww==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/social-sharing": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/social-sharing/-/social-sharing-5.20.0.tgz", - "integrity": "sha512-YPu4mLf/oOk7Te1A/bxXC5roozAstpRXGSD3G9NdnFVRF6Vd/IT6heKg+grtQCzQXAgr3XP5hcTVhUb+5Tp17w==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/social-sharing/-/social-sharing-5.21.5.tgz", + "integrity": "sha512-xL1yVACgwihpGfrhtcWpqDTtAiiEGDhtRAZylYNLr2QZPmHnFthTUIc2g9wAXx8auRzS1E3g5BA7GR9nna3mgw==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/splash-screen": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.20.0.tgz", - "integrity": "sha512-Uzmd6e+0+D7ZYPzgrfUNCNRgjHcQzCFSw0B/E41tJF4cD/H2Khz2Wtr0eghUQTM8fPP3HnWewd9Z2D1zfxrqfA==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.21.5.tgz", + "integrity": "sha512-l+jovdxaAEiDIVbUX2HQdFm402ZXHlGDFBsZOkV5QUjQA/E5RvekXn08UIS9ffE1wKr+qu0UQg0iK98h2UiTDQ==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/status-bar": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-5.20.0.tgz", - "integrity": "sha512-y59uhvdPHKzu3HUNnQhZCTon1AmLXY5u99Gcc8wotPPk4JMDHVpf/YY6XAVNgZRojjYBwUmCt9N4hYL3JPu1Og==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-5.21.5.tgz", + "integrity": "sha512-CRehgKnXRNyo4kUAy/fhOh/t76AIxsojncvqOXcS4DmVYpY9K5IfUjrjG+IK5G4fLHDM3exYnvC4721uOhnfPQ==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/vibration": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@ionic-native/vibration/-/vibration-5.20.0.tgz", - "integrity": "sha512-2IvfeP8bIngNiYexH69AP0QRUfZkRPj5oR/z9N/AiLsT4JBbhV/q0779bw3Vpz81ddK6vY4VHKX1GvwEykO4xw==", + "version": "5.21.5", + "resolved": "https://registry.npmjs.org/@ionic-native/vibration/-/vibration-5.21.5.tgz", + "integrity": "sha512-0auymwoClNB4k0n4KtOCGaOVJ2XBC9L33LTbTyzio7vJQa5U5N/daas61ISRGm7lxgvZ5Wh+UFVWDpLcAzx5lQ==", "requires": { "@types/cordova": "^0.0.34" } @@ -3605,12 +3132,15 @@ } }, "@ionic/angular-toolkit": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ionic/angular-toolkit/-/angular-toolkit-2.1.2.tgz", - "integrity": "sha512-TLb/wQMdhgUe4X98TZgiue/6VqEFPiXkg3a0diVTwtrsHj2cWNXUaIlQtnEqxBhyml81mrpkSgAoUFH3JJfaXw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ionic/angular-toolkit/-/angular-toolkit-2.2.0.tgz", + "integrity": "sha512-sT3GokCa5CVrtLsijcTWEm5tbUB3CcJ1ucC9NlIcAZG+dh3oQ7zK2gS7U3xdbSR1cNO+y2TBVNVyY0xSiI+Rbg==", "dev": true, "requires": { - "@schematics/angular": "^8.0.0", + "@schematics/angular": ">=8.0.0", + "cheerio": "1.0.0-rc.3", + "colorette": "1.1.0", + "copy-webpack-plugin": "5.1.1", "tslib": "^1.9.0", "ws": "^7.0.1" }, @@ -3624,18 +3154,18 @@ } }, "@ionic/cli-framework": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-4.0.1.tgz", - "integrity": "sha512-+IlZxxqqKw/a02FwtqJoSQ1tzS2JC4KUOgUhu47Lsy/a/rNe8k8qL5mIhwX8bd4BHufSlJgq3n73QlIMC4qLXA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-4.1.0.tgz", + "integrity": "sha512-sREboBsyS8ELh5ONZ2ztJx9eeWg1FBY6GDL4d8cUwmkx75gR+QDgdi2xCwik0y12h8g8wdEzX5MXXxktHvZCtg==", "dev": true, "requires": { - "@ionic/utils-array": "2.0.1", - "@ionic/utils-fs": "3.0.1", - "@ionic/utils-object": "2.0.1", - "@ionic/utils-process": "2.0.1", - "@ionic/utils-stream": "3.0.1", - "@ionic/utils-subprocess": "2.0.1", - "@ionic/utils-terminal": "2.0.1", + "@ionic/utils-array": "2.1.0", + "@ionic/utils-fs": "3.1.0", + "@ionic/utils-object": "2.1.0", + "@ionic/utils-process": "2.1.0", + "@ionic/utils-stream": "3.1.0", + "@ionic/utils-subprocess": "2.1.0", + "@ionic/utils-terminal": "2.1.0", "chalk": "^3.0.0", "debug": "^4.0.0", "lodash": "^4.17.5", @@ -3720,9 +3250,9 @@ "dev": true }, "rimraf": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", - "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -3926,13 +3456,13 @@ } }, "@ionic/lab": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.0.1.tgz", - "integrity": "sha512-sBCBGgRndO+VbBwqO7qSc0LYiAbllxLDJJveqTSqcQ3KeHRGhoiEHfQpbKOh2gDxpihRSWVFuC+SeAiBFiFynw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.1.0.tgz", + "integrity": "sha512-H56BB94NBcWfybdeJiyklVjJ3xltNZPS6Pf/5OlLrsOI+rRhmO2iDHL8SGEQ32bsCXg2XCvjDDRB5OuNPmqqtA==", "dev": true, "requires": { - "@ionic/cli-framework": "4.0.1", - "@ionic/utils-fs": "3.0.1", + "@ionic/cli-framework": "4.1.0", + "@ionic/utils-fs": "3.1.0", "chalk": "^3.0.0", "express": "^4.16.2", "tslib": "^1.9.0" @@ -4001,9 +3531,9 @@ } }, "@ionic/utils-array": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.0.1.tgz", - "integrity": "sha512-3xXhqmmbzgjB9C6xd3ZSKhpuqG8xVmaGUG/kKWzN8JTLRlk6gYSTMD/G2Moilg4HHUpwDve4RNqorjx0PWGGhQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.0.tgz", + "integrity": "sha512-BA6UcviyvobgfdzGKywpnO3TXtNdPfo8ImdEcV/pH+TeRkFYQERYTzQQxvi2OwK900Y5u3v5si1XraaJs5dQhw==", "dev": true, "requires": { "debug": "^4.0.0", @@ -4028,9 +3558,9 @@ } }, "@ionic/utils-fs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.0.1.tgz", - "integrity": "sha512-V9ur58mzBg29A/aWjQDcdGpdCB3ZnR4Q20i1c4HcRGln4eqysEtZ/Xr9GTZyyif30fBwx7xl+i3c5/+d2nmgzA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.0.tgz", + "integrity": "sha512-PzrTdV2lW596stYI5Zfv0UjiD4oGMqzmkgkF3XqONY2zbhK308fZQu6Msibo0u3u5aPrRmgO6X0gdznMxsC0lw==", "dev": true, "requires": { "debug": "^4.0.0", @@ -4093,9 +3623,9 @@ } }, "@ionic/utils-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.0.1.tgz", - "integrity": "sha512-oicCRlIYRs9/v1s6o3dWhYhzHUx3o1SRuR9mAgy3K+xi5E604vBdpdFocmtamSv5xuGbfIByZjNdoKrMX4Ceog==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.0.tgz", + "integrity": "sha512-SBRsjPo8Pre2G8Q2FxAhvFYy9AOj7R6f0gXtfZVvrue0p4NVSNANqWAHEBdv+ZrdBDlUcfbb7NszpIpuUe+31w==", "dev": true, "requires": { "debug": "^4.0.0", @@ -4120,13 +3650,13 @@ } }, "@ionic/utils-process": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.0.1.tgz", - "integrity": "sha512-pY4sapAQR+uYgZEU6H6U/p4V8y/olNiM/3H4Z+4VZO4t5vs/Fnu1t7YNRr0pde3b3SfKELqoIf3VBOnvH4HqTQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.0.tgz", + "integrity": "sha512-DO465RDMglA5PWLKt03b2ZTc4QaFyf6Ia2pXRvT+eNu4mNIauiYS+5hIcnYKS4Qk214rI7gYzmMzfUqeIp8W9w==", "dev": true, "requires": { - "@ionic/utils-object": "2.0.1", - "@ionic/utils-terminal": "2.0.1", + "@ionic/utils-object": "2.1.0", + "@ionic/utils-terminal": "2.1.0", "debug": "^4.0.0", "lodash": "^4.17.5", "tree-kill": "^1.2.2", @@ -4151,9 +3681,9 @@ } }, "@ionic/utils-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.0.1.tgz", - "integrity": "sha512-dmXT2qLCwtd8skvKkRQW9FCN+BC4bVGQ0NPz10QjDJqXjZbANpx/ntjVspJPEKNWl1ZC7E3xob08crWenaae4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.0.tgz", + "integrity": "sha512-SauLDlON1hLBMLVbVXJbbxP+WUyXOPC/yceDxjgiLu9jXF2ZaUQTknl9YqAlO5ga9Yqfa8UiS4EodHYxo7kjjQ==", "dev": true, "requires": { "debug": "^4.0.0", @@ -4178,16 +3708,16 @@ } }, "@ionic/utils-subprocess": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.0.1.tgz", - "integrity": "sha512-JVFhFg7H3912iFS7pfoqkUb0LSjOHhQm/MQOgqXBLaimK9WLw6NNxxYBzGkjftdG/B1vq0gNPJa2iFM5T/HInA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.0.tgz", + "integrity": "sha512-kmlLuds0DsmDreEor/dRHkcbEZYUpoFYA2LLplvLQvYNjmxnrzE8aBaIaCyaPoO1KLV3B/WOjmpl11/9J9e4fw==", "dev": true, "requires": { - "@ionic/utils-array": "2.0.1", - "@ionic/utils-fs": "3.0.1", - "@ionic/utils-process": "2.0.1", - "@ionic/utils-stream": "3.0.1", - "@ionic/utils-terminal": "2.0.1", + "@ionic/utils-array": "2.1.0", + "@ionic/utils-fs": "3.1.0", + "@ionic/utils-process": "2.1.0", + "@ionic/utils-stream": "3.1.0", + "@ionic/utils-terminal": "2.1.0", "cross-spawn": "^7.0.0", "debug": "^4.0.0", "tslib": "^1.9.0" @@ -4252,9 +3782,9 @@ } }, "@ionic/utils-terminal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.0.1.tgz", - "integrity": "sha512-P85AA3t74Ksy/c9CUP1wwtD+ChlD/zqGB33ICIlawd/JjPx9IK7EEmYU90Wnt0UmZLs51NmP8O2xiwQjvpBXUg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.1.0.tgz", + "integrity": "sha512-Nz6jtYpQIn2a6tbB111xxG6sEaeVoLigIqrLNdyii5vpbUe6zRYbFFLNddUdreRpt6zyxLFzcAFIKo779W0tQw==", "dev": true, "requires": { "debug": "^4.0.0", @@ -4285,22 +3815,21 @@ "dev": true }, "@ngtools/webpack": { - "version": "8.3.25", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.25.tgz", - "integrity": "sha512-yHvgxXUXlgdWijtzcRjTaUqzK+6TVK/8p7PreBR00GsLxhl4U1jQSC6yDaZUCjOaEkiczFWl4hEuC4wTU/hLdg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.2.tgz", + "integrity": "sha512-RR18eMe4/k7y3KZ5Y3GTVQNOnJ8Jbe0Xs0q8IMNcGqldbUR878MmIl9PCc6J79stE/7WiNFQtq1L68RQi3i9/A==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.25", - "enhanced-resolve": "4.1.0", - "rxjs": "6.4.0", - "tree-kill": "1.2.2", + "@angular-devkit/core": "9.0.2", + "enhanced-resolve": "4.1.1", + "rxjs": "6.5.3", "webpack-sources": "1.4.3" }, "dependencies": { "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -4309,11 +3838,11 @@ } }, "@ngx-translate/core": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.0.0.tgz", - "integrity": "sha512-hxuaLEqxlZ3IWBupyAoRXAhMZHCmaCg58XpY5+vevJmDhMEFJUEKdQyWVOKcf3+6PkoIFcuKJCeHa5C3Hb65gA==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.1.tgz", + "integrity": "sha512-uikMmTog1XAKr5198qeTntVl3Don1Z6Gr0kfznOjbwq+732kpDFeNIRGF3DqH8Nj4zaWHPa/Z3E6K3vuWqq9UQ==", "requires": { - "tslib": "^1.9.0" + "semantic-release": "^8.2.3" } }, "@ngx-translate/http-loader": { @@ -4334,42 +3863,52 @@ } }, "@schematics/angular": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.23.tgz", - "integrity": "sha512-yisP1iCLGC4VnZNC3kOnYyTS5cmfKEnLM9bMzhZGMWwov9RRfdxKKeSnG9FJNwHxI0WjQ0UWwfiz1dj0YacG3g==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.3.tgz", + "integrity": "sha512-6XSnPW4G7aoKXccg0FTpZ02y/yi9y/bj7swnSL9Z4RRPIvPVapDjB7uJPg8sm8+PTIpcMhEFQrchIqM3LXW4zA==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", - "@angular-devkit/schematics": "8.3.23" + "@angular-devkit/core": "9.0.3", + "@angular-devkit/schematics": "9.0.3" }, "dependencies": { "@angular-devkit/core": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.23.tgz", - "integrity": "sha512-y++LN6R/fu+obPUKEMDSKZ5FzeWN5rV0Z8vrdC+uF02VJLv/5QI/dUx3ROKFzJO3m2LU6EAuo5b/TLAPq4ving==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.3.tgz", + "integrity": "sha512-3+abmv9K9d+BVgUAolYgoOqlGAA2Jb1pWo2biapSDG6KjUZHUCJdnsKigLtLorCdv0SrjTp56FFplkcqKsFQgA==", "dev": true, "requires": { "ajv": "6.10.2", "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.3", - "rxjs": "6.4.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", "source-map": "0.7.3" } }, "@angular-devkit/schematics": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.23.tgz", - "integrity": "sha512-O8i/vn6YfqbT0q7o4jsVOTnWE07T1tcvk2zJ4O/1ete2z+Z2aw1YtIddwXEGJNCDpeE0B7f2sUHoLOS4Jc4O9w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.3.tgz", + "integrity": "sha512-BQnZtFQPLZZOijhuEndtzL6cOnhaE8nNxupkRHavWohOMStnLsRyvVJj6JVDkf37wvT5koqTNjHhbdMxcCRc6A==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", - "rxjs": "6.4.0" + "@angular-devkit/core": "9.0.3", + "ora": "4.0.2", + "rxjs": "6.5.3" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" } }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -4384,25 +3923,46 @@ } }, "@schematics/update": { - "version": "0.803.25", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.25.tgz", - "integrity": "sha512-VIlqhJsCStA3aO4llxZ7lAOvQUqppyZdrEO7f/ApIJmuofPQTkO5Hx21tnv0dyExwoqPCSIHzEu4Tmc0/TWM1A==", + "version": "0.900.2", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.2.tgz", + "integrity": "sha512-CRDb2pax8DtSyO32b2D5uKlQZ+s5h9feD4oEMvm2zU7z/4wcoTNC0T9ols20aHYeNhKYD9FuMI3KQWlgMTPgbw==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.25", - "@angular-devkit/schematics": "8.3.25", + "@angular-devkit/core": "9.0.2", + "@angular-devkit/schematics": "9.0.2", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", - "pacote": "9.5.5", - "rxjs": "6.4.0", + "npm-package-arg": "^7.0.0", + "pacote": "9.5.8", + "rxjs": "6.5.3", "semver": "6.3.0", "semver-intersect": "1.4.0" }, "dependencies": { + "npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.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 + } + } + }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -4416,6 +3976,91 @@ } } }, + "@semantic-release/commit-analyzer": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.7.tgz", + "integrity": "sha512-bxCvvDsZeQp6Fvev8CdAV4pu9rEt8NOuLIFS0E8RLjKRnqQVL/fGAwpQWnRQ5hc08UZroguBNEENWpKBubWmKQ==", + "requires": { + "@semantic-release/error": "^2.0.0", + "conventional-changelog-angular": "^1.4.0", + "conventional-commits-parser": "^2.0.0", + "import-from": "^2.1.0", + "lodash": "^4.17.4", + "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=" + } + } + }, + "@semantic-release/condition-travis": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@semantic-release/condition-travis/-/condition-travis-6.2.1.tgz", + "integrity": "sha512-0g8O/OObhqjAotztjPjMJ43I6oX05z/Ffdu6HMsScDgLX1+QQzq5w0HnUxjmiXUGNwqi5M6s7BF65ZKHbGOytQ==", + "requires": { + "@semantic-release/error": "^2.0.0", + "github": "^12.0.0", + "parse-github-repo-url": "^1.4.1", + "semver": "^5.0.3", + "travis-deploy-once": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==" + }, + "@semantic-release/last-release-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/last-release-npm/-/last-release-npm-2.0.2.tgz", + "integrity": "sha512-ge5AWWtcrEd6GeG4tsv8gx774G9aPNrrornjBBqNDqN7Eg/xI914ftcnmSgnsbmKcqmq4g+QElIJhNMvsfpOkQ==", + "requires": { + "@semantic-release/error": "^2.0.0", + "npm-registry-client": "^8.4.0", + "npmlog": "^4.0.0" + } + }, + "@semantic-release/release-notes-generator": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-4.0.5.tgz", + "integrity": "sha512-LznqPnifl8jtQkV5ZXnQbqMLx9QROoX5d/FLteLyKy3AznLSubm5rH0LndKvf9ZI8XU8jwgLYu+wbLAEIR2PPg==", + "requires": { + "@semantic-release/error": "^2.0.0", + "conventional-changelog-angular": "^1.4.0", + "conventional-changelog-core": "^1.9.0", + "get-stream": "^3.0.0", + "import-from": "^2.1.0", + "lodash": "^4.17.4", + "pify": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, "@types/bcryptjs": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", @@ -4467,6 +4112,12 @@ "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" }, + "@types/estree": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz", + "integrity": "sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==", + "dev": true + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -4530,9 +4181,9 @@ "dev": true }, "@types/node": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz", - "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==", + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz", + "integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==", "dev": true }, "@types/node-forge": { @@ -4922,7 +4573,6 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -4944,9 +4594,9 @@ } }, "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", "dev": true }, "acorn-node": { @@ -4990,7 +4640,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, "requires": { "es6-promisify": "^5.0.0" } @@ -5004,6 +4653,24 @@ "humanize-ms": "^1.2.1" } }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + } + } + }, "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", @@ -5026,10 +4693,10 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, "android-versions": { @@ -5092,14 +4759,12 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "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" } @@ -5138,8 +4803,16 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } }, "arg": { "version": "4.1.2", @@ -5229,6 +4902,11 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -5270,8 +4948,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asap": { "version": "2.0.6", @@ -5283,7 +4960,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -5329,8 +5005,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -5414,14 +5089,12 @@ "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 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, "axios": { "version": "0.18.1", @@ -5441,6 +5114,31 @@ "ast-types-flow": "0.0.7" } }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "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" + } + } + } + }, "babel-plugin-dynamic-import-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", @@ -5551,7 +5249,6 @@ "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" } @@ -5562,14 +5259,14 @@ "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, "bcrypto": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/bcrypto/-/bcrypto-4.2.9.tgz", - "integrity": "sha512-upd5xGkB3REZwOOM2wGgUrc29HFQcm+mbXYLN8fKI2GcnWiCXmDU7f0wzr/ye2o1t0smhX3ddSzAqXIYEXehIw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/bcrypto/-/bcrypto-4.3.2.tgz", + "integrity": "sha512-uGmeiqLvLYUPRa0XoACDgXwxZY9wE1uiFHpdtGSs7FI2YYkakqIWZklkF8sKMzXM/HaHRIjulzQ8xuDoqptjVQ==", "requires": { "bsert": "~0.0.10", "bufio": "~1.0.6", "loady": "~0.0.1", - "nan": "^2.13.2" + "nan": "^2.14.0" } }, "better-assert": { @@ -5617,15 +5314,15 @@ } }, "bip32": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.4.tgz", - "integrity": "sha512-ioPytarPDIrWckWMuK4RNUtvwhvWEc2fvuhnO0WEwu732k5OLjUXv4rXi2c/KJHw9ZMNQMkYRJrBw81RujShGQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", + "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", "requires": { "@types/node": "10.12.18", "bs58check": "^2.1.1", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.0", + "tiny-secp256k1": "^1.1.3", "typeforce": "^1.11.5", "wif": "^2.0.6" }, @@ -5744,6 +5441,12 @@ "multicast-dns-service-types": "^1.1.0" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "bplist-creator": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", @@ -5949,8 +5652,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-indexof": { "version": "1.1.1", @@ -5986,8 +5688,7 @@ "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" }, "bytebuffer": { "version": "5.0.1", @@ -6004,26 +5705,64 @@ "dev": true }, "cacache": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz", - "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.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 + } } }, "cache-base": { @@ -6043,6 +5782,65 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -6076,8 +5874,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-css": { "version": "2.0.1", @@ -6085,6 +5882,35 @@ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, + "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.30001024", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz", @@ -6100,14 +5926,12 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "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", @@ -6146,6 +5970,75 @@ "color-name": "^1.0.0" } }, + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + }, + "dependencies": { + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + } + } + }, "chokidar": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", @@ -6232,14 +6125,11 @@ } } }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true }, "cli-cursor": { "version": "3.1.0", @@ -6250,6 +6140,12 @@ "restore-cursor": "^3.1.0" } }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "dev": true + }, "cli-truncate": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", @@ -6298,7 +6194,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -6308,14 +6203,12 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -6339,17 +6232,43 @@ "shallow-clone": "^3.0.0" } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "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" + }, + "dependencies": { + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + } + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codelyzer": { "version": "5.2.1", @@ -6392,6 +6311,16 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -6405,6 +6334,22 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz", + "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==", + "dev": true + }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", @@ -6421,8 +6366,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -6521,7 +6465,6 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -6529,6 +6472,15 @@ "typedarray": "^0.0.6" } }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -6564,40 +6516,363 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "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.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "conventional-changelog-angular": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", + "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + }, + "dependencies": { + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + } + } + }, + "conventional-changelog-core": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.5.tgz", + "integrity": "sha1-XbdWba18DLddr0f7spdve/mSjB0=", + "requires": { + "conventional-changelog-writer": "^2.0.3", + "conventional-commits-parser": "^2.1.0", + "dateformat": "^1.0.12", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^1.3.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^1.2.3", + "lodash": "^4.0.0", + "normalize-package-data": "^2.3.5", + "q": "^1.4.1", + "read-pkg": "^1.1.0", + "read-pkg-up": "^1.0.1", + "through2": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "conventional-changelog-writer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-2.0.3.tgz", + "integrity": "sha512-2E1h7UXL0fhRO5h0CxDZ5EBc5sfBZEQePvuZ+gPvApiRrICUyNDy/NQIP+2TBd4wKZQf2Zm7TxbzXHG5HkPIbA==", + "requires": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^1.1.1", + "dateformat": "^1.0.11", + "handlebars": "^4.0.2", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.0.0", + "meow": "^3.3.0", + "semver": "^5.0.1", + "split": "^1.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^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=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + } + } + }, + "conventional-commits-filter": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz", + "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==", "requires": { - "safe-buffer": "5.1.2" + "is-subset": "^0.1.1", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", + "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0", + "trim-off-newlines": "^1.0.0" }, "dependencies": { - "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 + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "requires": { + "through2": "^2.0.2" + } } } }, - "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.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, "requires": { "safe-buffer": "~5.1.1" }, @@ -6605,8 +6880,7 @@ "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 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -6701,6 +6975,15 @@ "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } } } }, @@ -6939,9 +7222,9 @@ "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" }, "cordova-plugin-x-socialsharing": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/cordova-plugin-x-socialsharing/-/cordova-plugin-x-socialsharing-5.6.3.tgz", - "integrity": "sha512-veAoIOgviGL9RCUyol9e6BxBRpyPV5OWaAmFKglbLjF2uGvj73k+jPe2+2p39ySPetxC8KERAz+1I6tfjk42Zg==" + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/cordova-plugin-x-socialsharing/-/cordova-plugin-x-socialsharing-5.6.4.tgz", + "integrity": "sha512-bBjWY9TgoH1CMK4P26zLT1D9rVcvI9LoIEGUjmwdLGiBP+IWo7RXu90RM1xHmVjG5hVLgmic5XyWc665ye8aRQ==" }, "cordova-sqlite-storage": { "version": "4.0.0", @@ -6982,8 +7265,7 @@ "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 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "5.2.1", @@ -7095,10 +7377,59 @@ "randomfill": "^1.0.3" } }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "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-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "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-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-selector-tokenizer": { @@ -7146,12 +7477,28 @@ } } }, + "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" + } + }, "css-unit-converter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", "dev": true }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, "cssauron": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", @@ -7167,6 +7514,100 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "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.2", + "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.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -7185,11 +7626,18 @@ "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", "dev": true }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, "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" } @@ -7212,10 +7660,166 @@ "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", "dev": true }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^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=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + } + } + }, "dayjs": { - "version": "1.8.17", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.17.tgz", - "integrity": "sha512-47VY/htqYqr9GHd7HW/h56PpQzRBSJcxIQFwqL3P20bMF/3az5c3PWdVY3LmPXFl6cQCYHL7c79b9ov+2bOBbw==" + "version": "1.8.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.20.tgz", + "integrity": "sha512-mH0MCDxw6UCGJYxVN78h8ugWycZAO8thkj3bW6vApL5tS0hQplIDdAQcmbvl7n35H0AKdCJQaArTrIQw2xt4Qg==" }, "debug": { "version": "3.1.0", @@ -7234,14 +7838,36 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } }, "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 + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } }, "dedent": { "version": "0.7.0", @@ -7292,6 +7918,23 @@ "strip-bom": "^3.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" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -7408,6 +8051,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -7537,12 +8185,55 @@ "void-elements": "^2.0.0" } }, + "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" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, "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": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "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" + } + }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -7551,6 +8242,11 @@ "is-obj": "^1.0.0" } }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + }, "drbg.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", @@ -7570,6 +8266,11 @@ "readable-stream": "^2.0.2" } }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -7586,7 +8287,6 @@ "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" @@ -7679,7 +8379,6 @@ "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" } @@ -7791,13 +8490,13 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" } }, @@ -7807,6 +8506,12 @@ "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", "dev": true }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, "err-code": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", @@ -7826,7 +8531,6 @@ "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" } @@ -7861,8 +8565,7 @@ "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "es6-promise-plugin": { "version": "4.2.2", @@ -7873,7 +8576,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -7887,8 +8589,7 @@ "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 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.14.1", @@ -7937,8 +8638,7 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -7980,7 +8680,6 @@ "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", @@ -8111,8 +8810,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -8237,8 +8935,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-copy": { "version": "2.0.4", @@ -8418,9 +9115,9 @@ } }, "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { "semver": "^6.0.0" @@ -8462,7 +9159,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -8514,11 +9210,15 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.5.1", @@ -8561,7 +9261,6 @@ "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" @@ -8651,6 +9350,41 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, "genfun": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", @@ -8660,8 +9394,7 @@ "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" }, "get-caller-file": { "version": "1.0.3", @@ -8675,11 +9408,179 @@ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^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=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "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" } @@ -8719,11 +9620,118 @@ "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" } }, + "git-head": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/git-head/-/git-head-1.20.1.tgz", + "integrity": "sha1-A20WpLN0lJ5OPa8VgnkDaG08zVI=", + "requires": { + "git-refs": "^1.1.3" + } + }, + "git-raw-commits": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", + "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "requires": { + "through2": "^2.0.2" + } + } + } + }, + "git-refs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/git-refs/-/git-refs-1.1.3.tgz", + "integrity": "sha1-gwl8s6klhcSkkm7FTiGC354g6J0=", + "requires": { + "path-object": "^2.3.0", + "slash": "^1.0.0", + "walk": "^2.3.9" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "git-semver-tags": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz", + "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==", + "requires": { + "meow": "^4.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "requires": { + "ini": "^1.3.2" + } + }, + "github": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/github/-/github-12.1.0.tgz", + "integrity": "sha512-HhWjhd/OATC4Hjj7xfGjGRtwWzo/fzTc55EkvsRatI9G6Vp47mVcdBIt1lQ56A9Qit/yVQRX1+M9jbWlcJvgug==", + "requires": { + "dotenv": "^4.0.0", + "follow-redirects": "1.2.6", + "https-proxy-agent": "^2.1.0", + "lodash": "^4.17.4", + "mime": "^2.0.3", + "netrc": "^0.1.4" + }, + "dependencies": { + "follow-redirects": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.6.tgz", + "integrity": "sha512-FrMqZ/FONtHnbqO651UPpfRUVukIEwJhXMfdr/JWAmrDbeYBu773b1J6gdWDyRIj4hvvzQEHoEOTrdR8o6KLYA==", + "requires": { + "debug": "^3.1.0" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + } + } + }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -8761,8 +9769,7 @@ "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 + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalyzer": { "version": "0.1.4", @@ -8796,6 +9803,42 @@ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "graceful-fs": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", @@ -8816,7 +9859,6 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", - "dev": true, "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -8827,14 +9869,12 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -8883,14 +9923,31 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -8967,6 +10024,12 @@ "minimalistic-assert": "^1.0.1" } }, + "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 + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -8978,10 +10041,13 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", - "dev": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz", + "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } }, "hpack.js": { "version": "2.1.6", @@ -8995,17 +10061,67 @@ "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-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, "html-entities": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "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" + } + } + } + }, "http-cache-semantics": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, "http-deceiver": { "version": "1.2.7", @@ -9077,7 +10193,6 @@ "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", @@ -9094,7 +10209,6 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, "requires": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -9116,9 +10230,9 @@ } }, "husky": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.1.tgz", - "integrity": "sha512-Qa0lRreeIf4Tl92sSs42ER6qc3hzoyQPPorzOrFWfPEVbdi6LuvJEqWKPk905fOWIR76iBpp7ECZNIwk+a8xuQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.3.tgz", + "integrity": "sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -9352,7 +10466,6 @@ "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" } @@ -9376,8 +10489,7 @@ "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" }, "indexes-of": { "version": "1.0.1", @@ -9414,13 +10526,12 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", - "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -9501,11 +10612,27 @@ "ipaddr.js": "^1.9.0" } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "dependencies": { + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + } + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -9518,8 +10645,7 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" }, "ionic": { "version": "5.4.16", @@ -9921,9 +11047,9 @@ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, "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==", + "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": { @@ -9961,8 +11087,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "2.1.0", @@ -9983,6 +11108,20 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, + "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-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -10057,11 +11196,15 @@ "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==" + }, "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 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { "version": "4.0.1", @@ -10072,6 +11215,12 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10083,6 +11232,11 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, "is-observable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", @@ -10127,8 +11281,7 @@ "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 + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-plain-object": { "version": "2.0.4", @@ -10159,11 +11312,35 @@ "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-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } }, "is-symbol": { "version": "1.0.2", @@ -10173,17 +11350,29 @@ "has-symbols": "^1.0.0" } }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "requires": { + "text-extensions": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -10191,16 +11380,15 @@ "dev": true }, "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { "version": "3.0.3", @@ -10225,8 +11413,7 @@ "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 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-api": { "version": "2.1.6", @@ -10391,6 +11578,15 @@ "handlebars": "^4.1.2" } }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "jasmine": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", @@ -10452,11 +11648,16 @@ } } }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, "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 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.13.1", @@ -10471,26 +11672,27 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { "version": "0.4.1", @@ -10500,8 +11702,7 @@ "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 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { "version": "3.3.3", @@ -10529,14 +11730,12 @@ "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -10618,9 +11817,9 @@ } }, "karma-jasmine": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.0.tgz", - "integrity": "sha512-IVGbC8gap5x5NNCEOsAE77ic8rZtHDt6wmO0fFC5yT5FeB8qKnGTeud2mtKyQ41xl7vZkZ7ZxKr4wMGR6tWN+A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", + "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", "dev": true, "requires": { "jasmine-core": "^3.5.0" @@ -10641,6 +11840,14 @@ "source-map-support": "^0.5.5" } }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -10648,16 +11855,15 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "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 }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -10685,9 +11891,9 @@ } }, "less": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", - "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", + "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", "dev": true, "requires": { "clone": "^2.1.2", @@ -10712,21 +11918,6 @@ "pify": "^4.0.1" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -10738,9 +11929,9 @@ } }, "license-webpack-plugin": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz", - "integrity": "sha512-7poZHRla+ae0eEButlwMrPpkXyhNVBf2EHePYWT0jyLnI6311/OXJkTI2sOIRungRpQgU2oDMpro5bSFPT5F0A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", + "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", @@ -11222,6 +12413,24 @@ } } }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^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=" + } + } + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -11274,7 +12483,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -11289,7 +12497,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, "requires": { "lodash._basecopy": "^3.0.0", "lodash.keys": "^3.0.0" @@ -11298,20 +12505,17 @@ "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" }, "lodash._bindcallback": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" }, "lodash._createassigner": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true, "requires": { "lodash._bindcallback": "^3.0.0", "lodash._isiterateecall": "^3.0.0", @@ -11321,20 +12525,22 @@ "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, "lodash.assign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true, "requires": { "lodash._baseassign": "^3.0.0", "lodash._createassigner": "^3.0.0", @@ -11355,31 +12561,33 @@ "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, "lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, "requires": { "lodash._getnative": "^3.0.0", "lodash.isarguments": "^3.0.0", "lodash.isarray": "^3.0.0" } }, + "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.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, "lodash.set": { "version": "4.3.2", @@ -11391,12 +12599,35 @@ "resolved": "https://registry.npmjs.org/lodash.sumby/-/lodash.sumby-4.6.0.tgz", "integrity": "sha1-fYdzfdshbaL35efNLdnEA6eIc0Y=" }, + "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==", + "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==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, "lodash.toarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "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": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -11533,9 +12764,9 @@ } }, "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", "dev": true }, "long": { @@ -11552,6 +12783,20 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -11617,6 +12862,40 @@ "promise-retry": "^1.1.1", "socks-proxy-agent": "^4.0.0", "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "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" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } } }, "mamacro": { @@ -11629,7 +12908,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -11640,6 +12918,11 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -11659,6 +12942,12 @@ "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", @@ -11669,7 +12958,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", @@ -11677,15 +12965,31 @@ } }, "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=", + "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" } }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -11856,8 +13160,12 @@ "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 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, "mini-css-extract-plugin": { "version": "0.8.0", @@ -11869,6 +13177,20 @@ "normalize-url": "1.9.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" + }, + "dependencies": { + "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" + } + } } }, "minimalistic-assert": { @@ -11894,6 +13216,15 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, "minipass": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", @@ -11904,6 +13235,84 @@ "yallist": "^3.0.0" } }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.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 + } + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.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 + } + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.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 + } + } + }, "minizlib": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", @@ -11956,7 +13365,6 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" }, @@ -11964,11 +13372,15 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", @@ -12056,8 +13468,12 @@ "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=" }, "netmask": { "version": "1.0.6", @@ -12065,6 +13481,11 @@ "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", "dev": true }, + "netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" + }, "ng-lint-staged": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ng-lint-staged/-/ng-lint-staged-0.1.6.tgz", @@ -12188,7 +13609,6 @@ "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", @@ -12196,11 +13616,15 @@ "validate-npm-package-license": "^3.0.1" }, "dependencies": { + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -12216,17 +13640,11 @@ "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" - } + "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 }, "normalize.css": { "version": "8.0.1", @@ -12250,22 +13668,25 @@ "dev": true }, "npm-package-arg": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", - "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", - "dev": true, + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", "requires": { - "hosted-git-info": "^2.6.0", + "hosted-git-info": "^2.7.1", "osenv": "^0.1.5", - "semver": "^5.5.0", + "semver": "^5.6.0", "validate-npm-package-name": "^3.0.0" }, "dependencies": { + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -12299,10 +13720,49 @@ } } }, + "npm-registry-client": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", + "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, "npm-registry-fetch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz", - "integrity": "sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", + "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -12318,11 +13778,70 @@ "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" } }, + "npmconf": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz", + "integrity": "sha512-iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA==", + "requires": { + "config-chain": "~1.1.8", + "inherits": "~2.0.0", + "ini": "^1.2.0", + "mkdirp": "^0.5.0", + "nopt": "~3.0.1", + "once": "~1.3.0", + "osenv": "^0.1.0", + "safe-buffer": "^5.1.1", + "semver": "2 || 3 || 4", + "uid-number": "0.0.5" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + } + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "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" + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -12332,20 +13851,17 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "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 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "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 + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-component": { "version": "0.0.3", @@ -12525,6 +14041,97 @@ "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, "objectorarray": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", @@ -12572,12 +14179,12 @@ } }, "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", + "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "is-wsl": "^2.1.0" } }, "opencollective-postinstall": { @@ -12593,13 +14200,20 @@ "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 + } } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" @@ -12608,8 +14222,7 @@ "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" } } }, @@ -12627,6 +14240,38 @@ "word-wrap": "~1.2.3" } }, + "ora": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", + "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.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 + }, + "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", @@ -12651,7 +14296,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -12682,29 +14326,30 @@ "os-tmpdir": "^1.0.0" } }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" }, "p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -12713,7 +14358,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -12724,6 +14368,11 @@ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, "p-retry": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", @@ -12733,11 +14382,27 @@ "retry": "^0.12.0" } }, + "p-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-series/-/p-series-1.1.0.tgz", + "integrity": "sha512-356covArc9UCfj2twY/sxCJKGMzzO+pJJtucizsPC6aS1xKSTBc9PQrQhvFR3+7F+fa2KBKdJjdIcv6NEWDcIQ==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "p-reduce": "^1.0.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.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 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pac-proxy-agent": { "version": "3.0.1", @@ -12807,13 +14472,14 @@ } }, "pacote": { - "version": "9.5.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.5.tgz", - "integrity": "sha512-jAEP+Nqj4kyMWyNpfTU/Whx1jA7jEc5cCOlurm0/0oL+v8TAp1QSsK83N7bYe+2bEdFzMAtPG5TBebjzzGV0cA==", + "version": "9.5.8", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz", + "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==", "dev": true, "requires": { "bluebird": "^3.5.3", "cacache": "^12.0.2", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", "get-stream": "^4.1.0", "glob": "^7.1.3", @@ -12827,7 +14493,7 @@ "normalize-package-data": "^2.4.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.2.3", + "npm-pick-manifest": "^3.0.0", "npm-registry-fetch": "^4.0.0", "osenv": "^0.1.5", "promise-inflight": "^1.0.1", @@ -12837,20 +14503,32 @@ "safe-buffer": "^5.1.2", "semver": "^5.6.0", "ssri": "^6.0.1", - "tar": "^4.4.8", + "tar": "^4.4.10", "unique-filename": "^1.1.1", "which": "^1.3.1" }, "dependencies": { - "npm-pick-manifest": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", - "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "dev": true, "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.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" } }, "semver": { @@ -12858,6 +14536,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } } } }, @@ -12909,11 +14596,15 @@ "safe-buffer": "^5.1.1" } }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=" + }, "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" @@ -12970,8 +14661,7 @@ "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 + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -12989,6 +14679,15 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "path-object": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/path-object/-/path-object-2.3.0.tgz", + "integrity": "sha1-A+RmU+XDdcYK8cq92UvGRIpdkRA=", + "requires": { + "core-util-is": "^1.0.1", + "lodash.assign": "^3.0.0" + } + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -13004,7 +14703,6 @@ "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" }, @@ -13012,8 +14710,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, @@ -13038,8 +14735,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { "version": "2.1.1", @@ -13056,14 +14752,12 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "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" } @@ -13154,17 +14848,107 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "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==", + "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" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, + "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" + } + }, + "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" + } + }, + "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-functions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", @@ -13256,6 +15040,136 @@ "schema-utils": "^1.0.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" + } + }, + "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": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "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 + }, + "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-nested": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.1.tgz", @@ -13294,6 +15208,140 @@ } } }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, "postcss-scss": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", @@ -13322,6 +15370,29 @@ } } }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "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": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", @@ -13367,8 +15438,7 @@ "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 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", @@ -13418,6 +15488,11 @@ "string.prototype.codepointat": "^0.2.0" } }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, "protoduck": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", @@ -13655,14 +15730,12 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", - "dev": true + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" }, "public-encrypt": { "version": "4.0.3", @@ -13682,7 +15755,6 @@ "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" @@ -13812,8 +15884,7 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { "version": "4.3.4", @@ -13843,6 +15914,11 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -13950,11 +16026,69 @@ "util-promisify": "^2.1.0" } }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + } + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -13968,8 +16102,7 @@ "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 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -14002,6 +16135,15 @@ "resolve": "^1.1.6" } }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, "reduce-css-calc": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz", @@ -14167,9 +16309,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", - "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", + "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -14201,11 +16343,18 @@ "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=", + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -14233,7 +16382,6 @@ "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", @@ -14243,16 +16391,14 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, "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 + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "1.0.1", @@ -14260,6 +16406,11 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -14286,8 +16437,7 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, "resolve-url": { "version": "0.2.1", @@ -14295,6 +16445,14 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -14331,6 +16489,18 @@ "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", "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", @@ -14349,6 +16519,17 @@ "inherits": "^2.0.1" } }, + "rollup": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.25.2.tgz", + "integrity": "sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, "rsvp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", @@ -14403,35 +16584,44 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.22.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz", - "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.3.tgz", + "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.2.0.tgz", - "integrity": "sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", + "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", "dev": true, "requires": { "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", - "semver": "^5.5.0" + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.1.0", + "semver": "^6.3.0" }, "dependencies": { + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -14446,9 +16636,9 @@ } }, "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, "schema-utils": { @@ -14528,10 +16718,96 @@ } } }, + "semantic-release": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-8.2.3.tgz", + "integrity": "sha512-L0EKspX5xaPKhrrZWwbdlydwk+uXQG+SadYlaQjYQJjaBSfptd+jL6FRu3LspZoLxvKF8yQWe4sYAySHcp69aw==", + "requires": { + "@semantic-release/commit-analyzer": "^3.0.1", + "@semantic-release/condition-travis": "^6.0.0", + "@semantic-release/error": "^2.0.0", + "@semantic-release/last-release-npm": "^2.0.0", + "@semantic-release/release-notes-generator": "^4.0.0", + "execa": "^0.8.0", + "fs-extra": "^4.0.2", + "git-head": "^1.2.1", + "github": "^12.0.0", + "lodash": "^4.0.0", + "nerf-dart": "^1.0.0", + "nopt": "^4.0.0", + "normalize-package-data": "^2.3.4", + "npmconf": "^2.1.2", + "npmlog": "^4.0.0", + "p-series": "^1.0.0", + "parse-github-repo-url": "^1.3.0", + "require-relative": "^0.8.7", + "semver": "^5.4.1" + }, + "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=", + "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=", + "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" + } + }, + "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==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "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==", + "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==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, "semver": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", - "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==" + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==" }, "semver-compare": { "version": "1.0.0", @@ -14696,8 +16972,7 @@ "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 + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-immediate-shim": { "version": "1.0.1", @@ -14779,8 +17054,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simctl": { "version": "2.0.0", @@ -14818,11 +17092,27 @@ } } }, + "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 + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { "version": "3.0.0", @@ -14868,6 +17158,11 @@ } } }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", @@ -15184,8 +17479,7 @@ "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 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-loader": { "version": "0.2.4", @@ -15198,12 +17492,12 @@ } }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "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.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -15236,7 +17530,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -15245,14 +17538,12 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -15261,8 +17552,7 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "spdy": { "version": "4.0.1", @@ -15324,9 +17614,9 @@ "dev": true }, "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "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", @@ -15345,6 +17635,14 @@ "chalk": "^2.0.1" } }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -15392,7 +17690,6 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -15406,14 +17703,38 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.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 + } } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -15539,8 +17860,7 @@ "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 + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-argv": { "version": "0.3.1", @@ -15557,7 +17877,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -15566,14 +17885,12 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -15617,7 +17934,6 @@ "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" }, @@ -15625,8 +17941,7 @@ "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 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -15645,7 +17960,6 @@ "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" } @@ -15658,8 +17972,7 @@ "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 + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-final-newline": { "version": "2.0.0", @@ -15667,6 +17980,11 @@ "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=" + }, "style-loader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", @@ -15689,45 +18007,75 @@ } } }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "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": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-obj": "^2.0.0" } }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "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 + }, + "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": { - "amdefine": ">=0.0.4" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, + "stylus": { + "version": "0.54.7", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", + "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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 + } + } + }, "stylus-loader": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", @@ -15810,11 +18158,31 @@ "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" } }, + "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" + } + }, "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", @@ -15967,9 +18335,9 @@ } }, "terser": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", - "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz", + "integrity": "sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ==", "dev": true, "requires": { "commander": "^2.20.0", @@ -15978,35 +18346,142 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz", + "integrity": "sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ==", "dev": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" }, "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==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", + "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "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" + } + }, + "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 + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.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" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "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" + } + }, + "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 + }, + "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" + } + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -16016,7 +18491,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -16034,6 +18508,11 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -16043,6 +18522,12 @@ "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 + }, "tiny-glob": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.6.tgz", @@ -16088,8 +18573,7 @@ "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 + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -16153,7 +18637,6 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -16162,8 +18645,39 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "travis-deploy-once": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/travis-deploy-once/-/travis-deploy-once-3.3.0.tgz", + "integrity": "sha512-N0l+sdYHMQbJmQWfjmxkKRJrMWJ+52Ve1dhGDiPhGXFiWO0A0zSeTxiFujz0rSOLOl9OhsZ9EMlJh2lNrgGugA==", + "requires": { + "chalk": "^2.1.0", + "got": "^8.0.1", + "p-retry": "^1.0.0", + "semver": "^5.4.1", + "url-join": "^2.0.2" + }, + "dependencies": { + "p-retry": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-1.0.0.tgz", + "integrity": "sha1-OSczKkt9cCabU1UVEX/FR9oaaWg=", + "requires": { + "retry": "^0.10.0" + } + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -16173,6 +18687,16 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=" + }, "ts-node": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz", @@ -16245,7 +18769,6 @@ "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" } @@ -16253,8 +18776,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-check": { "version": "0.3.2", @@ -16284,8 +18806,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -16311,13 +18832,17 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", - "dev": true, "optional": true, "requires": { "commander": "~2.20.3", "source-map": "~0.6.1" } }, + "uid-number": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", + "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=" + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -16375,6 +18900,12 @@ "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", @@ -16428,6 +18959,12 @@ "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", @@ -16512,6 +19049,11 @@ } } }, + "url-join": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", + "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" + }, "url-parse": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", @@ -16522,6 +19064,26 @@ "requires-port": "^1.0.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + } + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -16576,8 +19138,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util-promisify": { "version": "2.1.0", @@ -16588,6 +19149,97 @@ "object.getownpropertydescriptors": "^2.0.3" } }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -16603,7 +19255,6 @@ "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" @@ -16613,7 +19264,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, "requires": { "builtins": "^1.0.3" } @@ -16624,11 +19274,16 @@ "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", @@ -16647,6 +19302,14 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "walk": { + "version": "2.3.14", + "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz", + "integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==", + "requires": { + "foreachasync": "^3.0.0" + } + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -17367,6 +20030,15 @@ "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" + } + }, "webdriver-js-extender": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", @@ -17378,9 +20050,9 @@ } }, "webpack": { - "version": "4.39.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.2.tgz", - "integrity": "sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA==", + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -17406,31 +20078,88 @@ "terser-webpack-plugin": "^1.4.1", "watchpack": "^1.6.0", "webpack-sources": "^1.4.1" - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "dev": true, - "requires": { - "source-list-map": "~0.1.7", - "source-map": "~0.4.1" }, "dependencies": { - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", "dev": true }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "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" + } + }, + "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" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "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" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" } } } @@ -17448,6 +20177,16 @@ "webpack-log": "^2.0.0" }, "dependencies": { + "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" + } + }, "mime": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", @@ -18150,6 +20889,12 @@ } } }, + "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", @@ -18265,12 +21010,12 @@ } }, "webpack-subresource-integrity": { - "version": "1.1.0-rc.6", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", - "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz", + "integrity": "sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g==", "dev": true, "requires": { - "webpack-core": "^0.6.8" + "webpack-sources": "^1.3.0" } }, "webrtc-adapter": { @@ -18315,8 +21060,7 @@ "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 + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "which-pm-runs": { "version": "1.0.0", @@ -18324,6 +21068,14 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "wif": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", @@ -18350,8 +21102,7 @@ "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, "worker-farm": { "version": "1.7.0", @@ -18375,7 +21126,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -18385,7 +21135,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -18394,7 +21143,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -18494,14 +21242,12 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "3.1.1", diff --git a/package.json b/package.json index 2e80f4d6d..68f90b9cb 100644 --- a/package.json +++ b/package.json @@ -21,28 +21,31 @@ }, "private": true, "dependencies": { - "@angular/common": "~8.2.14", - "@angular/compiler": "~8.2.14", - "@angular/core": "~8.2.14", - "@angular/forms": "~8.2.14", - "@angular/platform-browser": "~8.2.14", - "@angular/platform-browser-dynamic": "~8.2.14", - "@angular/router": "~8.2.14", - "@arkecosystem/crypto": "^2.6.0-next.6", - "@ionic-native/clipboard": "^5.20.0", - "@ionic-native/core": "^5.20.0", - "@ionic-native/in-app-browser": "^5.20.0", - "@ionic-native/keyboard": "^5.20.0", - "@ionic-native/network": "^5.20.0", - "@ionic-native/qr-scanner": "^5.20.0", - "@ionic-native/screen-orientation": "^5.20.0", - "@ionic-native/social-sharing": "^5.20.0", - "@ionic-native/splash-screen": "^5.20.0", - "@ionic-native/status-bar": "^5.20.0", - "@ionic-native/vibration": "^5.20.0", + "@angular/common": "~9.0.1", + "@angular/compiler": "~9.0.1", + "@angular/core": "~9.0.1", + "@angular/forms": "~9.0.1", + "@angular/localize": "^9.0.1", + "@angular/platform-browser": "~9.0.1", + "@angular/platform-browser-dynamic": "~9.0.1", + "@angular/router": "~9.0.1", + "@arkecosystem/crypto": "^2.6.1", + "@ionic-native/background-mode": "^5.21.5", + "@ionic-native/clipboard": "^5.21.5", + "@ionic-native/core": "^5.21.5", + "@ionic-native/in-app-browser": "^5.21.5", + "@ionic-native/keyboard": "^5.21.5", + "@ionic-native/local-notifications": "^5.21.5", + "@ionic-native/network": "^5.21.5", + "@ionic-native/qr-scanner": "^5.21.5", + "@ionic-native/screen-orientation": "^5.21.5", + "@ionic-native/social-sharing": "^5.21.5", + "@ionic-native/splash-screen": "^5.21.5", + "@ionic-native/status-bar": "^5.21.5", + "@ionic-native/vibration": "^5.21.5", "@ionic/angular": "^5.0.0", "@ionic/storage": "^2.2.0", - "@ngx-translate/core": "^12.0.0", + "@ngx-translate/core": "^12.1.1", "@ngx-translate/http-loader": "^4.0.0", "angular-html-parser": "^1.4.0", "angular2-qrcode": "^2.0.3", @@ -68,7 +71,7 @@ "cordova-plugin-statusbar": "^2.4.3", "cordova-plugin-vibration": "^3.1.1", "cordova-plugin-whitelist": "^1.3.4", - "cordova-plugin-x-socialsharing": "^5.6.3", + "cordova-plugin-x-socialsharing": "^5.6.4", "cordova-sqlite-storage": "^4.0.0", "core-js": "^3.6.4", "dequal": "^1.0.0", @@ -84,25 +87,21 @@ "node-forge": "^0.9.1", "rxjs": "^6.5.4", "rxjs-compat": "^6.5.4", - "semver": "^7.1.2", + "semver": "^7.1.3", "string-hash": "^1.1.3", "tslib": "^1.10.0", "uuid": "^7.0.0", "zone.js": "~0.10.2" }, "devDependencies": { - "@angular-builders/custom-webpack": "^8.4.1", - "@angular-devkit/architect": "~0.803.25", - "@angular-devkit/build-angular": "~0.803.25", - "@angular-devkit/core": "~8.3.25", - "@angular-devkit/schematics": "~8.3.25", - "@angular/cli": "^8.3.25", - "@angular/compiler": "~8.2.14", - "@angular/compiler-cli": "~8.2.14", - "@angular/language-service": "~8.2.14", - "@ionic-native-mocks/splash-screen": "^2.0.12", - "@ionic/angular-toolkit": "~2.1.2", - "@ionic/lab": "^3.0.1", + "@angular-builders/custom-webpack": "^9.0.0", + "@angular-devkit/architect": "~0.900.2", + "@angular-devkit/build-angular": "~0.900.2", + "@angular/cli": "^9.0.2", + "@angular/compiler-cli": "~9.0.1", + "@angular/language-service": "~9.0.1", + "@ionic/angular-toolkit": "^2.2.0", + "@ionic/lab": "^3.1.0", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", "@types/bytebuffer": "^5.0.40", @@ -110,18 +109,18 @@ "@types/jasmine": "~3.5.3", "@types/jasminewd2": "~2.0.8", "@types/lodash": "^4.14.149", - "@types/node": "^13.7.0", + "@types/node": "^13.7.1", "@types/node-forge": "^0.9.2", "@types/semver": "^7.1.0", "codelyzer": "^5.2.1", - "husky": "^4.2.1", + "husky": "^4.2.3", "ionic": "^5.4.16", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~4.4.1", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~2.1.1", - "karma-jasmine": "~3.1.0", + "karma-jasmine": "~3.1.1", "karma-jasmine-html-reporter": "^1.5.2", "lint-staged": "^10.0.7", "ng-lint-staged": "^0.1.6", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 14608bb45..7d0931792 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -123,13 +123,6 @@ const routes: Routes = [ "./pages/wallet/wallet-import-manual/wallet-import-manual.module" ).then(m => m.WalletManualImportPageModule), }, - { - path: "wallets/top", - loadChildren: () => - import( - "./pages/wallet/wallet-top-list/wallet-top-list.module" - ).then(m => m.WalletTopListPageModule), - }, { path: "wallets", loadChildren: () => diff --git a/src/app/app.component.html b/src/app/app.component.html index ba043cc64..e3b3d8b08 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -22,10 +22,6 @@

{{ "WALLETS_PAGE.WALLETS" | translate }} - - - {{ 'CUSTOM_NETWORK.MANAGE_NETWORKS' | translate }} - - - - - - - - - -
- - - -
-
- - diff --git a/src/app/modals/custom-network-manage/custom-network-manage.module.ts b/src/app/modals/custom-network-manage/custom-network-manage.module.ts deleted file mode 100644 index 4de183938..000000000 --- a/src/app/modals/custom-network-manage/custom-network-manage.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CustomNetworkComponentModule } from "@/components/custom-network/custom-network.module"; -import { CommonModule } from "@angular/common"; -import { NgModule } from "@angular/core"; -import { FormsModule } from "@angular/forms"; -import { IonicModule } from "@ionic/angular"; -import { TranslateModule } from "@ngx-translate/core"; -import { CustomNetworkManageModal } from "./custom-network-manage"; - -@NgModule({ - declarations: [CustomNetworkManageModal], - imports: [ - IonicModule, - FormsModule, - CommonModule, - TranslateModule, - CustomNetworkComponentModule, - ], - exports: [CustomNetworkManageModal], -}) -export class CustomNetworkManageModalModule {} diff --git a/src/app/modals/custom-network-manage/custom-network-manage.ts b/src/app/modals/custom-network-manage/custom-network-manage.ts deleted file mode 100644 index 733b09ab9..000000000 --- a/src/app/modals/custom-network-manage/custom-network-manage.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component } from "@angular/core"; -import { ModalController } from "@ionic/angular"; - -@Component({ - selector: "customNetworkManageModal", - templateUrl: "custom-network-manage.html", -}) -export class CustomNetworkManageModal { - public constructor(private modalCtrl: ModalController) {} - - dismiss() { - this.modalCtrl.dismiss(); - } -} diff --git a/src/app/modals/wallet-backup/wallet-backup.html b/src/app/modals/wallet-backup/wallet-backup.html index 8548657a5..56b1b35e8 100644 --- a/src/app/modals/wallet-backup/wallet-backup.html +++ b/src/app/modals/wallet-backup/wallet-backup.html @@ -88,7 +88,7 @@ diff --git a/src/app/pages/delegates/delegates.ts b/src/app/pages/delegates/delegates.ts index aff849126..b1b88d40e 100644 --- a/src/app/pages/delegates/delegates.ts +++ b/src/app/pages/delegates/delegates.ts @@ -28,7 +28,7 @@ import { DelegateDetailPage } from "./delegate-detail/delegate-detail"; styleUrls: ["delegates.pcss"], }) export class DelegatesPage implements OnDestroy { - @ViewChild("delegateSlider", { read: IonSlides, static: false }) + @ViewChild("delegateSlider", { read: IonSlides }) slider: IonSlides; @ViewChild("pinCode", { read: PinCodeComponent, static: true }) @@ -40,7 +40,7 @@ export class DelegatesPage implements OnDestroy { }) confirmTransaction: ConfirmTransactionComponent; - @ViewChild("searchbar", { read: IonSearchbar, static: false }) + @ViewChild("searchbar", { read: IonSearchbar }) searchbar: IonSearchbar; public isSearch = false; diff --git a/src/app/pages/network-status/network-status.html b/src/app/pages/network-status/network-status.html deleted file mode 100644 index 289677d43..000000000 --- a/src/app/pages/network-status/network-status.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - {{ 'NETWORKS_PAGE.NETWORK_STATUS' | translate }} - - - - - - - - - - -
- {{ 'NETWORKS_PAGE.PEER' | translate }} -
-
{{ getPeerUrl() }}
-
-
- - - -
- {{ 'NETWORKS_PAGE.HEIGHT' | translate }} -
-
- {{ currentPeer?.height | number }} -
-
-
- - - -
- {{ 'NETWORKS_PAGE.VERSION' | translate }} -
-
- {{ currentPeer?.version }} -
-
-
-
-
-
- - - - {{ 'NETWORKS_PAGE.CHANGE_PEER' | translate }} - - -
-
diff --git a/src/app/pages/network-status/network-status.module.ts b/src/app/pages/network-status/network-status.module.ts deleted file mode 100644 index 343444e8c..000000000 --- a/src/app/pages/network-status/network-status.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; -import { NetworkStatusPage } from "./network-status"; - -import { CommonModule } from "@angular/common"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; - -@NgModule({ - declarations: [NetworkStatusPage], - imports: [ - IonicModule, - CommonModule, - RouterModule.forChild([{ path: "", component: NetworkStatusPage }]), - TranslateModule, - ], -}) -export class NetworkStatusPageModule {} diff --git a/src/app/pages/network-status/network-status.pcss b/src/app/pages/network-status/network-status.pcss deleted file mode 100644 index 4c9d69f90..000000000 --- a/src/app/pages/network-status/network-status.pcss +++ /dev/null @@ -1,17 +0,0 @@ -:host { - .item-title { - @apply text-sm tracking-wide font-semibold mb-1 !important; - color: var(--ion-color-medium); - } - .item-content { - @apply text-base; - color: var(--ion-color-dark); - } - ion-list { - ion-item { - --padding-start: 0; - --inner-padding-top: 0.5rem; - --inner-padding-bottom: 0.5rem; - } - } -} diff --git a/src/app/pages/network-status/network-status.ts b/src/app/pages/network-status/network-status.ts deleted file mode 100644 index d4fa10e63..000000000 --- a/src/app/pages/network-status/network-status.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; -import { LoadingController } from "@ionic/angular"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { Subject, throwError } from "rxjs"; - -import { Network, Peer } from "ark-ts"; - -import { ToastProvider } from "@/services/toast/toast"; -import { TranslateService } from "@ngx-translate/core"; -import { catchError, debounceTime, takeUntil, tap } from "rxjs/operators"; - -@Component({ - selector: "page-network-status", - templateUrl: "network-status.html", - styleUrls: ["network-status.pcss"], -}) -export class NetworkStatusPage implements OnInit, OnDestroy { - public currentNetwork: Network; - public currentPeer: Peer; - - private unsubscriber$: Subject = new Subject(); - - private refreshIntervalListener; - private loader; - - constructor( - private arkApiProvider: ArkApiProvider, - private loadingCtrl: LoadingController, - private zone: NgZone, - private translateService: TranslateService, - private toastProvider: ToastProvider, - ) { - this.currentNetwork = this.arkApiProvider.network; - this.currentPeer = this.currentNetwork.activePeer; - } - - getPeerUrl() { - return `http://${this.currentPeer.ip}:${this.currentPeer.port}`; - } - - changePeer() { - this.translateService - .get("NETWORKS_PAGE.LOOKING_GOOD_PEER") - .pipe(debounceTime(500)) - .subscribe(async translate => { - this.loader = await this.loadingCtrl.create({ - message: translate, - duration: 10000, - }); - - this.arkApiProvider - .connectToRandomPeer() - .pipe( - takeUntil(this.unsubscriber$), - catchError(e => { - this.loader.dismiss(); - this.toastProvider.error( - e || "NETWORKS_PAGE.NO_GOOD_PEER", - ); - return throwError(e); - }), - ) - .subscribe(); - - await this.loader.present(); - }); - } - - private refreshData() { - this.arkApiProvider.client - .getPeerConfig(this.currentPeer.ip, this.currentNetwork.p2pPort) - .pipe(takeUntil(this.unsubscriber$)) - .subscribe(response => { - if (response) { - this.zone.run(() => { - this.currentPeer.version = response.data.version; - }); - } - }); - - this.arkApiProvider.client - .getPeerSyncing(this.getPeerUrl()) - .pipe(takeUntil(this.unsubscriber$)) - .subscribe(response => { - if (response) { - this.zone.run(() => { - this.currentPeer.height = response.height; - }); - } - }); - } - - private onUpdatePeer() { - this.arkApiProvider.onUpdatePeer$ - .pipe( - takeUntil(this.unsubscriber$), - tap(peer => { - if (this.loader) { - this.loader.dismiss(); - } - this.translateService - .get("NETWORKS_PAGE.PEER_SUCCESSFULLY_CHANGED") - .subscribe(translate => - this.toastProvider.success(translate), - ); - this.zone.run(() => (this.currentPeer = peer)); - this.refreshData(); - }), - ) - .subscribe(); - } - - ngOnInit() { - this.onUpdatePeer(); - this.refreshData(); - - this.refreshIntervalListener = setInterval(() => { - this.refreshData(); - }, 30 * 1000); - } - - ngOnDestroy() { - clearInterval(this.refreshIntervalListener); - - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } -} diff --git a/src/app/pages/profiles/profile-create/profile-create.html b/src/app/pages/profiles/profile-create/profile-create.html index 4f565a860..445b123da 100644 --- a/src/app/pages/profiles/profile-create/profile-create.html +++ b/src/app/pages/profiles/profile-create/profile-create.html @@ -33,7 +33,7 @@ diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html deleted file mode 100644 index 7ac723e1a..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - {{ 'DELEGATES_PAGE.REGISTER_DELEGATE' | translate }} - - - - - - - - - - - - - -
- - {{ 'DELEGATES_PAGE.DELEGATE_NAME' | translate - }} - - - -

- {{ 'DELEGATES_PAGE.USERNAME_ALREADY_EXISTS' | - translate }} -

-
- - - - - - -
- - - - {{ 'CREATE' | translate }} - - -
-
-
-
diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.module.ts b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.module.ts deleted file mode 100644 index 8a8954af7..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; -import { RegisterDelegatePage } from "./register-delegate"; - -import { InputFeeComponentModule } from "@/components/input-fee/input-fee.module"; -import { DirectivesModule } from "@/directives/directives.module"; -import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule } from "@angular/forms"; -import { TranslateModule } from "@ngx-translate/core"; - -@NgModule({ - declarations: [RegisterDelegatePage], - imports: [ - IonicModule, - FormsModule, - CommonModule, - DirectivesModule, - TranslateModule, - PipesModule, - InputFeeComponentModule, - ], - exports: [RegisterDelegatePage], -}) -export class RegisterDelegatePageModule {} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.scss b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.scss deleted file mode 100644 index 756adef0c..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.scss +++ /dev/null @@ -1,9 +0,0 @@ -:host { - ion-item { - --padding-start: 0; - } - - ion-input { - text-transform: lowercase; - } -} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.ts b/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.ts deleted file mode 100644 index 451fc08e2..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-delegate/register-delegate.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Component, OnDestroy } from "@angular/core"; -import { ModalController, NavController, NavParams } from "@ionic/angular"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { TransactionType } from "ark-ts/model"; -import lodash from "lodash"; -import { Subject } from "rxjs"; -import { takeUntil } from "rxjs/operators"; - -@Component({ - selector: "page-register-delegate", - templateUrl: "register-delegate.html", - styleUrls: ["register-delegate.scss"], -}) -export class RegisterDelegatePage implements OnDestroy { - public fee: number; - public symbol: string; - public name: string; - - public allowedDelegateNameChars = "[a-z0-9!@$&_.]+"; - public isExists = false; - public transactionType = TransactionType.CreateDelegate; - - private delegates; - private unsubscriber$: Subject = new Subject(); - - constructor( - public navCtrl: NavController, - public navParams: NavParams, - public modalCtrl: ModalController, - private arkApiProvider: ArkApiProvider, - ) { - this.symbol = this.arkApiProvider.network.symbol; - - this.arkApiProvider.delegates - .pipe(takeUntil(this.unsubscriber$)) - .subscribe(delegates => (this.delegates = delegates)); - } - - validateName() { - this.name = this.name.toLowerCase(); - const find = lodash.find(this.delegates, { - username: this.name.trim(), - }); - - this.isExists = !lodash.isNil(find); - } - - onFeeChange(newFee: number) { - this.fee = newFee; - } - - closeModal() { - this.modalCtrl.dismiss(); - } - - submitForm() { - this.modalCtrl.dismiss({ name: this.name, fee: this.fee }); - } - - ngOnDestroy() { - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } -} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html deleted file mode 100644 index 0304a612e..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.html +++ /dev/null @@ -1,91 +0,0 @@ - - - {{ 'WALLETS_PAGE.SECOND_PASSPHRASE' | translate }} - - - - - - - - - - - - - - {{ 'WALLETS_PAGE.PASSPHRASE' | translate }} - - - - - - - {{ 'NEXT' | translate }} - - - - - - - - - {{ 'WALLETS_PAGE.RE_ENTER_PASSPHRASE' | translate - }} - - -

- {{ 'WALLETS_PAGE.PASSPHRASE_NOT_MATCH' | translate }} -

-
-
- - - - - - {{ 'BACK_BUTTON_TEXT' | translate - }} - - - {{ 'CREATE' | translate }} ({{ - currentNetwork?.symbol }}{{ - fees?.secondsignature | unitsSatoshi - }}) - - - - - -
-
- - -

- {{ 'WALLETS_PAGE.BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT' | - translate }} -

-

- {{ 'WALLETS_PAGE.BACKUP_SECOND_PASSPHRASE' | translate }} -

-
diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.module.ts b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.module.ts deleted file mode 100644 index 9941ecdc2..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; -import { RegisterSecondPassphrasePage } from "./register-second-passphrase"; - -import { DirectivesModule } from "@/directives/directives.module"; -import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule } from "@angular/forms"; -import { TranslateModule } from "@ngx-translate/core"; - -@NgModule({ - declarations: [RegisterSecondPassphrasePage], - imports: [ - IonicModule, - FormsModule, - CommonModule, - DirectivesModule, - TranslateModule, - PipesModule, - ], - exports: [RegisterSecondPassphrasePage], -}) -export class RegisterSecondPassphrasePageModule {} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.scss b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.scss deleted file mode 100644 index 634ba011c..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.scss +++ /dev/null @@ -1,27 +0,0 @@ -page-register-second-passphrase { - ion-header { - // background: color($colors, primary-background, base)!important; - } - - ion-content { - // background: color($colors, secondary-background, base)!important; - } - - ion-footer { - &.note-toolbar { - color: white; - background: #b72626; - font-weight: bold; - padding: 1em 2em; - } - } - - .item { - padding-left: 0; - background: none; - } - - .controls-container { - flex: 1; - } -} diff --git a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.ts b/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.ts deleted file mode 100644 index ffec6ebcb..000000000 --- a/src/app/pages/wallet/wallet-dashboard/modal/register-second-passphrase/register-second-passphrase.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Component, OnInit } from "@angular/core"; -import { ModalController, NavController, NavParams } from "@ionic/angular"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; - -import { Fees, Network } from "ark-ts"; -import * as bip39 from "bip39"; - -@Component({ - selector: "page-register-second-passphrase", - templateUrl: "register-second-passphrase.html", - styleUrls: ["register-second-passphrase.scss"], -}) -export class RegisterSecondPassphrasePage implements OnInit { - public passphrase: string; - public repassphrase: string; - public fees: Fees; - public currentNetwork: Network; - - public step = 1; - public isWrong = false; - - constructor( - public navCtrl: NavController, - public navParams: NavParams, - private modalCtrl: ModalController, - private arkApiProvider: ArkApiProvider, - ) {} - - prev() { - this.step -= 1; - } - - next() { - this.repassphrase = undefined; - this.isWrong = false; - this.step += 1; - } - - create() { - if (this.passphrase !== this.repassphrase) { - this.isWrong = true; - return; - } - - this.dismiss(this.passphrase); - } - - dismiss(result?: any) { - this.modalCtrl.dismiss(result); - } - - ngOnInit() { - this.passphrase = bip39.generateMnemonic(); - this.currentNetwork = this.arkApiProvider.network; - this.arkApiProvider.fees.subscribe(fees => (this.fees = fees)); - } -} diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html index c0c7149c2..3ffdfa19b 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.html @@ -56,7 +56,7 @@

void; - private newDelegateName: string; - private newDelegateFee: number; - private newSecondPassphrase: string; public emptyTransactions = false; public minConfirmations = constants.WALLET_MIN_NUMBER_CONFIRMATIONS; @@ -136,23 +130,12 @@ export class WalletDashboardPage implements OnInit, OnDestroy { .get([ "WALLETS_PAGE.LABEL", "DELEGATES_PAGE.DELEGATES", - "DELEGATES_PAGE.REGISTER_DELEGATE", - "WALLETS_PAGE.SECOND_PASSPHRASE", "SETTINGS_PAGE.WALLET_BACKUP", "WALLETS_PAGE.REMOVE_WALLET", "WALLETS_PAGE.CONVERT_TO_FULL_WALLET", "WALLETS_PAGE.TOP_WALLETS", ]) .subscribe(async translation => { - // const delegateItem = { - // text: translation["DELEGATES_PAGE.REGISTER_DELEGATE"], - // role: "delegate", - // icon: "contact", - // handler: () => { - // this.presentRegisterDelegateModal(); - // }, - // }; - const delegatesItem = { text: translation["DELEGATES_PAGE.DELEGATES"], role: "label", @@ -194,25 +177,10 @@ export class WalletDashboardPage implements OnInit, OnDestroy { }, }; - // const topWalletsItem = { - // text: translation['WALLETS_PAGE.TOP_WALLETS'], - // role: 'label', - // icon: 'filing', - // handler: () => { - // this.presentTopWalletsModal(); - // } - // }; - - // DEPRECATED: - // if (!this.wallet.isWatchOnly && !this.wallet.secondSignature) buttons.unshift(secondPassphraseItem); - // if (!this.wallet.isWatchOnly) { buttons.unshift(topWalletsItem); } if (!this.wallet.isWatchOnly) { buttons.unshift(delegatesItem); } - // "Watch Only" address can't vote - // if (!this.wallet.isWatchOnly && !this.wallet.isDelegate) { - // buttons.unshift(delegateItem); - // } + if (!this.wallet.isWatchOnly) { buttons.splice(buttons.length - 1, 0, backupItem); } @@ -348,43 +316,6 @@ export class WalletDashboardPage implements OnInit, OnDestroy { modal.present(); } - async presentRegisterDelegateModal() { - const modal = await this.modalCtrl.create({ - component: RegisterDelegatePage, - }); - - modal.onDidDismiss().then(({ data }) => { - if (lodash.isEmpty(name)) { - return; - } - - this.newDelegateName = data.name; - this.newDelegateFee = data.fee; - this.onEnterPinCode = this.createDelegate; - this.pinCode.open("PIN_CODE.TYPE_PIN_SIGN_TRANSACTION", true, true); - }); - - modal.present(); - } - - async presentRegisterSecondPassphraseModal() { - const modal = await this.modalCtrl.create({ - component: RegisterSecondPassphrasePage, - }); - - modal.onDidDismiss().then(({ data }) => { - if (lodash.isEmpty(data)) { - return; - } - - this.newSecondPassphrase = data; - this.onEnterPinCode = this.createSignature; - this.pinCode.open("PIN_CODE.TYPE_PIN_SIGN_TRANSACTION", true); - }); - - modal.present(); - } - presentDeleteWalletConfirm() { this.translateService .get([ @@ -456,59 +387,6 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.transactions = transactions; } - // presentTopWalletsModal() { - // this.navCtrl.navigateForward('/wallets/top'); - // } - - private createDelegate(keys: WalletKeys) { - const publicKey = - this.wallet.publicKey || - PrivateKey.fromSeed(keys.key) - .getPublicKey() - .toHex(); - - const transaction = { - passphrase: keys.key, - secondPassphrase: keys.secondKey, - username: this.newDelegateName, - fee: this.newDelegateFee, - publicKey, - } as TransactionDelegate; - - this.arkApiProvider.transactionBuilder - .createDelegate(transaction) - .pipe(takeUntil(this.unsubscriber$)) - .subscribe(data => { - this.confirmTransaction.open(data, keys); - }); - } - - private onTransactionConfirm = (tx: Transaction): void => { - switch (tx.type) { - case TransactionType.CreateDelegate: - const userName = - tx.asset && tx.asset.delegate - ? tx.asset.delegate.username - : null; - this.userDataProvider.ensureWalletDelegateProperties( - this.wallet, - userName, - ); - break; - } - }; - - private createSignature(keys: WalletKeys) { - keys.secondPassphrase = this.newSecondPassphrase; - - this.arkApiProvider.transactionBuilder - .createSignature(keys.key, keys.secondPassphrase) - .pipe(takeUntil(this.unsubscriber$)) - .subscribe(data => { - this.confirmTransaction.open(data, keys); - }); - } - private saveWallet() { this.userDataProvider.updateWallet(this.wallet, this.profile.profileId); } @@ -647,7 +525,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { ngOnInit(): void { this.confirmTransaction.confirm .pipe(takeUntil(this.unsubscriber$)) - .subscribe(this.onTransactionConfirm); + .subscribe(); this.load(); this.refreshAllData(); this.refreshPrice(); diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 17f2da4fa..1d4c80e14 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -39,13 +39,13 @@ import { takeUntil } from "rxjs/operators"; styleUrls: ["wallet-list.pcss"], }) export class WalletListPage implements OnDestroy { - @ViewChild("walletSlider", { read: IonSlides, static: false }) + @ViewChild("walletSlider", { read: IonSlides }) slider: IonSlides; @ViewChild("content", { read: IonContent, static: true }) content: IonContent; - @ViewChild(BaseChartDirective, { static: false }) + @ViewChild(BaseChartDirective) chart: BaseChartDirective; public currentProfile: Profile; diff --git a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html deleted file mode 100644 index e9905b54b..000000000 --- a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -

- {{ topWallet?.username ? topWallet?.username : - topWallet?.address }} -

- -
- {{ topWallet?.address | truncateMiddle: 20}} -
- - - -

{{ 'WALLETS_PAGE.BALANCE' | translate }}

-
- {{ currentNetwork?.symbol }} {{ - topWallet?.getBalance() | number: '1.0-8' }} -
-
-
-
-
-
-
-
-
- - - - - - - - - - -
{{ 'WALLETS_PAGE.NO_TRANSACTIONS' | translate }}
-
-
- - - - - -

- {{ tx?.getActivityLabel() | translate }} -

-

- {{ (tx?.isTransfer()) && - (tx?.getAppropriateAddress() | accountLabel | - truncateMiddle: 12 : tx?.getAppropriateAddress()) || - (tx?.getTypeLabel() | translate) }} -

- -
-

- {{ tx?.isSender() ? '-' : '+' }}{{ - tx?.getAmount() | unitsSatoshi }} {{ - currentNetwork?.token | uppercase }} -

-

- {{ tx?.date | timezone | timestampHuman }} | {{ - (tx?.confirmations <= minConfirmations) && - tx?.confirmations || minConfirmations+'+' }} -

-
- - -
-
-
-
-
-
diff --git a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.module.ts b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.module.ts deleted file mode 100644 index 9ef31d71d..000000000 --- a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; -import { QRCodeComponentModule } from "@/components/qr-code/qr-code.module"; -import { DirectivesModule } from "@/directives/directives.module"; -import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; -import { TranslateModule } from "@ngx-translate/core"; -import { TopWalletDetailsPage } from "./top-wallet-details"; - -@NgModule({ - declarations: [TopWalletDetailsPage], - imports: [ - IonicModule, - CommonModule, - ClosePopupComponentModule, - QRCodeComponentModule, - PipesModule, - TranslateModule, - DirectivesModule, - ], - exports: [TopWalletDetailsPage], -}) -export class TopWalletDetailsPageModule {} diff --git a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.scss b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.scss deleted file mode 100644 index ef1f440dc..000000000 --- a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.scss +++ /dev/null @@ -1,73 +0,0 @@ -:host { - .content { - background-color: #ffffff; - } - - .info-toolbar { - padding: 1em 2em; - } - - .info-toolbar { - .toolbar-content { - color: white; - } - - .toolbar-background { - background: #23074d; /* fallback for old browsers */ - background: -webkit-linear-gradient( - to right, - #1a1637, - #2f2832 - ); /* Chrome 10-25, Safari 5.1-6 */ - background: linear-gradient( - to right, - #1a1637, - #2f2832 - ); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ - } - } - - .username { - font-weight: 700; - margin-bottom: 1em; - -ms-text-overflow: ellipsis; - text-overflow: ellipsis; - } - - .qrcode-container { - display: inline-block; - padding: 1em; - background: white; - border-radius: 5px; - } - - .timestamp, - .type { - margin-top: 0.4em; - font-size: 1.2rem; - } - - .amount { - .type { - font-weight: 500; - } - } - .tx { - width: 100%; - margin: 0.7em auto; - box-shadow: none; - // border-bottom: 1px solid darken(color($colors, primary-background, base), 5%); - } - - ion-icon { - padding-left: 0.2em; - } -} - -.dark-theme { - page-wallet-dashboard { - .tx { - // border-bottom: 1px solid color($darkColors, secondary-background, base); - } - } -} diff --git a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.ts b/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.ts deleted file mode 100644 index 2de1d1844..000000000 --- a/src/app/pages/wallet/wallet-top-list/modal/top-wallet-details/top-wallet-details.ts +++ /dev/null @@ -1,196 +0,0 @@ -import * as constants from "@/app/app.constants"; -import { MarketCurrency, MarketHistory, MarketTicker } from "@/models/market"; -import { Transaction } from "@/models/transaction"; -import { Wallet } from "@/models/wallet"; -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { MarketDataProvider } from "@/services/market-data/market-data"; -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component, NgZone, OnDestroy } from "@angular/core"; -import { Clipboard } from "@ionic-native/clipboard/ngx"; -import { - IonRefresher, - LoadingController, - ModalController, - NavController, - NavParams, -} from "@ionic/angular"; -import { TranslateService } from "@ngx-translate/core"; -import { Fees, Network } from "ark-ts"; -import lodash from "lodash"; -import { Subject } from "rxjs"; -import { finalize, takeUntil } from "rxjs/operators"; - -@Component({ - selector: "page-top-wallet-details", - templateUrl: "top-wallet-details.html", - styleUrls: ["top-wallet-details.scss"], - providers: [Clipboard], -}) -export class TopWalletDetailsPage implements OnDestroy { - public topWallet: Wallet; - public currentNetwork: Network; - public fees: Fees; - - public address: string; - - public ticker: MarketTicker; - public marketHistory: MarketHistory; - public marketCurrency: MarketCurrency; - - public emptyTransactions = false; - public minConfirmations = constants.WALLET_MIN_NUMBER_CONFIRMATIONS; - - private unsubscriber$: Subject = new Subject(); - constructor( - private navCtrl: NavController, - private navParams: NavParams, - private userDataProvider: UserDataProvider, - private arkApiProvider: ArkApiProvider, - private translateService: TranslateService, - private marketDataProvider: MarketDataProvider, - private zone: NgZone, - private clipboard: Clipboard, - private loadingCtrl: LoadingController, - private settingsDataProvider: SettingsDataProvider, - private toastProvider: ToastProvider, - private modalCtrl: ModalController, - ) { - this.topWallet = new Wallet().deserialize(this.navParams.get("wallet")); - - this.address = this.topWallet.address; - - if (!this.topWallet) { - this.navCtrl.pop(); - } - - this.currentNetwork = this.userDataProvider.currentNetwork; - } - - private refreshAllData() { - this.refreshTransactions(); - } - - private load() { - this.arkApiProvider.fees.subscribe(fees => (this.fees = fees)); - if (this.marketDataProvider.cachedTicker) { - this.setTicker(this.marketDataProvider.cachedTicker); - } - - this.marketDataProvider.history.subscribe( - history => (this.marketHistory = history), - ); - - if (lodash.isEmpty(this.topWallet)) { - this.navCtrl.pop(); - return; - } - - const transactions = this.topWallet.transactions; - this.emptyTransactions = lodash.isEmpty(transactions); - - // search for new transactions immediately - if (this.emptyTransactions && !this.topWallet.isCold) { - this.translateService - .get("TRANSACTIONS_PAGE.FETCHING_TRANSACTIONS") - .subscribe(async translation => { - const loader = await this.loadingCtrl.create({ - message: `${translation}...`, - }); - - loader.present(); - - this.refreshTransactions(loader); - }); - } - } - - private setTicker(ticker) { - this.ticker = ticker; - this.settingsDataProvider.settings.subscribe(settings => { - this.marketCurrency = this.ticker.getCurrency({ - code: settings.currency, - }); - }); - } - - private refreshTransactions(loader?: any) { - this.zone.runOutsideAngular(() => { - this.arkApiProvider.client - .getTransactionList(this.address) - .pipe( - finalize(() => - this.zone.run(() => { - if (loader) { - if (loader instanceof IonRefresher) { - loader.complete(); - } else { - loader.dismiss(); - } - } - this.emptyTransactions = lodash.isEmpty( - this.topWallet.transactions, - ); - }), - ), - takeUntil(this.unsubscriber$), - ) - .subscribe(response => { - if (response && response.success) { - this.topWallet.loadTransactions(response.transactions); - this.topWallet.lastUpdate = new Date().getTime(); - this.topWallet.isCold = lodash.isEmpty( - response.transactions, - ); - } - }); - }); - } - - openTransactionShow(tx: Transaction) { - if (this.topWallet) { - this.navCtrl.navigateForward("/transaction/show", { - queryParams: { - transaction: tx, - symbol: this.currentNetwork.symbol, - equivalentAmount: tx.getAmountEquivalent( - this.marketCurrency, - this.marketHistory, - ), - equivalentSymbol: this.marketCurrency.symbol, - }, - }); - } else { - this.toastProvider.error( - "WALLETS_PAGE.WARNING_SELECT_WALLET_TRANSACTION_LOOKUP", - ); - } - } - - copyAddress() { - this.clipboard.copy(this.topWallet.address).then( - () => this.toastProvider.success("COPIED_CLIPBOARD"), - () => this.toastProvider.error("COPY_CLIPBOARD_FAILED"), - ); - } - - doRefresh(refresher: IonRefresher) { - this.refreshTransactions(refresher); - } - - dismiss() { - this.modalCtrl.dismiss(); - } - - ionViewDidEnter() { - this.load(); - - this.refreshAllData(); - } - - ngOnDestroy() { - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } -} diff --git a/src/app/pages/wallet/wallet-top-list/wallet-top-list.html b/src/app/pages/wallet/wallet-top-list/wallet-top-list.html deleted file mode 100644 index 82acba493..000000000 --- a/src/app/pages/wallet/wallet-top-list/wallet-top-list.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - {{ 'WALLETS_PAGE.TOP_WALLETS' | translate }} - - - - - - - - - - - - - - - - - - {{ i + 1}} - - - - {{ topWallet?.username ? - topWallet?.username: - topWallet?.address}} - - - - - {{ network?.symbol }} {{ - getBalance(topWallet?.balance) | number: - '1.0-8' }} - - - - - - - - - - - - - - - diff --git a/src/app/pages/wallet/wallet-top-list/wallet-top-list.module.ts b/src/app/pages/wallet/wallet-top-list/wallet-top-list.module.ts deleted file mode 100644 index c1273d779..000000000 --- a/src/app/pages/wallet/wallet-top-list/wallet-top-list.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { NgModule } from "@angular/core"; -import { FormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; -import { IonicModule } from "@ionic/angular"; -import { TranslateModule } from "@ngx-translate/core"; -import { TopWalletDetailsPage } from "./modal/top-wallet-details/top-wallet-details"; -import { TopWalletDetailsPageModule } from "./modal/top-wallet-details/top-wallet-details.module"; -import { WalletTopListPage } from "./wallet-top-list"; - -@NgModule({ - declarations: [WalletTopListPage], - imports: [ - IonicModule, - FormsModule, - CommonModule, - RouterModule.forChild([{ path: "", component: WalletTopListPage }]), - TranslateModule, - PipesModule, - TopWalletDetailsPageModule, - ], - entryComponents: [TopWalletDetailsPage], -}) -export class WalletTopListPageModule {} diff --git a/src/app/pages/wallet/wallet-top-list/wallet-top-list.scss b/src/app/pages/wallet/wallet-top-list/wallet-top-list.scss deleted file mode 100644 index aae938745..000000000 --- a/src/app/pages/wallet/wallet-top-list/wallet-top-list.scss +++ /dev/null @@ -1,28 +0,0 @@ -:host { - .searchbar-clear-icon { - display: none !important; - } - - .top-wallet-list { - .list { - margin: 0 16px; - - .top-wallet-item { - // border-bottom: 1px solid darken(color($colors, primary-background, base), 5%); - padding: 0; - - .input-wrapper > .label { - margin: 10px 8px 10px 0; - } - .username { - white-space: normal; - font-size: 11pt; - } - .balance { - font-size: 10pt; - font-weight: 500; - } - } - } - } -} diff --git a/src/app/pages/wallet/wallet-top-list/wallet-top-list.ts b/src/app/pages/wallet/wallet-top-list/wallet-top-list.ts deleted file mode 100644 index c3842b213..000000000 --- a/src/app/pages/wallet/wallet-top-list/wallet-top-list.ts +++ /dev/null @@ -1,117 +0,0 @@ -import * as constants from "@/app/app.constants"; -import { Wallet } from "@/models/wallet"; -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component, NgZone, OnDestroy, ViewChild } from "@angular/core"; -import { - IonSearchbar, - IonSlides, - ModalController, - NavController, - Platform, -} from "@ionic/angular"; -import { Network } from "ark-ts"; -import { Subject } from "rxjs"; -import { takeUntil, tap } from "rxjs/operators"; -import { TopWalletDetailsPage } from "./modal/top-wallet-details/top-wallet-details"; - -@Component({ - selector: "page-wallet-top-list", - templateUrl: "wallet-top-list.html", - styleUrls: ["wallet-top-list.scss"], -}) -export class WalletTopListPage implements OnDestroy { - @ViewChild("topWalletSlider", { read: IonSlides, static: true }) - slider: IonSlides; - - @ViewChild("searchbar", { read: IonSearchbar, static: true }) - searchbar: IonSearchbar; - - public network: Network; - public isSearch = false; - public searchQuery = ""; - - public topWallets: Wallet[] = []; - public currentWallet; - private currentPage = 1; - - private unsubscriber$: Subject = new Subject(); - private refreshListener; - - constructor( - public platform: Platform, - public navCtrl: NavController, - private arkApiProvider: ArkApiProvider, - private zone: NgZone, - private modalCtrl: ModalController, - private userDataProvider: UserDataProvider, - ) { - this.network = this.userDataProvider.currentNetwork; - } - - async openDetailModal(wallet: Wallet) { - const modal = await this.modalCtrl.create({ - component: TopWalletDetailsPage, - componentProps: { - wallet, - }, - showBackdrop: true, - backdropDismiss: true, - }); - - modal.present(); - } - - toggleSearchBar() { - this.isSearch = !this.isSearch; - if (this.isSearch) { - setTimeout(() => { - this.searchbar.setFocus(); - }, 100); - } - } - - onUpdateTopWallets() { - this.arkApiProvider.onUpdateTopWallets$ - .pipe( - takeUntil(this.unsubscriber$), - tap(topWallets => { - this.zone.run(() => { - topWallets.forEach(wallet => { - this.topWallets.push(wallet); - }); - }); - }), - ) - .subscribe(); - } - - ionViewDidEnter() { - this.currentWallet = this.userDataProvider.currentWallet; - - this.onUpdateTopWallets(); - this.arkApiProvider - .fetchTopWallets(constants.TOP_WALLETS_TO_FETCH, this.currentPage) - .subscribe(); - } - - ngOnDestroy() { - clearInterval(this.refreshListener); - - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } - - getBalance(balance: string) { - return Number(balance) / constants.WALLET_UNIT_TO_SATOSHI; - } - - fetchWallets(infiniteScroll) { - this.currentPage++; - this.arkApiProvider - .fetchTopWallets(constants.TOP_WALLETS_TO_FETCH, this.currentPage) - .subscribe(() => { - infiniteScroll.complete(); - }); - } -} diff --git a/src/app/services/ark-api/ark-api.ts b/src/app/services/ark-api/ark-api.ts index 7cf27a0f7..768aeac29 100644 --- a/src/app/services/ark-api/ark-api.ts +++ b/src/app/services/ark-api/ark-api.ts @@ -1,9 +1,8 @@ -import { HttpClient, HttpParams } from "@angular/common/http"; +import { HttpClient } from "@angular/common/http"; import { Injectable } from "@angular/core"; import { EMPTY, Observable, of, Subject, throwError } from "rxjs"; -import { HttpUtils } from "@/app/utils/http-utils"; import { StorageProvider } from "@/services/storage/storage"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; @@ -12,7 +11,6 @@ import { INodeConfiguration, Transaction, TranslatableObject, - Wallet, } from "@/models/model"; import * as constants from "@/app/app.constants"; @@ -54,7 +52,6 @@ export class ArkApiProvider { public onSendTransaction$: Subject = new Subject< arkts.Transaction >(); - public onUpdateTopWallets$: Subject = new Subject(); private _network: StoredNetwork; private _api: arkts.Client; @@ -117,10 +114,6 @@ export class ArkApiProvider { return this.fetchDelegates(this._network.activeDelegates * 2); } - public get topWallets(): Observable { - return this.fetchTopWallets(constants.TOP_WALLETS_TO_FETCH); - } - public setNetwork(network: StoredNetwork) { // set default peer if (network.type !== null) { @@ -295,35 +288,6 @@ export class ArkApiProvider { }); } - fetchTopWallets( - numberWalletsToGet: number, - page?: number, - ): Observable { - if (!this._network || !this._network.isV2) { - return EMPTY; - } - - let topWallets: Wallet[] = []; - - const queryParams: HttpParams = HttpUtils.buildQueryParams({ - limit: numberWalletsToGet, - page, - }); - - return new Observable(observer => { - this.httpClient - .get<{ data: Wallet[]; meta: any }>( - `${this._network.getPeerAPIUrl()}/api/v2/wallets/top`, - { params: queryParams }, - ) - .subscribe(response => { - topWallets = response.data; - this.onUpdateTopWallets$.next(topWallets); - observer.next(topWallets); - }); - }); - } - public createTransaction( transaction: Transaction, key: string, From b36ba72b4cc53985ea3e0d0fbfd83521519c5957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Fri, 28 Feb 2020 15:41:11 -0300 Subject: [PATCH 11/46] hotfix: update and propagate wallets property (#504) --- src/app/pages/wallet/wallet-list/wallet-list.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 1d4c80e14..8208ed514 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -247,6 +247,7 @@ export class WalletListPage implements OnDestroy { !this.currentProfile || lodash.isEmpty(this.currentProfile.wallets) ) { + this.wallets = []; return; } From c1db63bc723720c9605bfd519b206fd1bad559b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 4 Mar 2020 08:55:06 -0300 Subject: [PATCH 12/46] fix: search bar and segment on the delegates screen (#508) --- src/app/pages/delegates/delegates.html | 15 +++++---------- src/app/pages/delegates/delegates.pcss | 9 ++++----- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/app/pages/delegates/delegates.html b/src/app/pages/delegates/delegates.html index e802e516c..752f8a5b3 100644 --- a/src/app/pages/delegates/delegates.html +++ b/src/app/pages/delegates/delegates.html @@ -12,11 +12,11 @@ #searchbar *ngIf="isSearch" [(ngModel)]="searchQuery" - spellcheck="false" - animated="true" - showCancelButton="false" + [spellcheck]="false" + [animated]="true" + showCancelButton="never" + clearIcon="none" placeholder="{{ 'SEARCH' | translate }}" - class="ion-no-shadow" > @@ -30,12 +30,7 @@ - + {{ 'DELEGATES_PAGE.ACTIVE' | translate }} diff --git a/src/app/pages/delegates/delegates.pcss b/src/app/pages/delegates/delegates.pcss index 5056cb125..e51d0c7f2 100644 --- a/src/app/pages/delegates/delegates.pcss +++ b/src/app/pages/delegates/delegates.pcss @@ -1,11 +1,10 @@ :host { - ion-item { - --padding-start: 0; + ion-searchbar { + --box-shadow: none; } - .ios ion-segment-button { - border-width: 1px; - border-color: var(--ion-color-primary); + ion-item { + --padding-start: 0; } .delegate-list { From 280f109c18db55f0df266752157b168e254b3703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 4 Mar 2020 10:30:30 -0300 Subject: [PATCH 13/46] fix: delegate vote form (#509) --- .../pages/delegates/delegate-detail/delegate-detail.html | 2 +- .../delegates/delegate-detail/delegate-detail.module.ts | 8 ++------ .../pages/delegates/delegate-detail/delegate-detail.ts | 2 ++ 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.html b/src/app/pages/delegates/delegate-detail/delegate-detail.html index 4a5c16952..b5935ce19 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.html +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.html @@ -59,7 +59,7 @@

-
+ diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts index 268adb3a1..d0bae1745 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts @@ -1,22 +1,18 @@ -import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; import { DelegateDetailPage } from "./delegate-detail"; +import { SharedModule } from "@/app/shared.module"; import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; import { InputFeeComponentModule } from "@/components/input-fee/input-fee.module"; import { QRCodeComponentModule } from "@/components/qr-code/qr-code.module"; import { PipesModule } from "@/pipes/pipes.module"; -import { FormsModule } from "@angular/forms"; -import { TranslateModule } from "@ngx-translate/core"; @NgModule({ declarations: [DelegateDetailPage], imports: [ IonicModule, - FormsModule, - CommonModule, - TranslateModule, + SharedModule, QRCodeComponentModule, PipesModule, ClosePopupComponentModule, diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.ts index a6ba9e74d..b85f39bfe 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.ts @@ -13,6 +13,7 @@ import { Delegate, Network, TransactionType } from "ark-ts"; import { Wallet } from "@/models/wallet"; import { ToastProvider } from "@/services/toast/toast"; +import { FormGroup } from "@angular/forms"; import { Clipboard } from "@ionic-native/clipboard/ngx"; import { TranslateService } from "@ngx-translate/core"; import lodash from "lodash"; @@ -31,6 +32,7 @@ export class DelegateDetailPage { public walletVote: Delegate; public transactionType = TransactionType.Vote; public fee: number; + public voteForm = new FormGroup({}); constructor( public navCtrl: NavController, From 280db0f8241f5e7adec33a99f0e9bcddf91131c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 4 Mar 2020 10:36:08 -0300 Subject: [PATCH 14/46] refactor: wallet selection on the transfer screen (#507) * feat: add wallet picker modal * chore: remove ionic4-auto-complete * fix: background color when a modal is open * refactor: implement input-address component * fix: ensure only valid addresses in the current network --- package-lock.json | 8 - package.json | 1 - .../components/address-list/address-list.html | 6 +- .../components/address-list/address-list.pcss | 10 - .../components/close-popup/close-popup.html | 2 +- .../input-address.component.html | 22 ++ .../input-address.component.scss | 5 + .../input-address/input-address.component.ts | 65 +++++ .../input-address/input-address.module.ts | 14 + .../wallet-picker.component.html | 21 ++ .../wallet-picker.component.module.ts | 12 + .../wallet-picker.component.pcss | 13 + .../wallet-picker/wallet-picker.component.ts | 27 ++ .../wallet-picker/wallet-picker.modal.html | 16 ++ .../wallet-picker.modal.module.ts | 12 + .../wallet-picker/wallet-picker.modal.ts | 40 +++ src/app/directives/directives.module.ts | 13 +- .../value-mask-on-blur/value-mask-on-blur.ts | 38 +++ src/app/models/contact.ts | 12 - src/app/pages/login/login.module.ts | 6 +- src/app/pages/login/login.ts | 3 - .../transaction-send/transaction-send.html | 85 +----- .../transaction-send.module.ts | 6 +- .../transaction-send/transaction-send.ts | 248 ++++-------------- .../pages/wallet/wallet-list/wallet-list.ts | 8 +- .../account-auto-complete.ts | 90 ------- src/app/services/user-data/user-data.ts | 4 - src/assets/styles/app.pcss | 30 ++- src/assets/styles/auto-complete.pcss | 44 ---- src/global.scss | 1 - 30 files changed, 399 insertions(+), 463 deletions(-) create mode 100644 src/app/components/input-address/input-address.component.html create mode 100644 src/app/components/input-address/input-address.component.scss create mode 100644 src/app/components/input-address/input-address.component.ts create mode 100644 src/app/components/input-address/input-address.module.ts create mode 100644 src/app/components/wallet-picker/wallet-picker.component.html create mode 100644 src/app/components/wallet-picker/wallet-picker.component.module.ts create mode 100644 src/app/components/wallet-picker/wallet-picker.component.pcss create mode 100644 src/app/components/wallet-picker/wallet-picker.component.ts create mode 100644 src/app/components/wallet-picker/wallet-picker.modal.html create mode 100644 src/app/components/wallet-picker/wallet-picker.modal.module.ts create mode 100644 src/app/components/wallet-picker/wallet-picker.modal.ts create mode 100644 src/app/directives/value-mask-on-blur/value-mask-on-blur.ts delete mode 100644 src/app/services/account-auto-complete/account-auto-complete.ts delete mode 100644 src/assets/styles/auto-complete.pcss diff --git a/package-lock.json b/package-lock.json index b3a9db5b7..500bb0866 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10990,14 +10990,6 @@ } } }, - "ionic4-auto-complete": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ionic4-auto-complete/-/ionic4-auto-complete-2.6.0.tgz", - "integrity": "sha512-R3SEGTL1oX02RtQWvOM9D+nn81tdhBBYa8CTxLoliDcIIIVYm6g7exnJI38ib7WgMP2EJo1mrq/lxyldxiTnXQ==", - "requires": { - "tslib": "^1.9.0" - } - }, "ionicons": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.0.tgz", diff --git a/package.json b/package.json index 68f90b9cb..824adaf9e 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,6 @@ "dequal": "^1.0.0", "es6-promise-plugin": "^4.2.2", "hammerjs": "^2.0.8", - "ionic4-auto-complete": "^2.6.0", "is-url": "^1.2.4", "lodash": "^4.17.15", "moment": "^2.24.0", diff --git a/src/app/components/address-list/address-list.html b/src/app/components/address-list/address-list.html index a611a451f..ec0522e53 100644 --- a/src/app/components/address-list/address-list.html +++ b/src/app/components/address-list/address-list.html @@ -1,6 +1,10 @@ -
+
{{ item[circleProperty].charAt(0) }}
diff --git a/src/app/components/address-list/address-list.pcss b/src/app/components/address-list/address-list.pcss index 10359972f..f7b34b5fe 100644 --- a/src/app/components/address-list/address-list.pcss +++ b/src/app/components/address-list/address-list.pcss @@ -1,14 +1,4 @@ :host { - .avatar { - @apply w-12 h-12 mr-4 rounded-full flex justify-center items-center font-bold text-lg; - background-color: var(--ion-color-light-shade); - color: var(--ion-color-light-contrast); - - &.highlight { - background-color: var(--ion-color-danger); - color: var(--ion-color-danger-contrast); - } - } .item-title { @apply text-lg !important; } diff --git a/src/app/components/close-popup/close-popup.html b/src/app/components/close-popup/close-popup.html index 0349f09a5..e04e040f6 100644 --- a/src/app/components/close-popup/close-popup.html +++ b/src/app/components/close-popup/close-popup.html @@ -1,4 +1,4 @@ - + +
+ + + + + + +
+ + + {{ "WALLETS_PAGE.ADDRESS" | translate }} + + + + diff --git a/src/app/components/input-address/input-address.component.scss b/src/app/components/input-address/input-address.component.scss new file mode 100644 index 000000000..17b232cfe --- /dev/null +++ b/src/app/components/input-address/input-address.component.scss @@ -0,0 +1,5 @@ +:host { + ion-item { + --padding-start: 0; + } +} diff --git a/src/app/components/input-address/input-address.component.ts b/src/app/components/input-address/input-address.component.ts new file mode 100644 index 000000000..f965467b3 --- /dev/null +++ b/src/app/components/input-address/input-address.component.ts @@ -0,0 +1,65 @@ +import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; +import { + Component, + EventEmitter, + OnInit, + Output, +} from "@angular/core"; +import { + ControlContainer, + FormControl, + FormGroupDirective, +} from "@angular/forms"; + +@Component({ + selector: "input-address", + templateUrl: "input-address.component.html", + styleUrls: ["input-address.component.scss"], + viewProviders: [ + { + provide: ControlContainer, + useExisting: FormGroupDirective, + }, + ], +}) +export class InputAddressComponent implements OnInit { + @Output() + public inputAddressQRCodeClick = new EventEmitter(); + + @Output() + public inputAddressContactClick = new EventEmitter(); + + public displayAddress: string; + + constructor( + private parentForm: FormGroupDirective, + private truncateMiddlePipe: TruncateMiddlePipe, + ) {} + + public ngOnInit() { + this.parentForm.form.addControl("recipientId", new FormControl()); + this.parentForm.form.controls.recipientId.valueChanges.subscribe( + value => { + this.displayAddress = this.truncateMiddlePipe.transform( + value, + 15, + ); + }, + ); + } + + public onPaste(input: ClipboardEvent) { + const value = input.clipboardData.getData("text"); + this.parentForm.form.patchValue({ + recipientAddress: value, + }); + } + + public emitContactClick() { + this.inputAddressContactClick.emit(); + } + + public emitQRCodeClick() { + this.inputAddressQRCodeClick.emit(); + } +} diff --git a/src/app/components/input-address/input-address.module.ts b/src/app/components/input-address/input-address.module.ts new file mode 100644 index 000000000..fd24247ee --- /dev/null +++ b/src/app/components/input-address/input-address.module.ts @@ -0,0 +1,14 @@ +import { SharedModule } from "@/app/shared.module"; +import { DirectivesModule } from "@/directives/directives.module"; +import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; +import { NgModule } from "@angular/core"; +import { IonicModule } from "@ionic/angular"; +import { InputAddressComponent } from "./input-address.component"; + +@NgModule({ + providers: [TruncateMiddlePipe], + declarations: [InputAddressComponent], + imports: [IonicModule, SharedModule, DirectivesModule], + exports: [InputAddressComponent], +}) +export class InputAddressComponentModule {} diff --git a/src/app/components/wallet-picker/wallet-picker.component.html b/src/app/components/wallet-picker/wallet-picker.component.html new file mode 100644 index 000000000..b1bafb0e2 --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.component.html @@ -0,0 +1,21 @@ + + + {{ title | translate }} + + +
+ {{ wallet?.name?.charAt(0) || symbol }} +
+ + +

{{ wallet.name }}

+

{{ wallet.address | truncateMiddle: 10 }}

+
+ +

+ {{ wallet.address | truncateMiddle: 15 }} +

+
+
+
+
diff --git a/src/app/components/wallet-picker/wallet-picker.component.module.ts b/src/app/components/wallet-picker/wallet-picker.component.module.ts new file mode 100644 index 000000000..6464c6073 --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.component.module.ts @@ -0,0 +1,12 @@ +import { SharedModule } from "@/app/shared.module"; +import { PipesModule } from "@/pipes/pipes.module"; +import { NgModule } from "@angular/core"; +import { IonicModule } from "@ionic/angular"; +import { WalletPickerComponent } from "./wallet-picker.component"; + +@NgModule({ + declarations: [WalletPickerComponent], + imports: [IonicModule, SharedModule, PipesModule], + exports: [WalletPickerComponent], +}) +export class WalletPickerComponentModule {} diff --git a/src/app/components/wallet-picker/wallet-picker.component.pcss b/src/app/components/wallet-picker/wallet-picker.component.pcss new file mode 100644 index 000000000..99be4266f --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.component.pcss @@ -0,0 +1,13 @@ +:host { + @apply w-full; + + ion-item { + --padding-start: 0; + --inner-padding-top: 0.5rem; + --inner-padding-bottom: 0.5rem; + } + + h3 { + font-weight: 500 !important; + } +} diff --git a/src/app/components/wallet-picker/wallet-picker.component.ts b/src/app/components/wallet-picker/wallet-picker.component.ts new file mode 100644 index 000000000..b809dcfcd --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.component.ts @@ -0,0 +1,27 @@ +import { Contact } from "@/models/model"; +import { Component, EventEmitter, Input, Output } from "@angular/core"; + +@Component({ + selector: "wallet-picker", + templateUrl: "wallet-picker.component.html", + styleUrls: ["wallet-picker.component.pcss"], +}) +export class WalletPickerComponent { + @Input() + public title: string; + + @Input() + public wallets: Contact[]; + + @Input() + public symbol: string; + + @Output() + public walletPickerPick = new EventEmitter(); + + constructor() {} + + onTap(wallet: Contact) { + this.walletPickerPick.emit(wallet); + } +} diff --git a/src/app/components/wallet-picker/wallet-picker.modal.html b/src/app/components/wallet-picker/wallet-picker.modal.html new file mode 100644 index 000000000..91c545935 --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.modal.html @@ -0,0 +1,16 @@ + + +
+ +
+
diff --git a/src/app/components/wallet-picker/wallet-picker.modal.module.ts b/src/app/components/wallet-picker/wallet-picker.modal.module.ts new file mode 100644 index 000000000..84d8e07af --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.modal.module.ts @@ -0,0 +1,12 @@ +import { SharedModule } from "@/app/shared.module"; +import { NgModule } from "@angular/core"; +import { IonicModule } from "@ionic/angular"; +import { WalletPickerComponentModule } from "./wallet-picker.component.module"; +import { WalletPickerModal } from "./wallet-picker.modal"; + +@NgModule({ + declarations: [WalletPickerModal], + imports: [IonicModule, SharedModule, WalletPickerComponentModule], + exports: [WalletPickerModal], +}) +export class WalletPickerModalModule {} diff --git a/src/app/components/wallet-picker/wallet-picker.modal.ts b/src/app/components/wallet-picker/wallet-picker.modal.ts new file mode 100644 index 000000000..66fcfb24b --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.modal.ts @@ -0,0 +1,40 @@ +import { Contact, Wallet } from "@/models/model"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { UserDataProvider } from "@/services/user-data/user-data"; +import { Component, OnInit } from "@angular/core"; +import { ModalController } from "@ionic/angular"; + +@Component({ + templateUrl: "wallet-picker.modal.html", +}) +export class WalletPickerModal implements OnInit { + public contacts = []; + public wallets = []; + public symbol: string; + + constructor( + private modalCtrl: ModalController, + private userDataProvider: UserDataProvider, + private arkApiProvider: ArkApiProvider, + ) {} + + ngOnInit() { + const profile = this.userDataProvider.currentProfile; + const network = this.userDataProvider.currentNetwork; + this.symbol = network.symbol; + this.contacts = Object.values(profile.contacts); + this.wallets = Object.values(profile.wallets) + // ensure only valid addresses in the current network + .filter((wallet: Wallet) => + this.arkApiProvider.validateAddress(wallet.address), + ) + .map((wallet: Wallet) => ({ + name: wallet.label, + address: wallet.address, + })); + } + + onPick(wallet: Contact) { + this.modalCtrl.dismiss(wallet); + } +} diff --git a/src/app/directives/directives.module.ts b/src/app/directives/directives.module.ts index d9f69b28c..6201b2b52 100644 --- a/src/app/directives/directives.module.ts +++ b/src/app/directives/directives.module.ts @@ -1,10 +1,19 @@ import { NgModule } from "@angular/core"; import { HeaderScrollerDirective } from "./header-scroller/header-scroller"; import { MarketNetOnlyDirective } from "./marketnet-only/marketnet-only"; +import { ValueMaskOnBlurDirective } from "./value-mask-on-blur/value-mask-on-blur"; @NgModule({ - declarations: [MarketNetOnlyDirective, HeaderScrollerDirective], + declarations: [ + MarketNetOnlyDirective, + HeaderScrollerDirective, + ValueMaskOnBlurDirective, + ], imports: [], - exports: [MarketNetOnlyDirective, HeaderScrollerDirective], + exports: [ + MarketNetOnlyDirective, + HeaderScrollerDirective, + ValueMaskOnBlurDirective, + ], }) export class DirectivesModule {} diff --git a/src/app/directives/value-mask-on-blur/value-mask-on-blur.ts b/src/app/directives/value-mask-on-blur/value-mask-on-blur.ts new file mode 100644 index 000000000..fd4e7871b --- /dev/null +++ b/src/app/directives/value-mask-on-blur/value-mask-on-blur.ts @@ -0,0 +1,38 @@ +import { Directive, HostListener, Input } from "@angular/core"; +import { NgControl } from "@angular/forms"; + +@Directive({ + selector: "[appValueMaskOnBlur]", +}) +export class ValueMaskOnBlurDirective { + @Input() + public appValueMaskOnBlur: string; + + public isFocused = false; + + constructor(private model: NgControl) {} + + // Handle programmatically changes + @HostListener("ionChange") + onChange() { + if (!this.isFocused) { + this.maskValue(); + } + } + + @HostListener("ionFocus") + onFocus() { + this.isFocused = true; + this.model.valueAccessor.writeValue(this.model.value); + } + + @HostListener("ionBlur") + onBlur() { + this.isFocused = false; + this.maskValue(); + } + + private maskValue() { + this.model.valueAccessor.writeValue(this.appValueMaskOnBlur); + } +} diff --git a/src/app/models/contact.ts b/src/app/models/contact.ts index 6f06cb430..11c958e29 100644 --- a/src/app/models/contact.ts +++ b/src/app/models/contact.ts @@ -6,18 +6,6 @@ export interface AddressMap { hasMore?: boolean; } -export enum AutoCompleteAccountType { - Wallet, - Contact, -} - -export interface AutoCompleteAccount { - address: string; - name: string; - iconName: string; - type: AutoCompleteAccountType; -} - export interface Contact { address: string; name: string; diff --git a/src/app/pages/login/login.module.ts b/src/app/pages/login/login.module.ts index 47ad69a6a..76ce7afc8 100644 --- a/src/app/pages/login/login.module.ts +++ b/src/app/pages/login/login.module.ts @@ -1,19 +1,17 @@ -import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; import { LoginPage } from "./login"; +import { SharedModule } from "@/app/shared.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; @NgModule({ declarations: [LoginPage], imports: [ IonicModule, - CommonModule, + SharedModule, RouterModule.forChild([{ path: "", component: LoginPage }]), - TranslateModule, PinCodeComponentModule, ], }) diff --git a/src/app/pages/login/login.ts b/src/app/pages/login/login.ts index 81cc8e581..b67d7e01f 100644 --- a/src/app/pages/login/login.ts +++ b/src/app/pages/login/login.ts @@ -2,7 +2,6 @@ import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { AuthProvider } from "@/services/auth/auth"; import { UserDataProvider } from "@/services/user-data/user-data"; import { Component, OnInit, ViewChild } from "@angular/core"; -import { ModalController, NavController } from "@ionic/angular"; import { isNil } from "lodash"; @@ -19,8 +18,6 @@ export class LoginPage implements OnInit { public isReady = false; constructor( - public navCtrl: NavController, - public modalCtrl: ModalController, private authProvider: AuthProvider, private userDataProvider: UserDataProvider, ) {} diff --git a/src/app/pages/transaction/transaction-send/transaction-send.html b/src/app/pages/transaction/transaction-send/transaction-send.html index eca704c84..b1f89ea67 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.html +++ b/src/app/pages/transaction/transaction-send/transaction-send.html @@ -15,84 +15,14 @@ - + - - - {{ 'WALLETS_PAGE.ADDRESS' | translate }} - - - -
-

-

-
-
-
- - -
- -
-
-
-
- - - - - {{ 'TRANSACTIONS_PAGE.NEW_CONTACT_NAME' | - translate }} - - - {{ 'TRANSACTIONS_PAGE.NEW_WALLET_LABEL' | - translate }} - - {{ 'TRANSACTIONS_PAGE.EXISTING_WALLET' | - translate }} - {{ 'TRANSACTIONS_PAGE.EXISTING_CONTACT' | - translate }} - - - - - + @@ -105,9 +35,8 @@ > diff --git a/src/app/pages/transaction/transaction-send/transaction-send.module.ts b/src/app/pages/transaction/transaction-send/transaction-send.module.ts index 2be314b1d..7aca4977f 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.module.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.module.ts @@ -11,11 +11,12 @@ import { TranslateModule } from "@ngx-translate/core"; import { DirectivesModule } from "@/directives/directives.module"; +import { InputAddressComponentModule } from "@/components/input-address/input-address.module"; import { InputAmountComponentModule } from "@/components/input-amount/input-amount.module"; +import { WalletPickerModalModule } from "@/components/wallet-picker/wallet-picker.modal.module"; import { CommonModule } from "@angular/common"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; -import { AutoCompleteModule } from "ionic4-auto-complete"; @NgModule({ declarations: [TransactionSendPage], @@ -31,9 +32,10 @@ import { AutoCompleteModule } from "ionic4-auto-complete"; ConfirmTransactionComponentModule, QRScannerComponentModule, DirectivesModule, - AutoCompleteModule, InputAmountComponentModule, InputFeeComponentModule, + WalletPickerModalModule, + InputAddressComponentModule, ], }) export class TransactionSendPageModule {} diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index f48623d82..fe60aeb5e 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -1,23 +1,22 @@ import { Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core"; import { FormControl, FormGroup, Validators } from "@angular/forms"; -import { LoadingController } from "@ionic/angular"; +import { + IonRouterOutlet, + LoadingController, + ModalController, +} from "@ionic/angular"; import { - Contact, QRCodeScheme, - SendTransactionForm, StoredNetwork, Wallet, WalletKeys, } from "@/models/model"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { ContactsProvider } from "@/services/contacts/contacts"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { AccountAutoCompleteService } from "@/services/account-auto-complete/account-auto-complete"; - import { PublicKey } from "ark-ts/core"; import { Subject } from "rxjs"; @@ -28,7 +27,7 @@ import { QRScannerComponent } from "@/components/qr-scanner/qr-scanner"; import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; import { TransactionSend, TransactionType } from "ark-ts"; -import { AutoCompleteAccount, AutoCompleteAccountType } from "@/models/contact"; +import { WalletPickerModal } from "@/components/wallet-picker/wallet-picker.modal"; import { TranslatableObject } from "@/models/translate"; import { AddressCheckResult } from "@/services/address-checker/address-check-result"; import { AddressCheckerProvider } from "@/services/address-checker/address-checker"; @@ -36,7 +35,6 @@ import { ArkUtility } from "@/utils/ark-utility"; import { SafeBigNumber } from "@/utils/bignumber"; import { ActivatedRoute } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; -import { AutoCompleteComponent } from "ionic4-auto-complete"; import { takeUntil } from "rxjs/operators"; class CombinedResult { @@ -48,13 +46,6 @@ class CombinedResult { public constructor(public loader: HTMLIonLoadingElement) {} } -enum AddressType { - Unknown, - Contact, - WalletWithLabel, - WalletWithoutLabel, -} - @Component({ selector: "page-transaction-send", templateUrl: "transaction-send.html", @@ -62,9 +53,6 @@ enum AddressType { providers: [TruncateMiddlePipe], }) export class TransactionSendPage implements OnInit, OnDestroy { - @ViewChild("sendTransactionForm", { static: true }) - sendTransactionHTMLForm: HTMLFormElement; - @ViewChild("pinCode", { read: PinCodeComponent, static: true }) pinCode: PinCodeComponent; @@ -77,38 +65,29 @@ export class TransactionSendPage implements OnInit, OnDestroy { @ViewChild("qrScanner", { read: QRScannerComponent, static: true }) qrScanner: QRScannerComponent; - @ViewChild("searchBar", { read: AutoCompleteComponent, static: true }) - searchBar: AutoCompleteComponent; - sendForm: FormGroup; - transaction: SendTransactionForm = {}; currentWallet: Wallet; currentNetwork: StoredNetwork; fee: number; hasFeeError = false; - addressType: AddressType = AddressType.Unknown; - addressTypes = AddressType; - isRecipientNameAutoSet: boolean; hasSent = false; sendAllEnabled = false; transactionType = TransactionType.SendArk; - private currentAutoCompleteFieldValue: string; private unsubscriber$: Subject = new Subject(); constructor( private userDataProvider: UserDataProvider, - private contactsProvider: ContactsProvider, private arkApiProvider: ArkApiProvider, private toastProvider: ToastProvider, - public contactsAutoCompleteService: AccountAutoCompleteService, - private truncateMiddlePipe: TruncateMiddlePipe, + private modalCtrl: ModalController, private addressChecker: AddressCheckerProvider, private loadingCtrl: LoadingController, private translateService: TranslateService, private ngZone: NgZone, private route: ActivatedRoute, + private routerOutlet: IonRouterOutlet, ) { this.currentWallet = this.userDataProvider.currentWallet; this.currentNetwork = this.userDataProvider.currentNetwork; @@ -149,12 +128,9 @@ export class TransactionSendPage implements OnInit, OnDestroy { return; } - this.transaction.amount = ArkUtility.arktoshiToArk( - sendableAmount, - true, - ); + const amount = ArkUtility.arktoshiToArk(sendableAmount, true); - this.sendForm.controls.amount.setValue(this.transaction.amount); + this.sendForm.controls.amount.setValue(amount); } send() { @@ -165,7 +141,6 @@ export class TransactionSendPage implements OnInit, OnDestroy { } else { this.ngZone.run(() => { this.hasSent = true; - this.createContactOrLabel(); this.translateService .get( @@ -179,7 +154,9 @@ export class TransactionSendPage implements OnInit, OnDestroy { loader, ); this.addressChecker - .checkAddress(this.transaction.recipientAddress) + .checkAddress( + this.sendForm.get("recipientId").value, + ) .subscribe(checkerResult => { combinedResult.checkerDone = true; combinedResult.checkerResult = checkerResult; @@ -208,74 +185,21 @@ export class TransactionSendPage implements OnInit, OnDestroy { this.hasSent = false; } - public onSearchItem(account: AutoCompleteAccount): void { - if (!account || !account.address) { - return; - } - - this.transaction.recipientAddress = account.address; - this.currentAutoCompleteFieldValue = account.name; - this.isRecipientNameAutoSet = true; - - if (account.name !== account.address) { - this.addressType = - account.type === AutoCompleteAccountType.Wallet - ? AddressType.WalletWithLabel - : AddressType.Contact; - this.transaction.recipientName = account.name; - } else { - this.addressType = - account.type === AutoCompleteAccountType.Wallet - ? AddressType.WalletWithoutLabel - : AddressType.Unknown; - this.transaction.recipientName = null; - } - } - - public onSearchInput(input: string): void { - // this check is needed because clicking into the field, also triggers this method - // and then the recipientName is set to null, even though nothing has changed - if (input === this.currentAutoCompleteFieldValue) { - return; - } - - this.setRecipientByAddress(input); - } - - public onSearchPaste(input: ClipboardEvent) { - this.setFormValuesFromAddress(input.clipboardData.getData("text")); - } - - public showFullAddress(): void { - // When field has focus, show full address - this.searchBar.setValue(this.transaction.recipientAddress); - } - - public onSearchBlur(input: CustomEvent): void { - this.truncateAddressMiddle(); - } - - public truncateAddressMiddle(): void { - // When field loses focus, use ellipses to show beginning and end of address - const addressString = this.transaction.recipientAddress; - setTimeout(() => { - this.searchBar.setValue( - this.truncateMiddlePipe.transform( - addressString, - constants.TRANSACTION_ADDRESS_SIZE, - addressString, - ), - ); - }, 0); + public onPasteAddress(input: ClipboardEvent) { + const value = input.clipboardData.getData("text"); + this.sendForm.patchValue({ + recipientId: value, + }); } private validAddress(): boolean { + const recipientId = this.sendForm.get("recipientId").value; const isValid = PublicKey.validateAddress( - this.transaction.recipientAddress, + recipientId, this.currentNetwork, ); - this.sendTransactionHTMLForm.form.controls.recipientAddress.setErrors({ + this.sendForm.controls.recipientId.setErrors({ incorrect: !isValid, }); @@ -285,10 +209,10 @@ export class TransactionSendPage implements OnInit, OnDestroy { private validForm(): boolean { let isValid = true; if ( - !this.sendTransactionHTMLForm.form.controls.amount.value || - this.sendTransactionHTMLForm.form.controls.amount.value <= 0 || - (this.sendTransactionHTMLForm.form.controls.smartBridge.value || "") - .length > this.vendorFieldLength + !this.sendForm.controls.amount.value || + this.sendForm.controls.amount.value <= 0 || + (this.sendForm.controls.vendorField.value || "").length > + this.vendorFieldLength ) { isValid = false; } @@ -296,43 +220,28 @@ export class TransactionSendPage implements OnInit, OnDestroy { return isValid; } - createContactOrLabel() { - if ( - this.addressType === AddressType.Contact || - this.addressType === AddressType.WalletWithLabel || - !this.transaction.recipientName - ) { - return; - } + scanQRCode() { + this.qrScanner.open(true); + } - const validAddress = this.validAddress(); - const validName = new RegExp("^[a-zA-Z0-9]+[a-zA-Z0-9- ]+$").test( - this.transaction.recipientName, - ); + async presetWalletPickerModal() { + const modal = await this.modalCtrl.create({ + component: WalletPickerModal, + swipeToClose: true, + presentingElement: this.routerOutlet.nativeEl, + mode: "ios", + cssClass: "c-wallet-picker-modal", + }); - if (validAddress && validName) { - if (this.addressType === AddressType.Unknown) { - this.contactsProvider - .addContact( - this.transaction.recipientAddress, - this.transaction.recipientName, - ) - .subscribe(); - } else { - this.userDataProvider - .setWalletLabel( - this.userDataProvider.getWalletByAddress( - this.transaction.recipientAddress, - ), - this.transaction.recipientName, - ) - .subscribe(); - } - } - } + modal.present(); - scanQRCode() { - this.qrScanner.open(true); + modal.onDidDismiss().then(({ data }) => { + if (data) { + this.sendForm.patchValue({ + recipientId: data.address, + }); + } + }); } private createTransactionAndShowConfirm(result: CombinedResult) { @@ -351,13 +260,12 @@ export class TransactionSendPage implements OnInit, OnDestroy { amount: new SafeBigNumber(amount) .times(constants.WALLET_UNIT_TO_SATOSHI) .toNumber(), - vendorField: this.transaction.smartBridge, + vendorField: this.sendForm.get("vendorField").value, passphrase: result.keys.key, secondPassphrase: result.keys.secondKey, - recipientId: this.transaction.recipientAddress, + recipientId: this.sendForm.get("recipientId").value, fee: this.fee, }; - this.arkApiProvider.transactionBuilder .createTransaction(data) .subscribe( @@ -380,13 +288,12 @@ export class TransactionSendPage implements OnInit, OnDestroy { onScanQRCode(qrCode: QRCodeScheme) { if (qrCode.address) { - this.setFormValuesFromAddress(qrCode.address, qrCode.label); const amount = Number(qrCode.amount); if (!!amount) { this.sendForm.controls.amount.setValue(amount); } if (qrCode.vendorField) { - this.transaction.smartBridge = qrCode.vendorField; + this.sendForm.controls.vendorField.setValue(qrCode.vendorField); } } else { this.toastProvider.error("QR_CODE.INVALID_QR_ERROR"); @@ -411,14 +318,13 @@ export class TransactionSendPage implements OnInit, OnDestroy { }); this.sendForm = new FormGroup({ - recipientAddress: new FormControl(""), - recipientName: new FormControl(""), + recipientId: new FormControl(""), amount: new FormControl("", [Validators.required]), amountEquivalent: new FormControl(""), - smartBridge: new FormControl(""), + vendorField: new FormControl(""), }); - this.setFormValuesFromAddress( + this.sendForm.controls.recipientId.setValue( this.route.snapshot.queryParamMap.get("address") || "", ); } @@ -439,58 +345,4 @@ export class TransactionSendPage implements OnInit, OnDestroy { public onFeeError(hasError: boolean) { this.hasFeeError = hasError; } - - private setFormValuesFromAddress( - address: string, - alternativeRecipientName?: string, - ): void { - if (!address) { - return; - } - - this.sendForm.patchValue({ recipientAddress: address }); - this.setRecipientByAddress(address, alternativeRecipientName); - this.truncateAddressMiddle(); - } - - private setRecipientByAddress( - input: string, - alternativeRecipientName?: string, - ): void { - if (input.indexOf("...") !== -1) { - return; - } - - this.currentAutoCompleteFieldValue = input; - this.transaction.recipientAddress = input; - - const contact: Contact = this.contactsProvider.getContactByAddress( - input, - ); - if (contact) { - this.addressType = AddressType.Contact; - this.isRecipientNameAutoSet = true; - this.transaction.recipientName = contact.name; - return; - } - - const walletLabel = this.userDataProvider.getWalletLabel(input); - if (walletLabel) { - this.addressType = AddressType.WalletWithLabel; - this.isRecipientNameAutoSet = true; - this.transaction.recipientName = walletLabel; - return; - } - - this.addressType = this.userDataProvider.getWalletByAddress(input) - ? AddressType.WalletWithoutLabel - : AddressType.Unknown; - - if (alternativeRecipientName) { - this.isRecipientNameAutoSet = true; - this.transaction.recipientName = alternativeRecipientName; - } else if (this.isRecipientNameAutoSet) { - this.transaction.recipientName = null; - } - } } diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 8208ed514..973e53755 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -1,4 +1,4 @@ -import { Component, NgZone, OnDestroy, ViewChild } from "@angular/core"; +import { Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core"; import { ActionSheetController, IonContent, @@ -38,7 +38,7 @@ import { takeUntil } from "rxjs/operators"; templateUrl: "wallet-list.html", styleUrls: ["wallet-list.pcss"], }) -export class WalletListPage implements OnDestroy { +export class WalletListPage implements OnInit, OnDestroy { @ViewChild("walletSlider", { read: IonSlides }) slider: IonSlides; @@ -87,7 +87,9 @@ export class WalletListPage implements OnDestroy { private settingsDataProvider: SettingsDataProvider, private ngZone: NgZone, private arkApiProvider: ArkApiProvider, - ) { + ) {} + + ngOnInit() { this.loadUserData(); this.userDataProvider.clearCurrentWallet(); diff --git a/src/app/services/account-auto-complete/account-auto-complete.ts b/src/app/services/account-auto-complete/account-auto-complete.ts deleted file mode 100644 index c38cca63f..000000000 --- a/src/app/services/account-auto-complete/account-auto-complete.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Injectable } from "@angular/core"; -import { AutoCompleteService } from "ionic4-auto-complete"; -import lodash from "lodash"; - -import { - AutoCompleteAccount, - AutoCompleteAccountType, - Contact, -} from "@/models/contact"; -import { Wallet } from "@/models/wallet"; -import { UserDataProvider } from "@/services/user-data/user-data"; -import { PublicKey } from "ark-ts/core"; - -@Injectable({ providedIn: "root" }) -export class AccountAutoCompleteService implements AutoCompleteService { - public constructor(private userDataProvider: UserDataProvider) {} - - // even though this fields are unused, they are required by the AutoCompleteService! - public labelAttribute = "address"; - public formValueAttribute = "address"; - - private static sortContacts( - a: AutoCompleteAccount, - b: AutoCompleteAccount, - ): number { - if (a.name !== a.address && b.name === b.address) { - return -1; - } - - if (a.name === a.address && b.name !== b.address) { - return 1; - } - - return a.name.localeCompare(b.name); - } - - getResults(keyword: string): AutoCompleteAccount[] { - keyword = keyword.toLowerCase(); - - const contacts: AutoCompleteAccount[] = lodash.map( - this.userDataProvider.currentProfile.contacts, - (contact: Contact) => { - return { - address: contact.address, - name: contact.name, - iconName: "contacts", - type: AutoCompleteAccountType.Contact, - } as AutoCompleteAccount; - }, - ); - - const wallets: AutoCompleteAccount[] = lodash.map( - this.userDataProvider.currentProfile.wallets, - (wallet: Wallet) => { - const address = wallet.address; - const label = - this.userDataProvider.getWalletLabel(wallet) || - wallet.address; - if (address) { - return { - address, - name: label, - iconName: "wallet", - type: AutoCompleteAccountType.Wallet, - } as AutoCompleteAccount; - } - }, - ); - - return contacts - .sort(AccountAutoCompleteService.sortContacts) - .concat(wallets.sort(AccountAutoCompleteService.sortContacts)) - .filter(c => this.isValidContact(c, keyword)); - } - - private isValidContact( - contact: AutoCompleteAccount, - keyword: string, - ): boolean { - return ( - PublicKey.validateAddress( - contact.address, - this.userDataProvider.currentNetwork, - ) && - (contact.address.toLowerCase().indexOf(keyword) > -1 || - (contact.name && - contact.name.toLowerCase().indexOf(keyword) > -1)) - ); - } -} diff --git a/src/app/services/user-data/user-data.ts b/src/app/services/user-data/user-data.ts index 08dcab39c..1387df809 100644 --- a/src/app/services/user-data/user-data.ts +++ b/src/app/services/user-data/user-data.ts @@ -360,10 +360,6 @@ export class UserDataProvider { } as TranslatableObject); } - if (wallet.label === label) { - return EMPTY; - } - if ( lodash.some( this.currentProfile.wallets, diff --git a/src/assets/styles/app.pcss b/src/assets/styles/app.pcss index 8f67dd39e..3d66002e9 100644 --- a/src/assets/styles/app.pcss +++ b/src/assets/styles/app.pcss @@ -2,10 +2,38 @@ display: none; } -ion-app { +body:not(.backdrop-no-scroll) ion-app { background: var(--ion-background-color); } +.c-avatar { + @apply w-10 h-10 mr-2 rounded-full flex justify-center items-center font-bold text-base; + background-color: var(--ion-color-light-shade); + color: var(--ion-color-light-contrast); +} + +.c-avatar--large { + @apply w-12 h-12 mr-4 text-lg; +} + +.c-avatar--highlight { + background-color: var(--ion-color-danger); + color: var(--ion-color-danger-contrast); +} + +.c-wallet-picker-modal { + --overflow: vertical; + --backdrop-opacity: 0.5 !important; + + .modal-wrapper { + height: 250px !important; + } + + .ion-page { + @apply rounded-t-lg; + } +} + html.qr-scanner-open { ion-app, ion-content { diff --git a/src/assets/styles/auto-complete.pcss b/src/assets/styles/auto-complete.pcss deleted file mode 100644 index 170b9bce5..000000000 --- a/src/assets/styles/auto-complete.pcss +++ /dev/null @@ -1,44 +0,0 @@ -ion-auto-complete { - @apply overflow-hidden inline-block w-full h-full; - - ion-item { - --padding-start: 0; - --background: transparent; - - .item-title { - @apply text-sm; - } - - .item-subtitle { - @apply text-xs; - color: var(--ion-color-medium); - } - } - - ion-searchbar { - @apply p-0 h-full !important; - - .searchbar-search-icon { - @apply hidden !important; - } - - .searchbar-input { - @apply shadow-none p-0 !important; - background-color: transparent !important; - } - } - - ul { - @apply absolute w-full z-50 left-0 shadow-md rounded-b-lg overflow-hidden; - background: var(--ion-color-light); - - li { - @apply p-4 border-b; - border-bottom-color: var(--ion-color-light-shade); - - &:last-child { - border-bottom-color: transparent; - } - } - } -} diff --git a/src/global.scss b/src/global.scss index c643b8552..b0b1474c7 100644 --- a/src/global.scss +++ b/src/global.scss @@ -22,7 +22,6 @@ @import "../node_modules/tailwindcss/components.css"; @import "../node_modules/tailwindcss/utilities.css"; -@import "./assets/styles/auto-complete.pcss"; @import "./assets/styles/app.pcss"; ion-grid { From 7a79968c3b379ce5f705843f2f8ce1af73e40986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Wed, 4 Mar 2020 13:45:30 -0300 Subject: [PATCH 15/46] test: add storage service unitary tests (#506) * test: Enable coverage * test: Add storage unitary tests scratch * test: Disable random tests run * chore: Lint fix * test: increase coverage to 100% * test: rename constant * chore: remove flag to run only --- angular.json | 1 + karma.conf.js | 3 ++ src/app/services/storage/storage.spec.ts | 49 ++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/app/services/storage/storage.spec.ts diff --git a/angular.json b/angular.json index 77decd688..fa5e45009 100644 --- a/angular.json +++ b/angular.json @@ -109,6 +109,7 @@ "test": { "builder": "@angular-builders/custom-webpack:karma", "options": { + "codeCoverage": true, "customWebpackConfig": { "path": "./webpack.config.js" }, diff --git a/karma.conf.js b/karma.conf.js index aaf74d784..df02f72e0 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -16,6 +16,9 @@ module.exports = function(config) { ], client: { clearContext: false, // leave Jasmine Spec Runner output visible in browser + jasmine: { + random: false, + }, }, coverageIstanbulReporter: { dir: require("path").join(__dirname, "coverage"), diff --git a/src/app/services/storage/storage.spec.ts b/src/app/services/storage/storage.spec.ts new file mode 100644 index 000000000..1c7858f44 --- /dev/null +++ b/src/app/services/storage/storage.spec.ts @@ -0,0 +1,49 @@ +import { Storage } from "@ionic/storage"; +import { Observable } from "rxjs"; +import { StorageProvider } from "./storage"; + +let storageProvider = null; +const OBJECT_TO_BE_STORED = { context: "I am been stored" }; +const NONOBJECT_TO_BE_STORED = 123456; +const TEST_STORAGE_KEY = "TEST_STORAGE_KEY"; +const TEST_NONOBJECT_STORAGE_KEY = "TEST_NONOBJECT_STORAGE_KEY"; + +describe("Storage service", () => { + beforeEach(() => { + const storage = new Storage({ + name: "__mydb", + driverOrder: ["indexeddb", "sqlite", "websql"], + }); + + storageProvider = new StorageProvider(storage); + }); + + it("should set a object value in a key", () => { + storageProvider.set(TEST_STORAGE_KEY, OBJECT_TO_BE_STORED); + + const result = storageProvider.get(TEST_STORAGE_KEY); + expect(result).toBeInstanceOf(Observable); + }); + + it("should set a non object value in a key", () => { + storageProvider.set(TEST_NONOBJECT_STORAGE_KEY, NONOBJECT_TO_BE_STORED); + + const result = storageProvider.get(TEST_NONOBJECT_STORAGE_KEY); + expect(result).toBeInstanceOf(Observable); + }); + + it("should retrieve the stored value from a key", done => { + storageProvider.getObject(TEST_STORAGE_KEY).subscribe(storedValue => { + expect(storedValue).toEqual(OBJECT_TO_BE_STORED); + done(); + }); + }); + + it("should clear the storage", done => { + storageProvider.clear(); + storageProvider.getObject("TEST_STORAGE_KEY").subscribe(storedValue => { + expect(storedValue).toEqual({}); + done(); + }); + }); +}); From 1d7d7ae58fbb8172b972093ec892efd8c02f0f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Wed, 4 Mar 2020 16:09:10 -0300 Subject: [PATCH 16/46] test: fix coverage statistic (#510) * test: fix coverage statistic * fix: get rid of warning messages * ci: setup codecov * fix: add exclude pattern to the coverage report --- .github/workflows/test.yml | 2 + karma.conf.js | 12 +- package-lock.json | 302 +++++++++++++++++++++++++++++++++++++ package.json | 2 + test/mocks.ts | 8 + tsconfig.app.json | 5 +- 6 files changed, 327 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e347ca33d..9df222a96 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,6 +29,8 @@ jobs: run: npm run test:coverage - name: Build run: npm run build -- --prod + - name: Codecov + run: ./node_modules/.bin/codecov --token=${{ secrets.CODECOV_TOKEN }} e2e: runs-on: ubuntu-latest diff --git a/karma.conf.js b/karma.conf.js index df02f72e0..5e35a15a5 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -13,6 +13,7 @@ module.exports = function(config) { require("karma-jasmine-html-reporter"), require("karma-coverage-istanbul-reporter"), require("@angular-devkit/build-angular/plugins/karma"), + require("karma-sabarivka-reporter"), ], client: { clearContext: false, // leave Jasmine Spec Runner output visible in browser @@ -25,6 +26,15 @@ module.exports = function(config) { reports: ["html", "lcovonly", "text-summary"], fixWebpackSourcePaths: true, }, + coverageReporter: { + include: [ + "src/**/*.ts", + "!src/main.(ts|js)", + "!src/**/*.spec.(ts|js)", + "!src/**/*.module.(ts|js)", + "!src/**/environment*.(ts|js)", + ], + }, customLaunchers: { ChromeHeadlessNoSandbox: { base: "ChromeHeadless", @@ -35,7 +45,7 @@ module.exports = function(config) { ], }, }, - reporters: ["progress", "kjhtml"], + reporters: ["progress", "kjhtml", "sabarivka"], port: 9876, colors: true, logLevel: config.LOG_INFO, diff --git a/package-lock.json b/package-lock.json index 500bb0866..c51d13c07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3853,6 +3853,32 @@ "tslib": "^1.9.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -4061,6 +4087,12 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" }, + "@tootallnate/once": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", + "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", + "dev": true + }, "@types/bcryptjs": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", @@ -4829,6 +4861,12 @@ "sprintf-js": "~1.0.2" } }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, "aria-query": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", @@ -4902,6 +4940,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -6270,6 +6314,19 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "codecov": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.6.5.tgz", + "integrity": "sha512-v48WuDMUug6JXwmmfsMzhCHRnhUf8O3duqXvltaYJKrO1OekZWpB/eH6iIoaxMl8Qli0+u3OxptdsBOYiD7VAQ==", + "dev": true, + "requires": { + "argv": "0.0.2", + "ignore-walk": "3.0.3", + "js-yaml": "3.13.1", + "teeny-request": "6.0.1", + "urlgrey": "0.4.4" + } + }, "codelyzer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.1.tgz", @@ -8947,6 +9004,47 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + } + } + }, "fast-json-parse": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", @@ -8979,6 +9077,15 @@ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, + "fastq": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz", + "integrity": "sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -11823,6 +11930,73 @@ "integrity": "sha512-ILBPsXqQ3eomq+oaQsM311/jxsypw5/d0LnZXj26XkfThwq7jZ55A2CFSKJVA5VekbbOGvMyv7d3juZj0SeTxA==", "dev": true }, + "karma-sabarivka-reporter": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/karma-sabarivka-reporter/-/karma-sabarivka-reporter-3.0.2.tgz", + "integrity": "sha512-pN6+CwKLUCSGP2nHfjeaoWKi7ex1uosWr5z9D9O0/7O2gxLlx39UzV/ru2YQeHKiTzozlakFV6lAGgy36oiAWw==", + "dev": true, + "requires": { + "globby": "^11.0.0", + "istanbul-lib-instrument": "^4.0.1", + "predicates": "^2.0.3", + "typescript": "^3.8.2" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + } + } + }, "karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", @@ -13003,6 +13177,12 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -13516,6 +13696,12 @@ "lodash.toarray": "^4.4.0" } }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, "node-fetch-npm": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", @@ -15391,6 +15577,15 @@ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, + "predicates": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/predicates/-/predicates-2.0.3.tgz", + "integrity": "sha512-eL+bhIiWrD+kx/olyYBcAFn258Oo9MTB7iehgBIaflVS8DBLuVtQvOpwgWwlya6YFUIiKaVoA3HaBNJuVNcyIA==", + "dev": true, + "requires": { + "array-find": "^1.0.0" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -16475,6 +16670,12 @@ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rfdc": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", @@ -16537,6 +16738,12 @@ "is-promise": "^2.1.0" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -17789,6 +17996,15 @@ "stream-shift": "^1.0.0" } }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "requires": { + "stubs": "^3.0.0" + } + }, "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -17977,6 +18193,12 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, "style-loader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", @@ -18326,6 +18548,80 @@ "yallist": "^3.0.3" } }, + "teeny-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", + "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^3.3.2" + }, + "dependencies": { + "agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dev": true, + "requires": { + "agent-base": "5", + "debug": "4" + }, + "dependencies": { + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true + } + } + }, + "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 + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, "terser": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz", @@ -19076,6 +19372,12 @@ "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", diff --git a/package.json b/package.json index 824adaf9e..17402e8f7 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,7 @@ "@types/node": "^13.7.1", "@types/node-forge": "^0.9.2", "@types/semver": "^7.1.0", + "codecov": "^3.6.5", "codelyzer": "^5.2.1", "husky": "^4.2.3", "ionic": "^5.4.16", @@ -121,6 +122,7 @@ "karma-coverage-istanbul-reporter": "~2.1.1", "karma-jasmine": "~3.1.1", "karma-jasmine-html-reporter": "^1.5.2", + "karma-sabarivka-reporter": "^3.0.2", "lint-staged": "^10.0.7", "ng-lint-staged": "^0.1.6", "postcss-import": "^12.0.1", diff --git a/test/mocks.ts b/test/mocks.ts index fa735dd5e..67b0ca066 100644 --- a/test/mocks.ts +++ b/test/mocks.ts @@ -1,3 +1,4 @@ +import { Injectable } from "@angular/core"; import { Keyboard } from "@ionic-native/keyboard/ngx"; import { Network } from "@ionic-native/network/ngx"; import { QRScanner, QRScannerStatus } from "@ionic-native/qr-scanner/ngx"; @@ -7,11 +8,13 @@ import { SplashScreen } from "@ionic-native/splash-screen/ngx"; import { StatusBar } from "@ionic-native/status-bar/ngx"; import { Observable } from "rxjs"; +@Injectable() export class SplashScreenMock extends SplashScreen { show(): void {} hide(): void {} } +@Injectable() export class StatusBarMock extends StatusBar { isVisible: boolean; overlaysWebView(doesOverlay: boolean): void {} @@ -25,6 +28,7 @@ export class StatusBarMock extends StatusBar { show(): void {} } +@Injectable() export class QRScannerMock extends QRScanner { prepare(): Promise { return Promise.resolve(undefined); @@ -48,6 +52,7 @@ export class QRScannerMock extends QRScanner { openSettings(): void {} } +@Injectable() export class KeyboardMock extends Keyboard { hideKeyboardAccessoryBar(hide: boolean): void {} show(): void {} @@ -67,6 +72,7 @@ export class KeyboardMock extends Keyboard { } } +@Injectable() export class NetworkMock extends Network { type = "cellular"; downlinkMax: string; @@ -90,6 +96,7 @@ export class NetworkMock extends Network { } } +@Injectable() export class SocialSharingMock extends SocialSharing { share( message?: string, @@ -101,6 +108,7 @@ export class SocialSharingMock extends SocialSharing { } } +@Injectable() export class ScreenOrientationMock extends ScreenOrientation { type: string; ORIENTATIONS: { diff --git a/tsconfig.app.json b/tsconfig.app.json index c6cbfd4db..e1dff2bdf 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -4,9 +4,8 @@ "outDir": "./out-tsc/app", "types": [] }, + "files": ["src/main.ts", "src/polyfills.ts", "src/zone-flags.ts"], "include": [ - "src/**/*.ts", "node_modules/ark-ts/node_modules/json-typescript-mapper/libs/utils.ts" - ], - "exclude": ["src/test.ts", "src/**/*.spec.ts"] + ] } From 7c09b29cd8947a44946c515a04483263884848c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 5 Mar 2020 12:18:24 -0300 Subject: [PATCH 17/46] chore: setup ionic appflow (#513) --- ionic.config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ionic.config.json b/ionic.config.json index ec3b7b620..adb75d3ff 100644 --- a/ionic.config.json +++ b/ionic.config.json @@ -2,5 +2,7 @@ "name": "ark-ionic", "integrations": { "cordova": {} - } + }, + "type": "angular", + "id": "4beef805" } From bf3db1e3359c5c6e530e9aa3f9c0c31e17464937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 5 Mar 2020 13:03:51 -0300 Subject: [PATCH 18/46] build: enable aot compilation by default (#511) * build: enable aot compilation by default * ci: do not install pre deps to lint * wip * wip * docs: update instructions to install @ionic/cli * chore: update @angular/cli * chore: update @angular/core * chore: update deps --- .github/workflows/lint.yml | 4 +- .github/workflows/test.yml | 4 +- README.md | 46 +- angular.json | 2 +- package-lock.json | 4835 +++++++++--------------------------- package.json | 73 +- 6 files changed, 1204 insertions(+), 3760 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index bbbdd693d..0863ddcb9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,9 +21,7 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - name: Install pre dependencies - run: npm install -g ionic cordova - name: Install - run: npm rebuild node-sass && npm install + run: npm install - name: Lint run: npm run lint diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9df222a96..c82149116 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,10 +21,8 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - name: Install pre dependencies - run: npm i -g ionic cordova - name: Install - run: npm rebuild node-sass && npm install + run: npm install - name: Test run: npm run test:coverage - name: Build diff --git a/README.md b/README.md index 4fbb26853..be42de421 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ ARK’s mobile wallet is a hybrid application (using the same codebase for Andro ## Download -- [Google Play](https://play.google.com/store/apps/details?id=io.ark.wallet.mobile) -- [App Store](https://itunes.apple.com/us/app/mobile-ark/id1324625967) +- [Google Play](https://play.google.com/store/apps/details?id=io.ark.wallet.mobile) +- [App Store](https://itunes.apple.com/us/app/mobile-ark/id1324625967) ## Installation @@ -29,7 +29,7 @@ Download and install [Node.js](https://nodejs.org/). Then follow the steps below: ```bash -npm install -g ionic cordova +npm install -g @ionic/cli cordova npm install -g cordova-res native-run npm install ionic cordova prepare @@ -56,9 +56,9 @@ npm install -g ios-deploy Download and install: -- [JDK8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) -- [Gradle](https://gradle.org/install/) -- [Android Studio](https://developer.android.com/studio/) +- [JDK8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) +- [Gradle](https://gradle.org/install/) +- [Android Studio](https://developer.android.com/studio/) Then install Android SDK (API 28) on Android Studio and configure the [environment variables](https://developer.android.com/studio/command-line/variables) (`ANDROID_SDK_ROOT`). @@ -88,36 +88,36 @@ npm run build:android ### iOS Deploy -- Download the `Development` and `Distribution` certificates in [Apple's member center](https://developer.apple.com/membercenter) -- Open Xcode and import the workspace file in `/platforms/ios` -- Check the `Signing and Capabilities` tab to ensure that the `Provisioning Profile` is set correctly -- Go to `Product` > `Archive` in menu. -- Proceed in `Distribute App` wizard. -- `App Store Connect` > `Upload`. Then it will be listed on [iTunes Connect](https://itunesconnect.apple.com/) -- `App Store Connect` > `Export` to create the `.ipa` file +- Download the `Development` and `Distribution` certificates in [Apple's member center](https://developer.apple.com/membercenter) +- Open Xcode and import the workspace file in `/platforms/ios` +- Check the `Signing and Capabilities` tab to ensure that the `Provisioning Profile` is set correctly +- Go to `Product` > `Archive` in menu. +- Proceed in `Distribute App` wizard. +- `App Store Connect` > `Upload`. Then it will be listed on [iTunes Connect](https://itunesconnect.apple.com/) +- `App Store Connect` > `Export` to create the `.ipa` file ### Android Deploy -- Open the output directory `cd platforms/android/build/outputs/apk` -- Generate a private key to sign the APK (skip this if you already have one): +- Open the output directory `cd platforms/android/build/outputs/apk` +- Generate a private key to sign the APK (skip this if you already have one): ```bash keytool -genkey -v -keystore release-key.keystore -alias ark -keyalg RSA -keysize 2048 -validity 10000 ``` -- Sign the unsigned APK: +- Sign the unsigned APK: ```bash jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ./release-key.keystore app-release-unsigned.apk mobile-app ``` -- Optimize the APK: +- Optimize the APK: ```bash zipalign -v 4 app-release-unsigned.apk AppRelease.apk ``` -- Open the [Google Play Store Developer Console](https://play.google.com/apps/publish) and upload the `AppRelease.apk` +- Open the [Google Play Store Developer Console](https://play.google.com/apps/publish) and upload the `AppRelease.apk` ## Testing @@ -127,10 +127,10 @@ npm test ## Contributing -- If you find any bugs, submit an [issue](../../issues) or open [pull-request](../../pulls), helping us catch and fix them. -- Engage with other users and developers on [ARK Slack](https://ark.io/slack/). -- [Contribution bounties](https://docs.ark.io/guidebook/contribution-guidelines/contributing.html). -- [Help translate](./TRANSLATING.md). +- If you find any bugs, submit an [issue](../../issues) or open [pull-request](../../pulls), helping us catch and fix them. +- Engage with other users and developers on [ARK Slack](https://ark.io/slack/). +- [Contribution bounties](https://docs.ark.io/guidebook/contribution-guidelines/contributing.html). +- [Help translate](./TRANSLATING.md). ## Security @@ -142,4 +142,4 @@ This project exists thanks to all the people who [contribute](../../contributors ## License -[MIT](LICENSE) © [ARK Ecosystem](https://ark.io) \ No newline at end of file +[MIT](LICENSE) © [ARK Ecosystem](https://ark.io) diff --git a/angular.json b/angular.json index fa5e45009..bfe64d81a 100644 --- a/angular.json +++ b/angular.json @@ -14,6 +14,7 @@ "build": { "builder": "@angular-builders/custom-webpack:browser", "options": { + "aot": true, "customWebpackConfig": { "path": "./webpack.config.js" }, @@ -66,7 +67,6 @@ "sourceMap": false, "extractCss": true, "namedChunks": false, - "aot": true, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": true, diff --git a/package-lock.json b/package-lock.json index c51d13c07..fb99431fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,15 +19,37 @@ } }, "@angular-devkit/architect": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", - "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", + "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", + "@angular-devkit/core": "9.0.5", "rxjs": "6.5.3" }, "dependencies": { + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "rxjs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", @@ -36,23 +58,29 @@ "requires": { "tslib": "^1.9.0" } + }, + "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 } } }, "@angular-devkit/build-angular": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.2.tgz", - "integrity": "sha512-w1FHd+Ub0YO1/Xlz+SrSxbFWbJVW0jmR++fABWreh04XHGtC8kqsqP6VY8DUYBO9PcD5JyB5uG9TBxVLVR/G/w==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.5.tgz", + "integrity": "sha512-WCfmQNTzQNgdh8baeNJm5uIhXbWp62e+upsZzh6eJ1ZrIeJSPJxE5mI1VvqBoAQH3hKjuAaAW3axpWGar4kJjw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.2", - "@angular-devkit/build-optimizer": "0.900.2", - "@angular-devkit/build-webpack": "0.900.2", - "@angular-devkit/core": "9.0.2", + "@angular-devkit/architect": "0.900.5", + "@angular-devkit/build-optimizer": "0.900.5", + "@angular-devkit/build-webpack": "0.900.5", + "@angular-devkit/core": "9.0.5", "@babel/core": "7.7.7", "@babel/generator": "7.7.7", "@babel/preset-env": "7.7.7", - "@ngtools/webpack": "9.0.2", + "@ngtools/webpack": "9.0.5", "ajv": "6.10.2", "autoprefixer": "9.7.1", "babel-loader": "8.0.6", @@ -61,7 +89,7 @@ "caniuse-lite": "1.0.30001020", "circular-dependency-plugin": "5.2.0", "copy-webpack-plugin": "5.1.1", - "core-js": "3.6.0", + "core-js": "3.6.4", "coverage-istanbul-loader": "2.0.3", "cssnano": "4.1.10", "file-loader": "4.2.0", @@ -109,15 +137,28 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", - "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", + "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", + "@angular-devkit/core": "9.0.5", "rxjs": "6.5.3" } }, + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, "@babel/generator": { "version": "7.7.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", @@ -170,12 +211,6 @@ "integrity": "sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA==", "dev": true }, - "core-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.0.tgz", - "integrity": "sha512-AHPTNKzyB+YwgDWoSOCaid9PUSEF6781vsfiK8qUz62zRR448/XgK2NtCbpiUGizbep8Lrpt0Du19PpGGZvw3Q==", - "dev": true - }, "glob": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", @@ -219,9 +254,9 @@ } }, "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "rimraf": { @@ -266,9 +301,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.2.tgz", - "integrity": "sha512-4jcjYKjGvUj1Q4vqQSUU0JT1LXOh7qC7vWCK+bbAsW77wAavtbKFt2mDjB2DMIRFzt9lSULi0Z+JVOD9KUzk2g==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.5.tgz", + "integrity": "sha512-BdmvD58DnAAf6/o/fRzU2l+2g4IwuIJf8x/rd9AGWd7fHrcwgJDhB9rYetB7JqYR8uOWk+AFElDpvNOj8YUy0w==", "dev": true, "requires": { "loader-utils": "1.2.3", @@ -284,6 +319,12 @@ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, "typescript": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", @@ -293,26 +334,48 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.2.tgz", - "integrity": "sha512-DiHUSO352NV9OcXB8cZY8gLijrUg0SIbPwrKUTjx1prZMJKa+MqWDpwhleVsM1VRyUH3qMTzhaUFmw+hqdR0BQ==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.5.tgz", + "integrity": "sha512-4fYZNg8X73wTjlXV37m0BRVMa27GSwhAupgv5cb9Q3Vys9sYxEUL+GJetXDxypA5YbMj5xX/xqyU9TPtvXhgRg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.2", - "@angular-devkit/core": "9.0.2", + "@angular-devkit/architect": "0.900.5", + "@angular-devkit/core": "9.0.5", "rxjs": "6.5.3" }, "dependencies": { "@angular-devkit/architect": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", - "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", + "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", + "@angular-devkit/core": "9.0.5", "rxjs": "6.5.3" } }, + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "rxjs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", @@ -321,6 +384,12 @@ "requires": { "tslib": "^1.9.0" } + }, + "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 } } }, @@ -364,16 +433,38 @@ } }, "@angular-devkit/schematics": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.2.tgz", - "integrity": "sha512-+MiSBWErz8hxcbyHioCQtTnFpbqaoCEQEknK0vCb15fFEY2Hi3u2TXK59QNKsqn8w+Mye5dHYhwmpsAC8Wcgtw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.5.tgz", + "integrity": "sha512-PbOYoy4YyEbR6f1jO18Rt3fJuyaaTJ3bFmws5qWGGNK2yZiP/hnSaM3VffOwoL4sgyKkI2FNKSPiQZgTl8b0Tg==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", + "@angular-devkit/core": "9.0.5", "ora": "4.0.2", "rxjs": "6.5.3" }, "dependencies": { + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "rxjs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", @@ -382,20 +473,26 @@ "requires": { "tslib": "^1.9.0" } + }, + "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 } } }, "@angular/cli": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.2.tgz", - "integrity": "sha512-ih3bnvav94MXI9YpwJ4AaETfUGwzc+S2jg4vkfYMuBeWO8kJ7Ma4f2ZriIwWyfHWHlBLHDF6OjAVdisBKPpQag==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.5.tgz", + "integrity": "sha512-hRGpmIwnm908eW5sA4zrVkCGaIUHYLSNu5koaLulK0jj5Iy+vkieDiBuAkD2uVvG7M59s4s4u+L0DMetIpvZQg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.2", - "@angular-devkit/core": "9.0.2", - "@angular-devkit/schematics": "9.0.2", - "@schematics/angular": "9.0.2", - "@schematics/update": "0.900.2", + "@angular-devkit/architect": "0.900.5", + "@angular-devkit/core": "9.0.5", + "@angular-devkit/schematics": "9.0.5", + "@schematics/angular": "9.0.5", + "@schematics/update": "0.900.5", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "^4.1.1", @@ -414,23 +511,36 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.2.tgz", - "integrity": "sha512-uClqp4QEY/m6CB7SsNZGdVNTEgMzkI1Fkt0TOdE9huN1iCi/0+h3nQb+NZ1vBqD2afg9EqDwIPu2KCU0p1BR2A==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", + "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", + "@angular-devkit/core": "9.0.5", "rxjs": "6.5.3" } }, + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, "@schematics/angular": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.2.tgz", - "integrity": "sha512-H6ZyxLYoIN68bbNKnUjBCPtB0fcwnpIyTkqXQHa3B4HITcU3uee4PLAl3xCkTS2NGv8m/0eWND9zt5wryGf8PQ==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.5.tgz", + "integrity": "sha512-OUCC5J5+9v2tc3O/GL+2E9LfIXeqYCo/gdOTgb+jSos0aQQ7wnXOmufuoOsgt0KrWpAt34MIBktLNUF1n+RgcQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", - "@angular-devkit/schematics": "9.0.2" + "@angular-devkit/core": "9.0.5", + "@angular-devkit/schematics": "9.0.5" } }, "ansi-colors": { @@ -448,6 +558,15 @@ "ms": "^2.1.1" } }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -478,6 +597,12 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "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 + }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", @@ -493,19 +618,19 @@ } }, "@angular/common": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.1.tgz", - "integrity": "sha512-40jbKdCb4xi6NTzLt1kE0V/X7JxCLLo8eUEr3Z34Z9Ljnd4LC+/CkuThPdQJ3HW1Z8r5SWXj+rES+sn75YNVmA==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.5.tgz", + "integrity": "sha512-AwZKYK5M/3762woK+3290JnBdlBvZXqxX5vVze6wk23IiBlwIV+l79+Lyfjo/4s031kibq47taaZdC7qkkBkNA==" }, "@angular/compiler": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.1.tgz", - "integrity": "sha512-ldamsPzIx+FLT/IYBqwsFL6qbP3BDgvPQa4Y3F/gFXDsoe+VTY5qwJfhr2iLbtF+fYomwOgY2kSL42BVQL873Q==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.5.tgz", + "integrity": "sha512-TeyhRGefTOtA9N3udMrvheafoXcz/dvTTdZLcieeZQxm1SSeaQDUQ/rUH6QTOiHVNMtjOCrZ9J5rk1A4mPYuag==" }, "@angular/compiler-cli": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.1.tgz", - "integrity": "sha512-HxJAXr1TWoqVzR7pRe89UjWnu3ESJzo+gjWWtv1NtDMwUKQ2JHWmC3yp/U0URprA03Ii8lXlrZWBjps04ZIlAg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.5.tgz", + "integrity": "sha512-lFlasm8UBApTq4/MkxnYrRAMfpOvvg3YYBEMibuEGlaJjW/Xd1JcisUuFiooCxCIKF5phyORHmxjywGPhHqQgQ==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -518,6 +643,7 @@ "reflect-metadata": "^0.1.2", "semver": "^6.3.0", "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", "yargs": "13.1.0" }, "dependencies": { @@ -562,6 +688,12 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -614,25 +746,25 @@ } }, "@angular/core": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.1.tgz", - "integrity": "sha512-q/3VLGM98euB/ZluSuMqvWyQb563iabRcVkC/DrHqCQMadV1ZpvuOgf8Gm092d8GY/iC4CGlTsN0wiVapMxplQ==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.5.tgz", + "integrity": "sha512-7VznrYjaAIzeq/zQ7v6tbeoOI7JJKgChKwG7s8jRoEpENu+w2pRlRdyQul88iJLsXgObR+/TfBNm/K+G4cqAFw==" }, "@angular/forms": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.1.tgz", - "integrity": "sha512-yzzlCslWp7IiFSYjSGNqexPmnKn9xhpT8FKzxNT0qEpQ+SieQ7apsjvMfR3TCip0Nnfus2qTh3kz1ZCaawAcjQ==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.5.tgz", + "integrity": "sha512-579PXAfT92J4mghjWKiZ3Zj3xee4h3RP70YHSlsfbi94MONvryWDrnXxvUZ0zJJCVnEJQ7x+nGEp3wwWqR12Jw==" }, "@angular/language-service": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.1.tgz", - "integrity": "sha512-e/8CGATX7C0ElwBk6QjCfWk7A6lwikrBR1cesNu1kNwneZkiIeIel1jklbDUT0NFr4C2/FdBu2Z3GbvDeCO8Vw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.5.tgz", + "integrity": "sha512-9ykFNYZpWdoggFPK3LuTJobBZjoCEQP6kKt88ZZV7GTMIXoE7iY413KfhINoXdMwxIAbba0xlPMR/4p6jFAa4Q==", "dev": true }, "@angular/localize": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.0.1.tgz", - "integrity": "sha512-hRUxGSrSscy/t/akxHLDjrrdTbLZjUDD1JoEgfcWzZMm21V0MhzA5jhOdD/bXjmX/Oqdx00C6cR088QcNb/8mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.0.5.tgz", + "integrity": "sha512-BABEY9UeFPOFZcLxLXPnQnJwSHbIQKTtjYv7pHqB9O30wZ8XeExhTzb/7GXxweudlOk0w2QGRxUVMSpqR+3Txw==", "requires": { "@babel/core": "7.8.3", "glob": "7.1.2", @@ -670,11 +802,11 @@ } }, "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -717,40 +849,40 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==" + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==" }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.8.6", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "requires": { "esutils": "^2.0.2", "lodash": "^4.17.13", @@ -869,26 +1001,27 @@ } }, "@angular/platform-browser": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.1.tgz", - "integrity": "sha512-0o2aRxbQ3xZ/ZeLXajDqhrRK6vcICzdJ7GKvPgZxdohnnJ7JN1qp8U7J4aEotPqfSAde/aD2JvoDDtKZ0XIDWg==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.5.tgz", + "integrity": "sha512-24QGcQXthYXB/wT8okJjxqss/JOk4A6O1/Fmva79k0AvwtYkl2tikcyEc5T3xZtjoi8g32AN9nbZAobtkxlqTA==" }, "@angular/platform-browser-dynamic": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.1.tgz", - "integrity": "sha512-DslT339T+TBt4jUlXMblPR4IghXtykB+jQctm02G4AJUlvMa4b798N1oM6sD5F8NmBMa6beZ2dcRJ07f75LVBA==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.5.tgz", + "integrity": "sha512-NRfsAwbgxOvEcpqlERDAG0wap5xJa0wKwnudTCnyvf4B0D6kLkT1Idjqv22NDW5rfM2oDWaZ/qpgpDnAo6/ZBQ==" }, "@angular/router": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.1.tgz", - "integrity": "sha512-pHLDooNvXEUtjYANWtJ7fMxG9l2mDJgPphOi/S6c27U5yNf0NVk+Qh3kuuNi2hQQ5RaR4jdRyCQePD2H4g2+/g==" + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.5.tgz", + "integrity": "sha512-Sz3DQUxlzAk9aZ9eVtZRh6xF5SMg/Gb3rc5I7dL1M+mycSNoFJ4HPTXleZkKM69mMkKQ5fEtza4x26MSlF+O9w==" }, "@arkecosystem/crypto": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@arkecosystem/crypto/-/crypto-2.6.1.tgz", - "integrity": "sha512-e81QnKCuJI0CEbTU4Bcg23o7ltu/OIAZlodwZJatAgu2uP7T0sfX/S1McZ5riUuuaAwDrlhiKSweiILXiNRCbg==", + "version": "2.6.24", + "resolved": "https://registry.npmjs.org/@arkecosystem/crypto/-/crypto-2.6.24.tgz", + "integrity": "sha512-3XohO9G5DWAiKmCLDkjJAD5jFzphhUvtR3nYsEROTPgaZ33m0qTh+CrI6yZhVZrWRYgDT2Efqax02pt6Fkl4XQ==", "requires": { "@arkecosystem/utils": "0.8.3", + "@types/bytebuffer": "^5.0.40", "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "bcrypto": "^4.1.0", @@ -905,7 +1038,6 @@ "lodash.get": "^4.4.2", "lodash.set": "^4.3.2", "lodash.sumby": "^4.6.0", - "long": "~3", "tiny-glob": "^0.2.6", "wif": "^2.0.6" } @@ -1051,9 +1183,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1074,9 +1206,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1087,14 +1219,14 @@ } }, "@babel/helper-call-delegate": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", - "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz", + "integrity": "sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.8.3", "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.8.7" }, "dependencies": { "@babel/code-frame": { @@ -1107,12 +1239,12 @@ } }, "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1159,43 +1291,43 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.8.6", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1227,11 +1359,12 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", - "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz", + "integrity": "sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A==", "dev": true, "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-regex": "^7.8.3", "regexpu-core": "^4.6.0" } @@ -1288,26 +1421,26 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1337,12 +1470,12 @@ } }, "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1389,43 +1522,43 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.8.6", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1486,9 +1619,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1508,9 +1641,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1530,9 +1663,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1543,16 +1676,17 @@ } }, "@babel/helper-module-transforms": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz", - "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz", + "integrity": "sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", "@babel/helper-simple-access": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.8.6", "lodash": "^4.17.13" }, "dependencies": { @@ -1586,26 +1720,26 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1625,9 +1759,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1675,12 +1809,12 @@ } }, "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1727,43 +1861,43 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.8.6", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1795,15 +1929,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz", - "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.8.3", "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" }, "dependencies": { "@babel/code-frame": { @@ -1816,12 +1950,12 @@ } }, "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1868,43 +2002,43 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.8.6", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1966,26 +2100,26 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -2026,12 +2160,12 @@ } }, "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -2078,43 +2212,43 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", + "@babel/generator": "^7.8.6", "@babel/helper-function-name": "^7.8.3", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -2443,9 +2577,9 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz", - "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz", + "integrity": "sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.8.3", @@ -2453,7 +2587,7 @@ "@babel/helper-function-name": "^7.8.3", "@babel/helper-optimise-call-expression": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", "@babel/helper-split-export-declaration": "^7.8.3", "globals": "^11.1.0" }, @@ -2508,26 +2642,26 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -2585,9 +2719,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz", - "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz", + "integrity": "sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -2644,26 +2778,26 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -2765,12 +2899,12 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz", - "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz", + "integrity": "sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.8.3", + "@babel/helper-call-delegate": "^7.8.7", "@babel/helper-get-function-arity": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" }, @@ -2785,9 +2919,9 @@ } }, "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -2807,12 +2941,12 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", - "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { @@ -3019,115 +3153,115 @@ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" }, "@ionic-native/background-mode": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/background-mode/-/background-mode-5.21.5.tgz", - "integrity": "sha512-/YGBbyGhyJzzjRWFVz+2jWnwChYWF0F3VQ7F8+mcloZQrwLN1XicK+YTfaYgOvVITFcWUuwl7J2JlRTqhcxsWA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/background-mode/-/background-mode-5.22.0.tgz", + "integrity": "sha512-6LO4aFBQtAKZnKwZ6E2GqCCV8qGtO5/I4Wa+XUeOxSudHoSmxk7/XsbPHLI3v5I1UtuyqHRIF8khIvjlp5rcUA==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/clipboard": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/clipboard/-/clipboard-5.21.5.tgz", - "integrity": "sha512-gb2uFJdeOKcpghgUuDczp7O0DytZgRE1R2Fvuk+VqWiB+5snuPt1NdABmgVJuwgQSSZJrQIHxIlMPX4Dy7viSg==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/clipboard/-/clipboard-5.22.0.tgz", + "integrity": "sha512-kyc23jW23autu/rxC5kUXMtsMaGLcshWvoWCVIUSuySE3F6z1vedHnc3K4J+OiweSdJmXoH/MZDlHODFxo8+IA==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/core": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.21.5.tgz", - "integrity": "sha512-Ds0sxb/hFcWPMOwDoRVp+iPL11ZNziNlX0szS5au5X6eQX+8aEhd6mJ5TgE6xC9KQdNIjV1/xB+1eMdWrEpY+Q==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.22.0.tgz", + "integrity": "sha512-zX4EUDDDkCBtZVmu00V+SVbpuqDGhxe0Fri75neAjsG1oHvP3l470EOGHJgLW5edJtIcStlqvDE49RUcwT4mlA==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/in-app-browser": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.21.5.tgz", - "integrity": "sha512-7+aPNedk7LELoizR4y7WC/4CRBQ76EuVfJMDLV7oZ+gDoubbZJfSnWoF+24mMtJFxfiMWs2HbGNaOdv08kE/0A==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.22.0.tgz", + "integrity": "sha512-agSZuD6Lm7T/2rTxhwiM3zo+m0QJMLsaKiSwqBcp93sFMrkZoC7dG5LxGshubYODL74BlZjPfDWiS30doY/xEQ==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/keyboard": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/keyboard/-/keyboard-5.21.5.tgz", - "integrity": "sha512-1fPiFcH3Bj1h9tFPFCNpatDFCfOx+HTtO0o2AEwFctnKygaizXw3mvRvJFMb63KVa/ktaZ4BTxS7NJhElUr8IA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/keyboard/-/keyboard-5.22.0.tgz", + "integrity": "sha512-r/m3fBGFkCUTpcCR6epZw5MnGLK8xWENWkOR/fZ1dyluyLlhwe89Q2UvrBKVvhfj4xXeootRsgd7ImiZ6Q1R2w==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/local-notifications": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-5.21.5.tgz", - "integrity": "sha512-Z7jKM10ySZHrFSEbkr8yEonBEvgTOJUt35b4SirlxUUhcnpHvTZBiIOkhZdQQkjfRdsUnf2jTI2pm8L+IFwt6g==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-5.22.0.tgz", + "integrity": "sha512-ncc9CS4YK+6E6idBBL5nK0VBhv20TrhTEn4AUrxOWH9hx/+rwdYrNa4Qt/l1LgcmW1zWrGxiNBJX2wmIeUEC1Q==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/network": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/network/-/network-5.21.5.tgz", - "integrity": "sha512-UcisBfMxCJFQYLqxZDs3EgE6ePCe9ANbqcEIyvUWXR5RSCqwi4eMFiOpKFJvKZkI3XqMyqjWPgSZz+TEKWpUAQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/network/-/network-5.22.0.tgz", + "integrity": "sha512-AVJsUP4P+wye1NtvC8tqzAJo7ZvuO2nazrACZKDu6q4eGUmC4LP6ZSAe+OvE/mHlKnHG5ne/aTN5TPv7KRUFHw==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/qr-scanner": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.21.5.tgz", - "integrity": "sha512-acdpvRACCtj97R0fjIUkhHMNWdsr7TzRDcOFZMULZFzxFlloD9n7Ub7Q4GLWEb4H+O7iQT96KQVHKhB/g6CWKQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.22.0.tgz", + "integrity": "sha512-DU7StfUiT3RuSOSZ7FpwApyv/FDhdzM3X6vEmmzDyh/6OvBhcTAydELvR04RL5zEiWQ9MJujGSN5iDW4lhkvaw==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/screen-orientation": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/screen-orientation/-/screen-orientation-5.21.5.tgz", - "integrity": "sha512-53qt1seRqqtdvr6uLFd9pCPfQlxofAuf9DjP0Q1WSiKi80LSC+xb1/V/OVdUKdRLNDtTE7h75d/xP+VXijZaww==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/screen-orientation/-/screen-orientation-5.22.0.tgz", + "integrity": "sha512-y/1zUcZqmylUDxnPy5k8re7QMXRgpPwW0cWl5BSFiv1cWC3alg2egX8wEd3ZiJlS5+TfDTuBVeL3TaGBMr4A1A==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/social-sharing": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/social-sharing/-/social-sharing-5.21.5.tgz", - "integrity": "sha512-xL1yVACgwihpGfrhtcWpqDTtAiiEGDhtRAZylYNLr2QZPmHnFthTUIc2g9wAXx8auRzS1E3g5BA7GR9nna3mgw==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/social-sharing/-/social-sharing-5.22.0.tgz", + "integrity": "sha512-1UP2vF0A8w7DnbPrwl+AphZo9N8NMRLfgjUrNxgVQJB788TvOa1iEccqJ0v+2lF0qrks6yRySiBjwdWQcVogCg==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/splash-screen": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.21.5.tgz", - "integrity": "sha512-l+jovdxaAEiDIVbUX2HQdFm402ZXHlGDFBsZOkV5QUjQA/E5RvekXn08UIS9ffE1wKr+qu0UQg0iK98h2UiTDQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.22.0.tgz", + "integrity": "sha512-cJC93eCsxYAhC9kn4GMA09pbCcpihiKXhMedelkUpeeBa2w0QBG0RiCIUFQ8G4G963vT991gxzwQO625xoCekQ==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/status-bar": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-5.21.5.tgz", - "integrity": "sha512-CRehgKnXRNyo4kUAy/fhOh/t76AIxsojncvqOXcS4DmVYpY9K5IfUjrjG+IK5G4fLHDM3exYnvC4721uOhnfPQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-5.22.0.tgz", + "integrity": "sha512-CVb/HjNZdYMmUHK/H2q1uo6uIt+KOG/NnOgn4jUNTiw5XiGWvT+hqrMNTBrRk1nG573ky5OhW0f0oe+GqWaxOg==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic-native/vibration": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/@ionic-native/vibration/-/vibration-5.21.5.tgz", - "integrity": "sha512-0auymwoClNB4k0n4KtOCGaOVJ2XBC9L33LTbTyzio7vJQa5U5N/daas61ISRGm7lxgvZ5Wh+UFVWDpLcAzx5lQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@ionic-native/vibration/-/vibration-5.22.0.tgz", + "integrity": "sha512-lTtp99MBZMChcL6SvRkSZ0HRj03Sd45j1xk400rzhFKF6UdO7UwIVcjT/Vn6rtZQhA8VfxW8tN7Nlsd5SwAFrg==", "requires": { "@types/cordova": "^0.0.34" } }, "@ionic/angular": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.0.0.tgz", - "integrity": "sha512-LUcc3xj/yEminnMC4mRWcOVgXP0LjWS6MKA7GHHChsXHKvg7xhP39z2l88kmplTED3TH6bSD2HF060/jFkXaPg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.0.4.tgz", + "integrity": "sha512-LzVxQhR9CqXKLVgz6YYtJEg7drRoDw3YGBk6Q1Wlpxqos9HCfjX/AevN90Sxus5f3PZUz47i0JkPZJFJmPb8zg==", "requires": { - "@ionic/core": "5.0.0", + "@ionic/core": "5.0.4", "tslib": "^1.9.3" } }, @@ -3154,25 +3288,25 @@ } }, "@ionic/cli-framework": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-4.1.0.tgz", - "integrity": "sha512-sREboBsyS8ELh5ONZ2ztJx9eeWg1FBY6GDL4d8cUwmkx75gR+QDgdi2xCwik0y12h8g8wdEzX5MXXxktHvZCtg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-4.1.1.tgz", + "integrity": "sha512-xaq8MrVUPt4NekLUv+A2ckVNi4stfSGdMk3Dpx0hRGLdgA8IHfVEmkpW5dkqYW6TX4CaWFPYTRMDl+U3uO9w+A==", "dev": true, "requires": { - "@ionic/utils-array": "2.1.0", - "@ionic/utils-fs": "3.1.0", - "@ionic/utils-object": "2.1.0", - "@ionic/utils-process": "2.1.0", - "@ionic/utils-stream": "3.1.0", - "@ionic/utils-subprocess": "2.1.0", - "@ionic/utils-terminal": "2.1.0", + "@ionic/utils-array": "2.1.1", + "@ionic/utils-fs": "3.1.1", + "@ionic/utils-object": "2.1.1", + "@ionic/utils-process": "2.1.1", + "@ionic/utils-stream": "3.1.1", + "@ionic/utils-subprocess": "2.1.1", + "@ionic/utils-terminal": "2.1.1", "chalk": "^3.0.0", "debug": "^4.0.0", "lodash": "^4.17.5", - "log-update": "^3.2.0", + "log-update": "^4.0.0", "minimist": "^1.2.0", "rimraf": "^3.0.0", - "slice-ansi": "^3.0.0", + "slice-ansi": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "tslib": "^1.9.0", @@ -3300,169 +3434,23 @@ } } }, - "@ionic/cli-framework-prompts": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@ionic/cli-framework-prompts/-/cli-framework-prompts-1.0.4.tgz", - "integrity": "sha512-mII1sPCWDsQYxOSBFjQBPzis2UJuM59T6O1/6EelCQGilHEMZ39bFNb8O2f3Irnx6y6sX/4VVTy2BQwDHMK1yA==", - "dev": true, - "requires": { - "@ionic/utils-terminal": "1.1.2", - "debug": "^4.0.0", - "inquirer": "^7.0.0", - "tslib": "^1.9.0" - }, - "dependencies": { - "@ionic/utils-terminal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-1.1.2.tgz", - "integrity": "sha512-ODXbta2kvFNkMIEGwl7KX5gJTcZZHkzSLoBh3wND2H+EsG0KpIqOZKWMtkj+suuPut85wyLZ7fGfARnrNf7dtA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "tslib": "^1.9.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "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 - }, - "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 - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.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" - }, - "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 - } - } - } - } - }, "@ionic/core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.0.0.tgz", - "integrity": "sha512-F+qSeL6Icy34dgpWvXe2ImwtlXrz6KbAthVpy3VSzlbZ5Du8V7xfe4RXXE2TtFsfV1lLOmX1KAgxbYnlMMlYzw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.0.4.tgz", + "integrity": "sha512-WP0jnG9FB/hNIvLaCKYZArvynnnlHZxaBzZXxQqyHvtQL8eVb1UYxDlr2hE8g8Sz+vd39Cr7oB5RZID7mV56aA==", "requires": { "ionicons": "^5.0.0", "tslib": "^1.10.0" } }, - "@ionic/discover": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@ionic/discover/-/discover-2.0.8.tgz", - "integrity": "sha512-Bk/JPL2J/Qq4FAkBrgxPdosx8rtLHXXwqsfiDWDcpW2LpsFytpzlysWsI59++h6bzp1n/w9/M/lLflfMtK6mdw==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "netmask": "^1.0.6", - "tslib": "^1.9.0", - "ws": "^7.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - }, - "ws": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz", - "integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A==", - "dev": true - } - } - }, "@ionic/lab": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.1.0.tgz", - "integrity": "sha512-H56BB94NBcWfybdeJiyklVjJ3xltNZPS6Pf/5OlLrsOI+rRhmO2iDHL8SGEQ32bsCXg2XCvjDDRB5OuNPmqqtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.1.1.tgz", + "integrity": "sha512-7Njl/2GtIdbLQhAHk32NSKNtgmeHaubGhWh6+oDNEwyjzczUmbBV63mM2lkJiI1bEolZ+f+kg0tAiEAS6vLtpg==", "dev": true, "requires": { - "@ionic/cli-framework": "4.1.0", - "@ionic/utils-fs": "3.1.0", + "@ionic/cli-framework": "4.1.1", + "@ionic/utils-fs": "3.1.1", "chalk": "^3.0.0", "express": "^4.16.2", "tslib": "^1.9.0" @@ -3531,9 +3519,9 @@ } }, "@ionic/utils-array": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.0.tgz", - "integrity": "sha512-BA6UcviyvobgfdzGKywpnO3TXtNdPfo8ImdEcV/pH+TeRkFYQERYTzQQxvi2OwK900Y5u3v5si1XraaJs5dQhw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.1.tgz", + "integrity": "sha512-6tdrg0g/w5I2Xn/YeM8khhcKgphNwt9VJ4qJ//nJQrmlwwyV2ULSIBnhEIWfYdWgkSD24JLQzSsoB0ZltCUbNw==", "dev": true, "requires": { "debug": "^4.0.0", @@ -3558,9 +3546,9 @@ } }, "@ionic/utils-fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.0.tgz", - "integrity": "sha512-PzrTdV2lW596stYI5Zfv0UjiD4oGMqzmkgkF3XqONY2zbhK308fZQu6Msibo0u3u5aPrRmgO6X0gdznMxsC0lw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.1.tgz", + "integrity": "sha512-LwfziPHkVata/54dcf8sn/LhShUhgdds411M8v4H6+ugQQO9N+a5TDtFtVnnqSy8Q3uxR15SBWMGyII8i730BA==", "dev": true, "requires": { "debug": "^4.0.0", @@ -3595,37 +3583,10 @@ } } }, - "@ionic/utils-network": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@ionic/utils-network/-/utils-network-1.0.6.tgz", - "integrity": "sha512-a7W44S+1ACuRAle9o6YuyTtt6MgxcKhK65Qf1M6rVpzfhW/rJ9gpyACbICHXst5jh2k7ngp5CT9Jyw5fByHNlQ==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "tslib": "^1.9.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - } - } - }, "@ionic/utils-object": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.0.tgz", - "integrity": "sha512-SBRsjPo8Pre2G8Q2FxAhvFYy9AOj7R6f0gXtfZVvrue0p4NVSNANqWAHEBdv+ZrdBDlUcfbb7NszpIpuUe+31w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.1.tgz", + "integrity": "sha512-d9trsuk7EzlgzcoCB3BVkhqG/AEzGVw3QUmsDf+MaAUXTtmXiy8wkIpDFx4sgfEXDTnmJP2HO7ZnDEusLDOWoA==", "dev": true, "requires": { "debug": "^4.0.0", @@ -3650,13 +3611,13 @@ } }, "@ionic/utils-process": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.0.tgz", - "integrity": "sha512-DO465RDMglA5PWLKt03b2ZTc4QaFyf6Ia2pXRvT+eNu4mNIauiYS+5hIcnYKS4Qk214rI7gYzmMzfUqeIp8W9w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.1.tgz", + "integrity": "sha512-cxQHvoqVEdsAzvI1UmiQNBOzEkag9dHU52L1LsC+FPkiNirNM2tYgKNa3tERcZnZBZwqvKveGIJiiBnFQRnDYw==", "dev": true, "requires": { - "@ionic/utils-object": "2.1.0", - "@ionic/utils-terminal": "2.1.0", + "@ionic/utils-object": "2.1.1", + "@ionic/utils-terminal": "2.1.1", "debug": "^4.0.0", "lodash": "^4.17.5", "tree-kill": "^1.2.2", @@ -3681,9 +3642,9 @@ } }, "@ionic/utils-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.0.tgz", - "integrity": "sha512-SauLDlON1hLBMLVbVXJbbxP+WUyXOPC/yceDxjgiLu9jXF2ZaUQTknl9YqAlO5ga9Yqfa8UiS4EodHYxo7kjjQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.1.tgz", + "integrity": "sha512-n2oN+UqQpr0kGFE6JSkQpVyrVFJCSHqhlKMTo4dzuUMgLovmAZkz+qxgNw+8MCkIcdlZURs6arsNVZt9KeZCVg==", "dev": true, "requires": { "debug": "^4.0.0", @@ -3708,16 +3669,16 @@ } }, "@ionic/utils-subprocess": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.0.tgz", - "integrity": "sha512-kmlLuds0DsmDreEor/dRHkcbEZYUpoFYA2LLplvLQvYNjmxnrzE8aBaIaCyaPoO1KLV3B/WOjmpl11/9J9e4fw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.1.tgz", + "integrity": "sha512-DK/KlRslM5t5ZC7SwOmfqFg53XZklWR79YfpNvKoGjBczJFA83y4QMXqtbi2lVZc9g4ojkYOd0EycmzNSq6Q4A==", "dev": true, "requires": { - "@ionic/utils-array": "2.1.0", - "@ionic/utils-fs": "3.1.0", - "@ionic/utils-process": "2.1.0", - "@ionic/utils-stream": "3.1.0", - "@ionic/utils-terminal": "2.1.0", + "@ionic/utils-array": "2.1.1", + "@ionic/utils-fs": "3.1.1", + "@ionic/utils-process": "2.1.1", + "@ionic/utils-stream": "3.1.1", + "@ionic/utils-terminal": "2.1.1", "cross-spawn": "^7.0.0", "debug": "^4.0.0", "tslib": "^1.9.0" @@ -3782,9 +3743,9 @@ } }, "@ionic/utils-terminal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.1.0.tgz", - "integrity": "sha512-Nz6jtYpQIn2a6tbB111xxG6sEaeVoLigIqrLNdyii5vpbUe6zRYbFFLNddUdreRpt6zyxLFzcAFIKo779W0tQw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.1.1.tgz", + "integrity": "sha512-/7fTr5x3MFL/nm8oV73glyFZ4f4qzHUvV3G/pz/JVoTPokXsDATPkrR3MPbwy2UgCs9awYgaoJ5jBX3IDvQ7bQ==", "dev": true, "requires": { "debug": "^4.0.0", @@ -3815,36 +3776,61 @@ "dev": true }, "@ngtools/webpack": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.2.tgz", - "integrity": "sha512-RR18eMe4/k7y3KZ5Y3GTVQNOnJ8Jbe0Xs0q8IMNcGqldbUR878MmIl9PCc6J79stE/7WiNFQtq1L68RQi3i9/A==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.5.tgz", + "integrity": "sha512-xe0rGpme04MNRK/PpPOx8cza9k8F/XuAOmxC3Tk4dIgigqIzYsP6v6N/At8vPRDrf88X4ZyR94lL5RrUYf/KNQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", + "@angular-devkit/core": "9.0.5", "enhanced-resolve": "4.1.1", "rxjs": "6.5.3", "webpack-sources": "1.4.3" }, "dependencies": { - "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", "dev": true, "requires": { - "tslib": "^1.9.0" - } - } - } - }, - "@ngx-translate/core": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.1.tgz", - "integrity": "sha512-uikMmTog1XAKr5198qeTntVl3Don1Z6Gr0kfznOjbwq+732kpDFeNIRGF3DqH8Nj4zaWHPa/Z3E6K3vuWqq9UQ==", - "requires": { - "semantic-release": "^8.2.3" + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "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 + } } }, + "@ngx-translate/core": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.2.tgz", + "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==" + }, "@ngx-translate/http-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz", @@ -3949,13 +3935,13 @@ } }, "@schematics/update": { - "version": "0.900.2", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.2.tgz", - "integrity": "sha512-CRDb2pax8DtSyO32b2D5uKlQZ+s5h9feD4oEMvm2zU7z/4wcoTNC0T9ols20aHYeNhKYD9FuMI3KQWlgMTPgbw==", + "version": "0.900.5", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.5.tgz", + "integrity": "sha512-Nte+9DfQHQkrgqZPX1viccs6UXL+FDGHkTIB/KTisJAvC4s+o9hjKAoCldWBsPi9/p5rXPNZ+EWmXx7vSLGSNQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.2", - "@angular-devkit/schematics": "9.0.2", + "@angular-devkit/core": "9.0.5", + "@angular-devkit/schematics": "9.0.5", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^7.0.0", @@ -3965,6 +3951,28 @@ "semver-intersect": "1.4.0" }, "dependencies": { + "@angular-devkit/core": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", + "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "npm-package-arg": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", @@ -3999,94 +4007,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - } - } - }, - "@semantic-release/commit-analyzer": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.7.tgz", - "integrity": "sha512-bxCvvDsZeQp6Fvev8CdAV4pu9rEt8NOuLIFS0E8RLjKRnqQVL/fGAwpQWnRQ5hc08UZroguBNEENWpKBubWmKQ==", - "requires": { - "@semantic-release/error": "^2.0.0", - "conventional-changelog-angular": "^1.4.0", - "conventional-commits-parser": "^2.0.0", - "import-from": "^2.1.0", - "lodash": "^4.17.4", - "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=" - } - } - }, - "@semantic-release/condition-travis": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@semantic-release/condition-travis/-/condition-travis-6.2.1.tgz", - "integrity": "sha512-0g8O/OObhqjAotztjPjMJ43I6oX05z/Ffdu6HMsScDgLX1+QQzq5w0HnUxjmiXUGNwqi5M6s7BF65ZKHbGOytQ==", - "requires": { - "@semantic-release/error": "^2.0.0", - "github": "^12.0.0", - "parse-github-repo-url": "^1.4.1", - "semver": "^5.0.3", - "travis-deploy-once": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==" - }, - "@semantic-release/last-release-npm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/last-release-npm/-/last-release-npm-2.0.2.tgz", - "integrity": "sha512-ge5AWWtcrEd6GeG4tsv8gx774G9aPNrrornjBBqNDqN7Eg/xI914ftcnmSgnsbmKcqmq4g+QElIJhNMvsfpOkQ==", - "requires": { - "@semantic-release/error": "^2.0.0", - "npm-registry-client": "^8.4.0", - "npmlog": "^4.0.0" - } - }, - "@semantic-release/release-notes-generator": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-4.0.5.tgz", - "integrity": "sha512-LznqPnifl8jtQkV5ZXnQbqMLx9QROoX5d/FLteLyKy3AznLSubm5rH0LndKvf9ZI8XU8jwgLYu+wbLAEIR2PPg==", - "requires": { - "@semantic-release/error": "^2.0.0", - "conventional-changelog-angular": "^1.4.0", - "conventional-changelog-core": "^1.9.0", - "get-stream": "^3.0.0", - "import-from": "^2.1.0", - "lodash": "^4.17.4", - "pify": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "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 } } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" - }, "@tootallnate/once": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", @@ -4117,7 +4046,6 @@ "version": "5.0.40", "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz", "integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==", - "dev": true, "requires": { "@types/long": "*", "@types/node": "*" @@ -4174,9 +4102,9 @@ "dev": true }, "@types/jasmine": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.3.tgz", - "integrity": "sha512-LRJ21f/BO4QNZ3YDaMP0OEurOfE77x8mi8MfEnUsei5IKfmZL0GKl7juhABMdUIJHhVS9OCLotKHfsFNAuJ+DA==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.7.tgz", + "integrity": "sha512-HoPp5ZafWFXr36yRUOJNuRbvFNklxvN+I9JXfAaZTHBiEw4ZkN4FBnjbV4YHRNNG433ypHP2K+lOeQyRdyuGxQ==", "dev": true }, "@types/jasminewd2": { @@ -4197,8 +4125,7 @@ "@types/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==", - "dev": true + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/mime-types": { "version": "2.1.0", @@ -4213,10 +4140,9 @@ "dev": true }, "@types/node": { - "version": "13.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz", - "integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==", - "dev": true + "version": "13.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.7.tgz", + "integrity": "sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg==" }, "@types/node-forge": { "version": "0.9.2", @@ -4605,6 +4531,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -4626,9 +4553,9 @@ } }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-node": { @@ -4672,6 +4599,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, "requires": { "es6-promisify": "^5.0.0" } @@ -4774,12 +4702,12 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.11.0" } }, "ansi-html": { @@ -4835,16 +4763,8 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "arg": { "version": "4.1.2", @@ -4946,11 +4866,6 @@ "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -4992,7 +4907,8 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, "asap": { "version": "2.0.6", @@ -5004,6 +4920,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -5049,7 +4966,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -5057,12 +4975,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", - "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==", - "dev": true - }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -5133,12 +5045,14 @@ "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=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true }, "axios": { "version": "0.18.1", @@ -5293,6 +5207,7 @@ "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" } @@ -5696,7 +5611,8 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", @@ -5732,7 +5648,8 @@ "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true }, "bytebuffer": { "version": "5.0.1", @@ -5774,24 +5691,6 @@ "unique-filename": "^1.1.1" }, "dependencies": { - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", @@ -5800,12 +5699,6 @@ "requires": { "aggregate-error": "^3.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 } } }, @@ -5826,65 +5719,6 @@ "unset-value": "^1.0.0" } }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "requires": { - "is-plain-obj": "^1.0.0" - } - } - } - }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -5926,23 +5760,6 @@ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } - } - }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -5970,7 +5787,8 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", @@ -6276,20 +6094,6 @@ "shallow-clone": "^3.0.0" } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", @@ -6423,7 +6227,8 @@ "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==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "commondir": { "version": "1.0.1", @@ -6522,6 +6327,7 @@ "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", @@ -6529,15 +6335,6 @@ "typedarray": "^0.0.6" } }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -6573,11 +6370,6 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -6607,396 +6399,71 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, - "conventional-changelog-angular": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", - "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { - "compare-func": "^1.3.1", - "q": "^1.5.1" + "safe-buffer": "~5.1.1" }, "dependencies": { - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "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==" } } }, - "conventional-changelog-core": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.5.tgz", - "integrity": "sha1-XbdWba18DLddr0f7spdve/mSjB0=", - "requires": { - "conventional-changelog-writer": "^2.0.3", - "conventional-commits-parser": "^2.1.0", - "dateformat": "^1.0.12", - "get-pkg-repo": "^1.0.0", - "git-raw-commits": "^1.3.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^1.2.3", - "lodash": "^4.0.0", - "normalize-package-data": "^2.3.5", - "q": "^1.4.1", - "read-pkg": "^1.1.0", - "read-pkg-up": "^1.0.1", - "through2": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "conventional-changelog-writer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-2.0.3.tgz", - "integrity": "sha512-2E1h7UXL0fhRO5h0CxDZ5EBc5sfBZEQePvuZ+gPvApiRrICUyNDy/NQIP+2TBd4wKZQf2Zm7TxbzXHG5HkPIbA==", - "requires": { - "compare-func": "^1.3.1", - "conventional-commits-filter": "^1.1.1", - "dateformat": "^1.0.11", - "handlebars": "^4.0.2", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.0.0", - "meow": "^3.3.0", - "semver": "^5.0.1", - "split": "^1.0.0", - "through2": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^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=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "^4.0.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - } - } - }, - "conventional-commits-filter": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz", - "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==", - "requires": { - "is-subset": "^0.1.1", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", - "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0", - "trim-off-newlines": "^1.0.0" - }, - "dependencies": { - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "requires": { - "through2": "^2.0.2" - } - } - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "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==" - } - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "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 - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "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.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", - "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": "^2.1.2", - "webpack-log": "^2.0.0" + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "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.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "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": "^2.1.2", + "webpack-log": "^2.0.0" }, "dependencies": { "cacache": { @@ -7322,7 +6789,8 @@ "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=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "5.2.1", @@ -7657,14 +7125,6 @@ "css-tree": "1.0.0-alpha.37" } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "^1.0.1" - } - }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -7683,28 +7143,15 @@ "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", "dev": true }, - "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, "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" } }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", - "dev": true - }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", @@ -7717,171 +7164,15 @@ "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", "dev": true }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^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=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "^4.0.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - } - } - }, - "dayjs": { - "version": "1.8.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.20.tgz", - "integrity": "sha512-mH0MCDxw6UCGJYxVN78h8ugWycZAO8thkj3bW6vApL5tS0hQplIDdAQcmbvl7n35H0AKdCJQaArTrIQw2xt4Qg==" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dayjs": { + "version": "1.8.21", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.21.tgz", + "integrity": "sha512-1kbWK0hziklUHkGgiKr7xm59KwAg/K3Tp7H/8X+f58DnNCwY3pKYjOCJpIlVs125FRBukGVZdKZojC073D0IeQ==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -7897,34 +7188,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - } - } - }, "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=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, "dedent": { "version": "0.7.0", @@ -7945,12 +7213,6 @@ "regexp.prototype.flags": "^1.2.0" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -8046,25 +7308,6 @@ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "dev": true, - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, "del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -8108,11 +7351,6 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -8299,11 +7537,6 @@ "is-obj": "^1.0.0" } }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" - }, "drbg.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", @@ -8314,20 +7547,6 @@ "create-hmac": "^1.1.4" } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -8344,6 +7563,7 @@ "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" @@ -8588,6 +7808,7 @@ "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" } @@ -8622,7 +7843,8 @@ "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true }, "es6-promise-plugin": { "version": "4.2.2", @@ -8633,6 +7855,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -8648,19 +7871,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -8867,7 +8077,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -8992,7 +8203,8 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-copy": { "version": "2.0.4", @@ -9055,16 +8267,10 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, - "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 - }, "fast-memoize": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.1.tgz", - "integrity": "sha512-xdmw296PCL01tMOXx9mdJSmWY29jQgxyuZdq0rEHMu+Tpe1eOEtCycoG6chzlcrWsNgpZP7oL8RiQr7+G6Bl6g==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" }, "fast-sort": { "version": "1.6.0", @@ -9111,9 +8317,9 @@ "dev": true }, "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "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" @@ -9317,15 +8523,11 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.5.1", @@ -9337,12 +8539,6 @@ "mime-types": "^2.1.12" } }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -9368,6 +8564,7 @@ "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" @@ -9384,12 +8581,12 @@ } }, "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "minipass": "^2.6.0" + "minipass": "^3.0.0" } }, "fs-write-stream-atomic": { @@ -9416,82 +8613,11 @@ "dev": true, "optional": true }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "dev": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, "genfun": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", @@ -9515,175 +8641,6 @@ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, - "get-pkg-repo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", - "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", - "requires": { - "hosted-git-info": "^2.1.4", - "meow": "^3.3.0", - "normalize-package-data": "^2.3.0", - "parse-github-repo-url": "^1.3.0", - "through2": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^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=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "^4.0.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - } - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -9692,31 +8649,6 @@ "pump": "^3.0.0" } }, - "get-uri": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", - "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", - "dev": true, - "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "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" - } - } - } - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -9727,118 +8659,11 @@ "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" } }, - "git-head": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/git-head/-/git-head-1.20.1.tgz", - "integrity": "sha1-A20WpLN0lJ5OPa8VgnkDaG08zVI=", - "requires": { - "git-refs": "^1.1.3" - } - }, - "git-raw-commits": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", - "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", - "requires": { - "dargs": "^4.0.1", - "lodash.template": "^4.0.2", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0" - }, - "dependencies": { - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "requires": { - "through2": "^2.0.2" - } - } - } - }, - "git-refs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/git-refs/-/git-refs-1.1.3.tgz", - "integrity": "sha1-gwl8s6klhcSkkm7FTiGC354g6J0=", - "requires": { - "path-object": "^2.3.0", - "slash": "^1.0.0", - "walk": "^2.3.9" - } - }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "requires": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "git-semver-tags": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz", - "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==", - "requires": { - "meow": "^4.0.0", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "requires": { - "ini": "^1.3.2" - } - }, - "github": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/github/-/github-12.1.0.tgz", - "integrity": "sha512-HhWjhd/OATC4Hjj7xfGjGRtwWzo/fzTc55EkvsRatI9G6Vp47mVcdBIt1lQ56A9Qit/yVQRX1+M9jbWlcJvgug==", - "requires": { - "dotenv": "^4.0.0", - "follow-redirects": "1.2.6", - "https-proxy-agent": "^2.1.0", - "lodash": "^4.17.4", - "mime": "^2.0.3", - "netrc": "^0.1.4" - }, - "dependencies": { - "follow-redirects": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.6.tgz", - "integrity": "sha512-FrMqZ/FONtHnbqO651UPpfRUVukIEwJhXMfdr/JWAmrDbeYBu773b1J6gdWDyRIj4hvvzQEHoEOTrdR8o6KLYA==", - "requires": { - "debug": "^3.1.0" - } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" - } - } - }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -9910,42 +8735,6 @@ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, "graceful-fs": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", @@ -9966,6 +8755,7 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -9976,12 +8766,14 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -10032,29 +8824,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -10148,9 +8922,9 @@ } }, "hosted-git-info": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz", - "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", "dev": true, "requires": { "lru-cache": "^5.1.1" @@ -10228,7 +9002,8 @@ "http-cache-semantics": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true }, "http-deceiver": { "version": "1.2.7", @@ -10300,6 +9075,7 @@ "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", @@ -10316,6 +9092,7 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, "requires": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -10573,6 +9350,7 @@ "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" } @@ -10596,7 +9374,8 @@ "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true }, "indexes-of": { "version": "1.0.1", @@ -10633,338 +9412,34 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "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 - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.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" - }, - "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 - } - } - } - } - }, - "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" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - }, - "dependencies": { - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - } - } - }, - "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" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true }, - "ionic": { - "version": "5.4.16", - "resolved": "https://registry.npmjs.org/ionic/-/ionic-5.4.16.tgz", - "integrity": "sha512-MlHmcctGxxUdvjKJGDUQOZEJMMTrZk3ZtC0tkMUy/im53c0giZrKQtkBKXOLK6uYXBnhlOXn0jrs97PnfNadyg==", - "dev": true, - "requires": { - "@ionic/cli-framework": "3.0.6", - "@ionic/cli-framework-prompts": "1.0.4", - "@ionic/discover": "2.0.8", - "@ionic/utils-array": "1.2.2", - "@ionic/utils-fs": "2.0.9", - "@ionic/utils-network": "1.0.6", - "@ionic/utils-process": "1.0.9", - "@ionic/utils-stream": "2.0.5", - "@ionic/utils-subprocess": "1.0.13", - "@ionic/utils-terminal": "1.1.2", - "chalk": "^3.0.0", - "debug": "^4.0.0", - "diff": "^4.0.1", - "elementtree": "^0.1.7", - "leek": "0.0.24", - "lodash": "^4.17.5", - "open": "^7.0.0", - "os-name": "^3.1.0", - "semver": "^6.0.0", - "split2": "^3.0.0", - "ssh-config": "^1.1.1", - "stream-combiner2": "^1.1.1", - "superagent": "^4.1.0", - "superagent-proxy": "^2.0.0", - "tar": "^4.3.0", - "through2": "^3.0.0", - "tslib": "^1.9.0", - "uuid": "^3.2.1" - }, - "dependencies": { - "@ionic/cli-framework": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-3.0.6.tgz", - "integrity": "sha512-Z4guoGhkoVfXhwC//Wzqkq6aBO9dEvp0NqN8ZYF8fOUDO0bi0GI5gaUvultK8i74rIKntwcS4xDRQLuRdn8UUA==", - "dev": true, - "requires": { - "@ionic/utils-array": "1.2.2", - "@ionic/utils-fs": "2.0.9", - "@ionic/utils-object": "1.0.6", - "@ionic/utils-process": "1.0.9", - "@ionic/utils-stream": "2.0.5", - "@ionic/utils-subprocess": "1.0.13", - "@ionic/utils-terminal": "1.1.2", - "chalk": "^3.0.0", - "debug": "^4.0.0", - "lodash": "^4.17.5", - "log-update": "^3.2.0", - "minimist": "^1.2.0", - "rimraf": "^3.0.0", - "slice-ansi": "^3.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "tslib": "^1.9.0", - "untildify": "^4.0.0", - "wrap-ansi": "^6.0.0", - "write-file-atomic": "^3.0.0" - } - }, - "@ionic/utils-array": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-1.2.2.tgz", - "integrity": "sha512-t9FkPHw1OfWkbGobvr2z5bMfpQT3WE/LEFGLraNFiygtOrS3JQnjmqgUHQXk+WVf9RAt5pMUKcmNRCd+AUCvwQ==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "tslib": "^1.9.0" - } - }, - "@ionic/utils-fs": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-2.0.9.tgz", - "integrity": "sha512-koOcdQlMHLIncPVZYQ+GkBHFhu7CJd0PdzDf9EfQBpOZwY66muS7UAlzVtoeY6tURYYniJlQsmg3auTIgVy9bQ==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "fs-extra": "^8.0.1", - "through2": "^3.0.0", - "tslib": "^1.9.0" - } - }, - "@ionic/utils-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-1.0.6.tgz", - "integrity": "sha512-3defzcaHsdZQgQMKIDMki4Klp9hDKVbRfDCet6f6Xpmd8ycgIgW4wBbtcJRkasps2KJYJLs810mvI/1szOYrSA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "tslib": "^1.9.0" - } - }, - "@ionic/utils-process": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-1.0.9.tgz", - "integrity": "sha512-52SejUFhEDpE5wvlsBLv5a4oxmEUXPZgTtrx3I1yIdd+5jyYuT9XVxM2uzrRMq//X7EgqvSlnnpvTObpTFV4Bw==", - "dev": true, - "requires": { - "@ionic/utils-object": "1.0.6", - "@ionic/utils-terminal": "1.1.2", - "debug": "^4.0.0", - "lodash": "^4.17.5", - "tree-kill": "^1.2.2", - "tslib": "^1.9.0" - } - }, - "@ionic/utils-stream": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-2.0.5.tgz", - "integrity": "sha512-GOjEsgEyFTpX5Y6MpDDograU7PgPcclKvrhe1Lhft7VSg6RzeEzmZykzkDK89visw2Qb45G0gfyOuxLlq+WetA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "tslib": "^1.9.0" - } - }, - "@ionic/utils-subprocess": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-1.0.13.tgz", - "integrity": "sha512-k7OdoJdwkdf5q2WhZDuiLR/p153vJZBlCSfj5iRfuD9bWEzJRD1uufLMT3DFSVIDLHKZt7ni1ViswWeZ1qfMpQ==", - "dev": true, - "requires": { - "@ionic/utils-array": "1.2.2", - "@ionic/utils-fs": "2.0.9", - "@ionic/utils-process": "1.0.9", - "@ionic/utils-stream": "2.0.5", - "@ionic/utils-terminal": "1.1.2", - "cross-spawn": "^7.0.0", - "debug": "^4.0.0", - "tslib": "^1.9.0" - } - }, - "@ionic/utils-terminal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-1.1.2.tgz", - "integrity": "sha512-ODXbta2kvFNkMIEGwl7KX5gJTcZZHkzSLoBh3wND2H+EsG0KpIqOZKWMtkj+suuPut85wyLZ7fGfARnrNf7dtA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "tslib": "^1.9.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "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" - } - }, - "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==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "inquirer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "is-fullwidth-code-point": { @@ -10973,64 +9448,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true - }, - "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 - }, - "open": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.2.tgz", - "integrity": "sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "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 - }, - "rimraf": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", - "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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 - }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -11040,63 +9457,67 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", - "dev": true, - "requires": { - "readable-stream": "2 || 3" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "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" - } - }, - "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==", + "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-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^4.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 + } } } } }, + "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" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "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" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, "ionicons": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.0.tgz", @@ -11186,7 +9607,8 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-binary-path": { "version": "2.1.0", @@ -11277,12 +9699,6 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "is-docker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", - "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", - "dev": true - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -11295,11 +9711,6 @@ "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==" - }, "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", @@ -11331,11 +9742,6 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, "is-observable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", @@ -11380,7 +9786,8 @@ "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=" + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true }, "is-plain-object": { "version": "2.0.4", @@ -11417,21 +9824,11 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=" - }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -11449,29 +9846,17 @@ "has-symbols": "^1.0.0" } }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "requires": { - "text-extensions": "^1.0.0" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -11487,7 +9872,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isbinaryfile": { "version": "3.0.3", @@ -11512,7 +9898,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "istanbul-api": { "version": "2.1.6", @@ -11677,15 +10064,6 @@ "handlebars": "^4.1.2" } }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, "jasmine": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", @@ -11771,27 +10149,25 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "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==" }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "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==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -11801,7 +10177,8 @@ "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=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.3", @@ -11829,12 +10206,14 @@ "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -12006,14 +10385,6 @@ "source-map-support": "^0.5.5" } }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "requires": { - "json-buffer": "3.0.0" - } - }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -12034,28 +10405,6 @@ "invert-kv": "^2.0.0" } }, - "leek": { - "version": "0.0.24", - "resolved": "https://registry.npmjs.org/leek/-/leek-0.0.24.tgz", - "integrity": "sha1-5ADlfw5g2O8r1NBo3EKKVDRdvNo=", - "dev": true, - "requires": { - "debug": "^2.1.0", - "lodash.assign": "^3.2.0", - "rsvp": "^3.0.21" - }, - "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" - } - } - } - }, "less": { "version": "3.10.3", "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", @@ -12084,16 +10433,6 @@ "pify": "^4.0.1" } }, - "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" - } - }, "license-webpack-plugin": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", @@ -12120,9 +10459,9 @@ "dev": true }, "lint-staged": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.7.tgz", - "integrity": "sha512-Byj0F4l7GYUpYYHEqyFH69NiI6ICTg0CeCKbhRorL+ickbzILKUlZLiyCkljZV02wnoh7yH7PmFyYm9PRNwk9g==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.8.tgz", + "integrity": "sha512-Oa9eS4DJqvQMVdywXfEor6F4vP+21fPHF8LUXgBbVWUSWBddjqsvO6Bv1LwMChmgQZZqwUvgJSHlu8HFHAPZmA==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -12564,36 +10903,18 @@ "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" - } - } - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^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=" + "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" + } } } }, @@ -12659,60 +10980,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "requires": { - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash.restparam": "^3.0.0" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._createassigner": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -12724,37 +10991,12 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "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.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" - }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", @@ -12765,23 +11007,6 @@ "resolved": "https://registry.npmjs.org/lodash.sumby/-/lodash.sumby-4.6.0.tgz", "integrity": "sha1-fYdzfdshbaL35efNLdnEA6eIc0Y=" }, - "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==", - "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==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, "lodash.toarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", @@ -12804,97 +11029,83 @@ } }, "log-update": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz", - "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", - "cli-cursor": "^2.1.0", - "wrap-ansi": "^5.0.0" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "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=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "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 - }, - "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": { + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "color-name": "~1.1.4" } }, - "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" - } + "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==", + "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 }, "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==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.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==", + "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": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } @@ -12949,20 +11160,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -12972,16 +11169,10 @@ "yallist": "^3.0.2" } }, - "macos-release": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", - "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", - "dev": true - }, "magic-string": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", - "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz", + "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -13084,11 +11275,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -13140,22 +11326,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -13334,11 +11504,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, "mini-css-extract-plugin": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", @@ -13388,23 +11553,21 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "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 + } } }, "minipass-collect": { @@ -13414,23 +11577,6 @@ "dev": true, "requires": { "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.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 - } } }, "minipass-flush": { @@ -13440,23 +11586,6 @@ "dev": true, "requires": { "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.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 - } } }, "minipass-pipeline": { @@ -13466,23 +11595,6 @@ "dev": true, "requires": { "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.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 - } } }, "minizlib": { @@ -13492,6 +11604,18 @@ "dev": true, "requires": { "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } } }, "mississippi": { @@ -13537,6 +11661,7 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" }, @@ -13544,24 +11669,20 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true } } }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" - }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "moment-timezone": { - "version": "0.5.27", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", - "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", + "version": "0.5.28", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz", + "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", "requires": { "moment": ">= 2.9.0" } @@ -13640,24 +11761,9 @@ "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=" - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, - "netrc": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" - }, "ng-lint-staged": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ng-lint-staged/-/ng-lint-staged-0.1.6.tgz", @@ -13787,6 +11893,7 @@ "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", @@ -13797,12 +11904,14 @@ "hosted-git-info": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -13849,6 +11958,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, "requires": { "hosted-git-info": "^2.7.1", "osenv": "^0.1.5", @@ -13859,12 +11969,14 @@ "hosted-git-info": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -13885,55 +11997,16 @@ "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "npm-registry-client": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", - "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", - "requires": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" }, "dependencies": { - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "requires": { - "safe-buffer": "^5.1.1" - } + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -13960,57 +12033,6 @@ "path-key": "^2.0.0" } }, - "npmconf": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz", - "integrity": "sha512-iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA==", - "requires": { - "config-chain": "~1.1.8", - "inherits": "~2.0.0", - "ini": "^1.2.0", - "mkdirp": "^0.5.0", - "nopt": "~3.0.1", - "once": "~1.3.0", - "osenv": "^0.1.0", - "safe-buffer": "^5.1.1", - "semver": "2 || 3 || 4", - "uid-number": "0.0.5" - }, - "dependencies": { - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" - } - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -14034,12 +12056,14 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "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=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-component": { "version": "0.0.3", @@ -14392,6 +12416,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" @@ -14400,24 +12425,11 @@ "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "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": "4.0.2", "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", @@ -14480,16 +12492,6 @@ "mem": "^4.0.0" } }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "dev": true, - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -14504,11 +12506,6 @@ "os-tmpdir": "^1.0.0" } }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" - }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -14546,11 +12543,6 @@ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" - }, "p-retry": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", @@ -14560,95 +12552,11 @@ "retry": "^0.12.0" } }, - "p-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-series/-/p-series-1.1.0.tgz", - "integrity": "sha512-356covArc9UCfj2twY/sxCJKGMzzO+pJJtucizsPC6aS1xKSTBc9PQrQhvFR3+7F+fa2KBKdJjdIcv6NEWDcIQ==", - "requires": { - "@sindresorhus/is": "^0.7.0", - "p-reduce": "^1.0.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "requires": { - "p-finally": "^1.0.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==" }, - "pac-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", - "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", - "dev": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^4.1.1", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", - "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "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 - } - } - }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "dev": true, - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, "pacote": { "version": "9.5.8", "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz", @@ -14709,6 +12617,16 @@ "y18n": "^4.0.0" } }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -14774,15 +12692,11 @@ "safe-buffer": "^5.1.1" } }, - "parse-github-repo-url": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", - "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=" - }, "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" @@ -14857,15 +12771,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "path-object": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/path-object/-/path-object-2.3.0.tgz", - "integrity": "sha1-A+RmU+XDdcYK8cq92UvGRIpdkRA=", - "requires": { - "core-util-is": "^1.0.1", - "lodash.assign": "^3.0.0" - } - }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -14881,6 +12786,7 @@ "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" }, @@ -14888,7 +12794,8 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, @@ -14913,7 +12820,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "picomatch": { "version": "2.1.1", @@ -14930,12 +12838,14 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "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" } @@ -15038,32 +12948,40 @@ } }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", "dev": true, "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" }, "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "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": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "has-flag": "^3.0.0" } } } @@ -15586,12 +13504,6 @@ "array-find": "^1.0.0" } }, - "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", @@ -15625,7 +13537,8 @@ "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==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", @@ -15675,11 +13588,6 @@ "string.prototype.codepointat": "^0.2.0" } }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, "protoduck": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", @@ -15848,60 +13756,6 @@ "ipaddr.js": "1.9.0" } }, - "proxy-agent": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", - "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", - "dev": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "4", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^3.0.1", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", - "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "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 - } - } - }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -15917,12 +13771,14 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "psl": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true }, "public-encrypt": { "version": "4.0.3", @@ -16071,7 +13927,8 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "4.3.4", @@ -16101,11 +13958,6 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -16213,69 +14065,11 @@ "util-promisify": "^2.1.0" } }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - } - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -16289,7 +14083,8 @@ "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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -16322,15 +14117,6 @@ "resolve": "^1.1.6" } }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, "reduce-css-calc": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz", @@ -16368,12 +14154,13 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.2.tgz", + "integrity": "sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==", "dev": true, "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" } }, "regex-not": { @@ -16530,18 +14317,11 @@ "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=", - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -16569,6 +14349,7 @@ "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", @@ -16578,7 +14359,8 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -16593,11 +14375,6 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=" - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -16624,21 +14401,14 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + "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 - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true }, "restore-cursor": { "version": "3.1.0", @@ -16723,16 +14493,10 @@ "acorn": "^7.1.0" } }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "dev": true, "requires": { "is-promise": "^2.1.0" @@ -16783,7 +14547,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sass": { "version": "1.23.3", @@ -16917,92 +14682,6 @@ } } }, - "semantic-release": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-8.2.3.tgz", - "integrity": "sha512-L0EKspX5xaPKhrrZWwbdlydwk+uXQG+SadYlaQjYQJjaBSfptd+jL6FRu3LspZoLxvKF8yQWe4sYAySHcp69aw==", - "requires": { - "@semantic-release/commit-analyzer": "^3.0.1", - "@semantic-release/condition-travis": "^6.0.0", - "@semantic-release/error": "^2.0.0", - "@semantic-release/last-release-npm": "^2.0.0", - "@semantic-release/release-notes-generator": "^4.0.0", - "execa": "^0.8.0", - "fs-extra": "^4.0.2", - "git-head": "^1.2.1", - "github": "^12.0.0", - "lodash": "^4.0.0", - "nerf-dart": "^1.0.0", - "nopt": "^4.0.0", - "normalize-package-data": "^2.3.4", - "npmconf": "^2.1.2", - "npmlog": "^4.0.0", - "p-series": "^1.0.0", - "parse-github-repo-url": "^1.3.0", - "require-relative": "^0.8.7", - "semver": "^5.4.1" - }, - "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=", - "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=", - "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" - } - }, - "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==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "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==", - "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==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - }, "semver": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", @@ -17311,12 +14990,13 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true }, "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -17357,11 +15037,6 @@ } } }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", @@ -17678,7 +15353,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-loader": { "version": "0.2.4", @@ -17729,6 +15405,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -17737,12 +15414,14 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -17751,7 +15430,8 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true }, "spdy": { "version": "4.0.1", @@ -17834,14 +15514,6 @@ "chalk": "^2.0.1" } }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -17851,44 +15523,17 @@ "extend-shallow": "^3.0.0" } }, - "split2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.1.1.tgz", - "integrity": "sha512-emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q==", - "dev": true, - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "ssh-config": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-1.1.6.tgz", - "integrity": "sha512-ZPO9rECxzs5JIQ6G/2EfL1I9ho/BVZkx9HRKn8+0af7QgwAmumQ7XBFP1ggMyPMo+/tUbmv0HFdv4qifdO/9JA==", - "dev": true - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -17909,23 +15554,6 @@ "requires": { "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" - }, - "dependencies": { - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.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 - } } }, "stable": { @@ -17976,16 +15604,6 @@ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=" }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -18068,7 +15686,8 @@ "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=" + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true }, "string-argv": { "version": "0.3.1", @@ -18142,6 +15761,7 @@ "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" }, @@ -18149,7 +15769,8 @@ "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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -18188,11 +15809,6 @@ "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=" - }, "stubs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", @@ -18301,73 +15917,6 @@ "when": "~3.6.x" } }, - "superagent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-4.1.0.tgz", - "integrity": "sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.0", - "form-data": "^2.3.3", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^2.4.0", - "qs": "^6.6.0", - "readable-stream": "^3.0.6" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - }, - "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 - }, - "qs": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", - "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", - "dev": true - }, - "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "superagent-proxy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-2.0.0.tgz", - "integrity": "sha512-TktJma5jPdiH1BNN+reF/RMW3b8aBTCV7KlLFV0uYcREgNf3pvo7Rdt564OcFHwkGb3mYEhHuWPBhSbOwiNaYw==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "proxy-agent": "3" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -18546,6 +16095,27 @@ "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", "yallist": "^3.0.3" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } } }, "teeny-request": { @@ -18651,13 +16221,13 @@ }, "dependencies": { "find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz", + "integrity": "sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^3.0.0", + "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" } }, @@ -18765,11 +16335,6 @@ } } }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -18779,28 +16344,18 @@ "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" } }, - "thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", - "dev": true - }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -18925,6 +16480,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -18933,39 +16489,8 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "travis-deploy-once": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/travis-deploy-once/-/travis-deploy-once-3.3.0.tgz", - "integrity": "sha512-N0l+sdYHMQbJmQWfjmxkKRJrMWJ+52Ve1dhGDiPhGXFiWO0A0zSeTxiFujz0rSOLOl9OhsZ9EMlJh2lNrgGugA==", - "requires": { - "chalk": "^2.1.0", - "got": "^8.0.1", - "p-retry": "^1.0.0", - "semver": "^5.4.1", - "url-join": "^2.0.2" - }, - "dependencies": { - "p-retry": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-1.0.0.tgz", - "integrity": "sha1-OSczKkt9cCabU1UVEX/FR9oaaWg=", - "requires": { - "retry": "^0.10.0" - } - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true } } }, @@ -18975,16 +16500,6 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=" - }, "ts-node": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz", @@ -18999,9 +16514,9 @@ } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" }, "tslint": { "version": "6.0.0", @@ -19057,6 +16572,7 @@ "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" } @@ -19064,21 +16580,13 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "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" - } + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true }, "type-is": { @@ -19094,7 +16602,8 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", @@ -19120,17 +16629,13 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", + "dev": true, "optional": true, "requires": { "commander": "~2.20.3", "source-map": "~0.6.1" } }, - "uid-number": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", - "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=" - }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -19337,11 +16842,6 @@ } } }, - "url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" - }, "url-parse": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", @@ -19352,26 +16852,6 @@ "requires-port": "^1.0.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - } - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, "urlgrey": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", @@ -19432,7 +16912,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util-promisify": { "version": "2.1.0", @@ -19541,14 +17022,15 @@ "dev": true }, "uuid": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.1.tgz", - "integrity": "sha512-yqjRXZzSJm9Dbl84H2VDHpM3zMjzSJQ+hn6C4zqd5ilW+7P4ZmLEEqwho9LjP+tGuZlF4xrHQXT0h9QZUS/pWA==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==" }, "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" @@ -19558,6 +17040,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, "requires": { "builtins": "^1.0.3" } @@ -19578,6 +17061,7 @@ "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", @@ -19596,14 +17080,6 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, - "walk": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz", - "integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==", - "requires": { - "foreachasync": "^3.0.0" - } - }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -21362,14 +18838,6 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "wif": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", @@ -21378,25 +18846,11 @@ "bs58check": "<3.0.0" } }, - "windows-release": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", - "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", - "dev": true, - "requires": { - "execa": "^1.0.0" - } - }, - "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 - }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true }, "worker-farm": { "version": "1.7.0", @@ -21451,9 +18905,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", - "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -21527,16 +18981,11 @@ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", "dev": true }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "y18n": { "version": "4.0.0", diff --git a/package.json b/package.json index 17402e8f7..e0fc786ee 100644 --- a/package.json +++ b/package.json @@ -21,31 +21,31 @@ }, "private": true, "dependencies": { - "@angular/common": "~9.0.1", - "@angular/compiler": "~9.0.1", - "@angular/core": "~9.0.1", - "@angular/forms": "~9.0.1", - "@angular/localize": "^9.0.1", - "@angular/platform-browser": "~9.0.1", - "@angular/platform-browser-dynamic": "~9.0.1", - "@angular/router": "~9.0.1", - "@arkecosystem/crypto": "^2.6.1", - "@ionic-native/background-mode": "^5.21.5", - "@ionic-native/clipboard": "^5.21.5", - "@ionic-native/core": "^5.21.5", - "@ionic-native/in-app-browser": "^5.21.5", - "@ionic-native/keyboard": "^5.21.5", - "@ionic-native/local-notifications": "^5.21.5", - "@ionic-native/network": "^5.21.5", - "@ionic-native/qr-scanner": "^5.21.5", - "@ionic-native/screen-orientation": "^5.21.5", - "@ionic-native/social-sharing": "^5.21.5", - "@ionic-native/splash-screen": "^5.21.5", - "@ionic-native/status-bar": "^5.21.5", - "@ionic-native/vibration": "^5.21.5", - "@ionic/angular": "^5.0.0", + "@angular/common": "~9.0.5", + "@angular/compiler": "~9.0.5", + "@angular/core": "~9.0.5", + "@angular/forms": "~9.0.5", + "@angular/localize": "^9.0.5", + "@angular/platform-browser": "~9.0.5", + "@angular/platform-browser-dynamic": "~9.0.5", + "@angular/router": "~9.0.5", + "@arkecosystem/crypto": "^2.6.24", + "@ionic-native/background-mode": "^5.22.0", + "@ionic-native/clipboard": "^5.22.0", + "@ionic-native/core": "^5.22.0", + "@ionic-native/in-app-browser": "^5.22.0", + "@ionic-native/keyboard": "^5.22.0", + "@ionic-native/local-notifications": "^5.22.0", + "@ionic-native/network": "^5.22.0", + "@ionic-native/qr-scanner": "^5.22.0", + "@ionic-native/screen-orientation": "^5.22.0", + "@ionic-native/social-sharing": "^5.22.0", + "@ionic-native/splash-screen": "^5.22.0", + "@ionic-native/status-bar": "^5.22.0", + "@ionic-native/vibration": "^5.22.0", + "@ionic/angular": "^5.0.4", "@ionic/storage": "^2.2.0", - "@ngx-translate/core": "^12.1.1", + "@ngx-translate/core": "^12.1.2", "@ngx-translate/http-loader": "^4.0.0", "angular-html-parser": "^1.4.0", "angular2-qrcode": "^2.0.3", @@ -80,7 +80,7 @@ "is-url": "^1.2.4", "lodash": "^4.17.15", "moment": "^2.24.0", - "moment-timezone": "^0.5.27", + "moment-timezone": "^0.5.28", "ng2-charts": "^2.3.0", "ngx-filter-pipe": "^2.1.2", "node-forge": "^0.9.1", @@ -88,33 +88,32 @@ "rxjs-compat": "^6.5.4", "semver": "^7.1.3", "string-hash": "^1.1.3", - "tslib": "^1.10.0", - "uuid": "^7.0.0", + "tslib": "^1.11.1", + "uuid": "^7.0.2", "zone.js": "~0.10.2" }, "devDependencies": { "@angular-builders/custom-webpack": "^9.0.0", - "@angular-devkit/architect": "~0.900.2", - "@angular-devkit/build-angular": "~0.900.2", - "@angular/cli": "^9.0.2", - "@angular/compiler-cli": "~9.0.1", - "@angular/language-service": "~9.0.1", + "@angular-devkit/architect": "~0.900.5", + "@angular-devkit/build-angular": "~0.900.5", + "@angular/cli": "^9.0.5", + "@angular/compiler-cli": "~9.0.5", + "@angular/language-service": "~9.0.5", "@ionic/angular-toolkit": "^2.2.0", - "@ionic/lab": "^3.1.0", + "@ionic/lab": "^3.1.1", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", "@types/bytebuffer": "^5.0.40", "@types/is-url": "^1.2.28", - "@types/jasmine": "~3.5.3", + "@types/jasmine": "~3.5.7", "@types/jasminewd2": "~2.0.8", "@types/lodash": "^4.14.149", - "@types/node": "^13.7.1", + "@types/node": "^13.7.7", "@types/node-forge": "^0.9.2", "@types/semver": "^7.1.0", "codecov": "^3.6.5", "codelyzer": "^5.2.1", "husky": "^4.2.3", - "ionic": "^5.4.16", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~4.4.1", @@ -123,7 +122,7 @@ "karma-jasmine": "~3.1.1", "karma-jasmine-html-reporter": "^1.5.2", "karma-sabarivka-reporter": "^3.0.2", - "lint-staged": "^10.0.7", + "lint-staged": "^10.0.8", "ng-lint-staged": "^0.1.6", "postcss-import": "^12.0.1", "postcss-loader": "^3.0.0", From 4c0c3ff96df370517bd130525e57ac2f6fe03020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 5 Mar 2020 13:07:42 -0300 Subject: [PATCH 19/46] chore: setup ionic appflow sdk (#514) --- ionic.config.json | 2 +- package-lock.json | 11 +++++++++-- package.json | 11 ++++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ionic.config.json b/ionic.config.json index adb75d3ff..019d2bb99 100644 --- a/ionic.config.json +++ b/ionic.config.json @@ -4,5 +4,5 @@ "cordova": {} }, "type": "angular", - "id": "4beef805" + "id": "efb289f2" } diff --git a/package-lock.json b/package-lock.json index fb99431fd..552079aa1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6696,6 +6696,14 @@ "resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-3.2.0.tgz", "integrity": "sha512-tYsK0H9M8POmJTVnfyIsiRgoOxnypa9IQIbf/Hsgi7vbgUYRHtBUfvXwq4RhMqLIVrCeJLXF2hTXTDNY0a/eTA==" }, + "cordova-plugin-ionic": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic/-/cordova-plugin-ionic-5.4.6.tgz", + "integrity": "sha512-70G3Da0fOHpGkv1ezNe9Al/DqPEm+CfM2HBcVwX1wT0G1QgIy0hZLkgWn0E2tqOffICMtRPae/kOv+ayXlu0rg==", + "requires": { + "typescript": "^3.5.3" + } + }, "cordova-plugin-ionic-keyboard": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz", @@ -16622,8 +16630,7 @@ "typescript": { "version": "3.7.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", - "dev": true + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==" }, "uglify-js": { "version": "3.7.2", diff --git a/package.json b/package.json index e0fc786ee..b49d813a9 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "cordova-plugin-add-swift-support": "^2.0.2", "cordova-plugin-device": "^2.0.3", "cordova-plugin-inappbrowser": "^3.2.0", + "cordova-plugin-ionic": "^5.4.6", "cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-webview": "^4.1.3", "cordova-plugin-network-information": "^2.0.2", @@ -157,7 +158,15 @@ "cordova-plugin-ionic-webview": { "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" }, - "cordova-plugin-ionic-keyboard": {} + "cordova-plugin-ionic-keyboard": {}, + "cordova-plugin-ionic": { + "APP_ID": "efb289f2", + "CHANNEL_NAME": "Master", + "UPDATE_METHOD": "background", + "MAX_STORE": "2", + "MIN_BACKGROUND_DURATION": "30", + "UPDATE_API": "https://api.ionicjs.com" + } }, "platforms": [ "ios", From 66cbeaab79126745e102409f52283e38650b13b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 5 Mar 2020 16:01:38 -0300 Subject: [PATCH 20/46] build: change target to es5 (#515) * build: change target to es5 * build: change ionic deploy channel --- package.json | 2 +- tsconfig.app.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b49d813a9..f5fb4d211 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "cordova-plugin-ionic-keyboard": {}, "cordova-plugin-ionic": { "APP_ID": "efb289f2", - "CHANNEL_NAME": "Master", + "CHANNEL_NAME": "Production", "UPDATE_METHOD": "background", "MAX_STORE": "2", "MIN_BACKGROUND_DURATION": "30", diff --git a/tsconfig.app.json b/tsconfig.app.json index e1dff2bdf..2c8906ad0 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -1,6 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { + "target": "es5", "outDir": "./out-tsc/app", "types": [] }, From 53e85e51a01b52c885db502e68bf1d609ef044d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Mon, 9 Mar 2020 09:08:41 -0300 Subject: [PATCH 21/46] refactor: migrate from tslint to eslint (#512) * feat: Remove tslint and add eslint libraries * feat: Add eslint config * chore: lint angular.json * feat: Match eslint pattern from core * feat: Apply lint rules * feat: Fix lint errors after apply core config * chore: remove codelyzer * chore: remove tslint related libs --- .eslintignore | 2 + .eslintrc.json | 52 + .lintstagedrc.json | 6 +- .prettierignore | 1 + angular.json | 3 +- package-lock.json | 1154 ++++++++++------- package.json | 15 +- src/app/app.component.spec.ts | 1 + src/app/app.component.ts | 120 +- src/app/app.module.ts | 10 +- .../address-list/address-list.module.ts | 4 +- .../components/address-list/address-list.ts | 3 +- .../close-popup/close-popup.module.ts | 1 + src/app/components/components.module.ts | 4 +- .../confirm-transaction.module.ts | 7 +- .../confirm-transaction.ts | 14 +- .../custom-network/custom-network.module.ts | 10 +- .../custom-network/custom-network.ts | 61 +- .../empty-list/empty-list.module.ts | 6 +- .../input-address/input-address.component.ts | 10 +- .../input-address/input-address.module.ts | 6 +- .../input-amount/input-amount.component.ts | 13 +- .../input-amount/input-amount.module.ts | 6 +- .../input-currency.component.ts | 13 +- .../input-currency/input-currency.module.ts | 4 +- .../input-fee/input-fee.component.ts | 12 +- .../components/input-fee/input-fee.module.ts | 1 + .../passphrase-input.module.ts | 5 +- .../passphrase-input/passphrase-input.ts | 7 +- .../components/pin-code/pin-code.module.ts | 7 +- src/app/components/pin-code/pin-code.ts | 74 +- src/app/components/qr-code/qr-code.module.ts | 1 + .../qr-scanner/qr-scanner.module.ts | 6 +- src/app/components/qr-scanner/qr-scanner.ts | 6 +- .../wallet-picker.component.module.ts | 6 +- .../wallet-picker/wallet-picker.component.ts | 3 +- .../wallet-picker.modal.module.ts | 4 +- .../wallet-picker/wallet-picker.modal.ts | 5 +- src/app/directives/directives.module.ts | 1 + .../marketnet-only/marketnet-only.ts | 3 +- .../confirm-transaction.module.ts | 8 +- .../confirm-transaction.ts | 50 +- .../custom-network-create.module.ts | 4 +- .../custom-network-create.ts | 5 +- .../custom-network-edit.module.ts | 4 +- .../custom-network-edit.ts | 7 +- .../enter-second-passphrase.module.ts | 6 +- .../generate-entropy.module.ts | 7 +- .../generate-entropy/generate-entropy.ts | 1 - .../passphrase-word-tester.module.ts | 7 +- .../passphrase-word-tester.ts | 5 +- src/app/modals/pin-code/pin-code.module.ts | 7 +- src/app/modals/pin-code/pin-code.ts | 35 +- .../modals/qr-scanner/qr-scanner.module.ts | 7 +- src/app/modals/qr-scanner/qr-scanner.ts | 35 +- .../wallet-backup/wallet-backup.module.ts | 7 +- src/app/modals/wallet-backup/wallet-backup.ts | 5 +- src/app/models/stored-network.ts | 3 +- src/app/models/transaction.ts | 8 +- src/app/models/wallet.ts | 3 +- .../contact-create/contact-create.module.ts | 10 +- .../contacts/contact-create/contact-create.ts | 31 +- .../contact-list/contact-list.module.ts | 7 +- .../contacts/contact-list/contact-list.ts | 11 +- .../delegate-detail/delegate-detail.module.ts | 3 +- .../delegate-detail/delegate-detail.ts | 14 +- src/app/pages/delegates/delegates.module.ts | 8 +- src/app/pages/delegates/delegates.ts | 79 +- src/app/pages/intro/intro.module.ts | 5 +- src/app/pages/intro/intro.spec.ts | 1 + src/app/pages/intro/intro.ts | 2 +- src/app/pages/login/login.module.ts | 5 +- src/app/pages/login/login.ts | 6 +- .../network-overview.module.ts | 8 +- .../network-overview/network-overview.page.ts | 27 +- .../network-status/network-status.module.ts | 8 +- .../network/network-status/network-status.ts | 42 +- .../profile-create/profile-create.module.ts | 11 +- .../profiles/profile-create/profile-create.ts | 9 +- .../profile-signin/profile-signin.module.ts | 7 +- .../profiles/profile-signin/profile-signin.ts | 19 +- src/app/pages/settings/settings.module.ts | 11 +- src/app/pages/settings/settings.ts | 21 +- .../transaction-receive.module.ts | 11 +- .../transaction-receive.ts | 6 +- .../transaction-response.module.ts | 8 +- .../transaction-response.ts | 8 +- .../transaction-send.module.ts | 19 +- .../transaction-send/transaction-send.ts | 174 ++- .../transaction-show.module.ts | 10 +- .../transaction-show/transaction-show.ts | 4 +- .../modal/set-label/set-label.module.ts | 9 +- .../wallet-dashboard.module.ts | 13 +- .../wallet-dashboard/wallet-dashboard.ts | 111 +- .../wallet-import-manual.module.ts | 11 +- .../wallet-import-manual.ts | 33 +- .../wallet-import/wallet-import.base.ts | 13 +- .../wallet-import/wallet-import.module.ts | 8 +- .../wallet/wallet-import/wallet-import.ts | 7 +- .../wallet/wallet-list/wallet-list.module.ts | 17 +- .../pages/wallet/wallet-list/wallet-list.ts | 56 +- src/app/pipes/account-label/account-label.ts | 3 +- .../has-account-label/has-account-label.ts | 3 +- src/app/pipes/market-number/market-number.ts | 27 +- src/app/pipes/pipes.module.ts | 4 +- .../pipes/timestamp-human/timestamp-human.ts | 3 +- src/app/pipes/units-satoshi/units-satoshi.ts | 1 + .../address-checker/address-checker.ts | 8 +- src/app/services/ark-api/ark-api.ts | 164 ++- src/app/services/auth/auth.ts | 11 +- src/app/services/contacts/contacts.ts | 7 +- src/app/services/forge/forge.ts | 1 - src/app/services/market-data/market-data.ts | 68 +- src/app/services/neo-api/neo-api.ts | 3 +- src/app/services/network/network.ts | 3 +- .../services/settings-data/settings-data.ts | 8 +- src/app/services/storage/storage.spec.ts | 1 + src/app/services/storage/storage.ts | 4 +- src/app/services/toast/toast.ts | 5 +- src/app/services/user-data/user-data.ts | 47 +- src/app/utils/ark-client.ts | 69 +- src/app/utils/ark-peer-discovery.ts | 115 +- src/app/utils/ark-utility.ts | 1 + src/app/utils/http-utils.ts | 3 +- src/app/validators/address/address.ts | 3 +- src/main.ts | 4 +- src/polyfills.ts | 2 - src/test.ts | 3 +- tsconfig.eslint.json | 4 + tslint.json | 58 - 130 files changed, 1823 insertions(+), 1554 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .prettierignore create mode 100644 tsconfig.eslint.json delete mode 100644 tslint.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..3091757a3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +node_modules +coverage \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..3fafb98ad --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,52 @@ +{ + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.eslint.json" + }, + "plugins": ["@typescript-eslint", "prettier", "simple-import-sort"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended", + "prettier/@typescript-eslint" + ], + "rules": { + "@typescript-eslint/prefer-string-starts-ends-with": "off", + "@typescript-eslint/no-this-alias": "off", + "@typescript-eslint/await-thenable": "off", + "@typescript-eslint/ban-ts-ignore": "off", + "@typescript-eslint/camelcase": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-member-accessibility": ["off"], + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/member-ordering": ["error"], + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-unnecessary-condition": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/prefer-regexp-exec": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/unbound-method": "off", + "no-async-promise-executor": "off", + "no-empty": "off", + "no-inferrable-types": "off", + "no-prototype-builtins": "off", + "prefer-const": [ + "error", + { + "destructuring": "all" + } + ], + "prettier/prettier": "error", + "require-atomic-updates": "off", + "simple-import-sort/sort": "error" + } +} diff --git a/.lintstagedrc.json b/.lintstagedrc.json index ba839b5ee..d13ebdf2a 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,5 +1,5 @@ { - "*.ts": ["tslint -c tslint.json --fix", "prettier --write"], - "src/**/*.ts": ["ng-lint-staged lint --fix --"], - "*.{css,pcss,scss,html,json,md,js}": ["prettier --write"] + "*.ts": ["npm run lint", "prettier --write"], + "src/**/*.ts": ["npm run lint --fix"], + "*.{css,pcss,scss,html,json,md,js}": ["prettier --write"] } diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..4ebc8aea5 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +coverage diff --git a/angular.json b/angular.json index bfe64d81a..3e85f078a 100644 --- a/angular.json +++ b/angular.json @@ -193,7 +193,8 @@ } }, "cli": { - "defaultCollection": "@ionic/angular-toolkit" + "defaultCollection": "@ionic/angular-toolkit", + "analytics": false }, "schematics": { "@ionic/angular-toolkit:component": { diff --git a/package-lock.json b/package-lock.json index 552079aa1..4d8d4d9d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -136,16 +136,6 @@ "worker-plugin": "3.2.0" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", - "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", - "dev": true, - "requires": { - "@angular-devkit/core": "9.0.5", - "rxjs": "6.5.3" - } - }, "@angular-devkit/core": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", @@ -344,16 +334,6 @@ "rxjs": "6.5.3" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", - "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", - "dev": true, - "requires": { - "@angular-devkit/core": "9.0.5", - "rxjs": "6.5.3" - } - }, "@angular-devkit/core": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", @@ -510,16 +490,6 @@ "uuid": "^3.3.2" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", - "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", - "dev": true, - "requires": { - "@angular-devkit/core": "9.0.5", - "rxjs": "6.5.3" - } - }, "@angular-devkit/core": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", @@ -1085,21 +1055,21 @@ }, "dependencies": { "@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", "dev": true, "requires": { - "@babel/types": "^7.8.3", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1110,9 +1080,9 @@ } }, "@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", "dev": true }, "debug": { @@ -3083,12 +3053,20 @@ } }, "@babel/runtime": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", - "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz", + "integrity": "sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz", + "integrity": "sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g==", + "dev": true + } } }, "@babel/template": { @@ -3377,6 +3355,18 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3392,6 +3382,17 @@ "glob": "^7.1.3" } }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -4072,6 +4073,12 @@ "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, "@types/estree": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz", @@ -4102,9 +4109,9 @@ "dev": true }, "@types/jasmine": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.7.tgz", - "integrity": "sha512-HoPp5ZafWFXr36yRUOJNuRbvFNklxvN+I9JXfAaZTHBiEw4ZkN4FBnjbV4YHRNNG433ypHP2K+lOeQyRdyuGxQ==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.8.tgz", + "integrity": "sha512-q/L59BjgE6VJtuIM4iDEEwT7xdSWVHMqC+td9sft5RfgHpDZ4Gdn0vLV59wKZ7PjGuVLCL7aNCdoiw5u6ZKSgA==", "dev": true }, "@types/jasminewd2": { @@ -4116,6 +4123,12 @@ "@types/jasmine": "*" } }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, "@types/lodash": { "version": "4.14.149", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", @@ -4333,6 +4346,126 @@ "source-map": "^0.6.1" } }, + "@typescript-eslint/eslint-plugin": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz", + "integrity": "sha512-BvxRLaTDVQ3N+Qq8BivLiE9akQLAOUfxNHIEhedOcg8B2+jY8Rc4/D+iVprvuMX1AdezFYautuGDwr9QxqSxBQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.22.0", + "eslint-utils": "^1.4.3", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "dependencies": { + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz", + "integrity": "sha512-sJt1GYBe6yC0dWOQzXlp+tiuGglNhJC9eXZeC8GBVH98Zv9jtatccuhz0OF5kC/DwChqsNfghHx7OlIDQjNYAQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.22.0", + "eslint-scope": "^5.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.22.0.tgz", + "integrity": "sha512-FaZKC1X+nvD7qMPqKFUYHz3H0TAioSVFGvG29f796Nc5tBluoqfHgLbSFKsh7mKjRoeTm8J9WX2Wo9EyZWjG7w==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.22.0", + "@typescript-eslint/typescript-estree": "2.22.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz", + "integrity": "sha512-2HFZW2FQc4MhIBB8WhDm9lVFaBDy6h9jGrJ4V2Uzxe/ON29HCHBTj3GkgcsgMWfsl2U5as+pTOr30Nibaw7qRQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^6.3.0", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, "@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", @@ -4553,9 +4686,15 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "acorn-node": { @@ -4702,12 +4841,12 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.8.1" } }, "ansi-html": { @@ -4745,12 +4884,6 @@ "picomatch": "^2.0.4" } }, - "app-root-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", - "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", - "dev": true - }, "append-transform": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", @@ -4787,16 +4920,6 @@ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, "ark-ts": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/ark-ts/-/ark-ts-0.4.1.tgz", @@ -4975,12 +5098,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -5063,15 +5180,6 @@ "is-buffer": "^2.0.2" } }, - "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, "babel-loader": { "version": "8.0.6", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", @@ -5633,12 +5741,6 @@ "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.6.tgz", "integrity": "sha512-mjYZFRHmI9bk3Oeexu0rWjHFY+w6hGLabdmwSFzq+EFr4MHHsNOYduDVdYl71NG5pTPL7GGzUCMk9cYuV34/Qw==" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -6027,12 +6129,6 @@ "number-is-nan": "^1.0.0" } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -6131,37 +6227,6 @@ "urlgrey": "0.4.4" } }, - "codelyzer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.1.tgz", - "integrity": "sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA==", - "dev": true, - "requires": { - "app-root-path": "^2.2.1", - "aria-query": "^3.0.0", - "axobject-query": "2.0.2", - "css-selector-tokenizer": "^0.7.1", - "cssauron": "^1.4.0", - "damerau-levenshtein": "^1.0.4", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - } - } - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -6965,51 +7030,6 @@ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", "dev": true }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -7032,21 +7052,6 @@ "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", "dev": true }, - "cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "requires": { - "through": "X.X.X" - } - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, "cssnano": { "version": "4.1.10", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", @@ -7145,12 +7150,6 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, - "damerau-levenshtein": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", - "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", - "dev": true - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -7221,6 +7220,12 @@ "regexp.prototype.flags": "^1.2.0" } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -7476,6 +7481,15 @@ "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-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", @@ -7879,6 +7893,169 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "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 + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "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 + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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 + }, + "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 + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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" + } + } + } + }, + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-simple-import-sort": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.1.tgz", + "integrity": "sha512-s6Hjp9rcIDYT1h7tuTulblbY7+XQNZK+014uUkNJSKRXEHZO2i7CTr16HOpfgD9HDnUOpl0fwphPsr0oxZqgGg==", + "dev": true + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -7889,12 +8066,47 @@ "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.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.0.tgz", + "integrity": "sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA==", + "dev": true, + "requires": { + "acorn": "^7.1.0", + "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.1.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", + "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -8224,6 +8436,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, + "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": "3.2.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", @@ -8275,6 +8493,12 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, + "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 + }, "fast-memoize": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", @@ -8285,12 +8509,6 @@ "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-1.6.0.tgz", "integrity": "sha512-sjV6dxWdHs14cef7GzJgCWSOagw57cUBYMey+seWeOsU0HgMf2g4Wkdflv65X/8E4UWptUcq9EZ3YqSXUnUy9Q==" }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "fastq": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz", @@ -8325,14 +8543,23 @@ "dev": true }, "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", "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.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", @@ -8493,6 +8720,28 @@ "semver-regex": "^2.0.0" } }, + "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.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", @@ -8626,6 +8875,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "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 + }, "genfun": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", @@ -8649,6 +8904,12 @@ "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", @@ -9527,9 +9788,9 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" }, "ionicons": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.0.tgz", - "integrity": "sha512-tqKI5QyqCQOikbWYIA7teJPPXKfYZhEff8ARvbkOIh7PWbKI7sd0IBJcjhbw/mUilIA7U9Bcdm7qGBPhVWOCWg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.1.tgz", + "integrity": "sha512-P9GHr7pgCJcG211W0wute49NZ9AvJZvFJf4OwYybakjX6j7tu0q5t5HNWn9bcb9YjI7SxBblJg8iqQ1Yb59DXw==" }, "ios-sim": { "version": "8.0.2", @@ -10182,6 +10443,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "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", @@ -10441,6 +10708,16 @@ "pify": "^4.0.1" } }, + "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" + } + }, "license-webpack-plugin": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", @@ -10745,18 +11022,6 @@ "strip-ansi": "^3.0.1" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -10776,15 +11041,6 @@ "supports-color": "^2.0.0" } }, - "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" - } - }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", @@ -10804,68 +11060,11 @@ "chalk": "^1.0.0" } }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - } - }, - "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" - } - }, "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 - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } } } }, @@ -11037,83 +11236,79 @@ } }, "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", "dev": true, "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" }, "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "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": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "restore-cursor": "^2.0.0" } }, - "color-convert": { + "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/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "color-name": "~1.1.4" + "mimic-fn": "^1.0.0" } }, - "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==", - "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 - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "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": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^3.0.0" } }, "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==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" } } } @@ -11760,6 +11955,12 @@ "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", @@ -11910,9 +12111,9 @@ }, "dependencies": { "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "semver": { @@ -11975,9 +12176,9 @@ }, "dependencies": { "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "semver": { @@ -12438,6 +12639,20 @@ } } }, + "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": "4.0.2", "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", @@ -13512,6 +13727,12 @@ "array-find": "^1.0.0" } }, + "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", @@ -13524,6 +13745,15 @@ "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-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -13755,13 +13985,21 @@ } }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "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 + } } }, "proxy-from-env": { @@ -14270,6 +14508,12 @@ } } }, + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "dev": true + }, "regexpu-core": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", @@ -14502,9 +14746,9 @@ } }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { "is-promise": "^2.1.0" @@ -14701,23 +14945,6 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "semver-intersect": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", @@ -15002,48 +15229,10 @@ "dev": true }, "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "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" - } - }, - "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==", - "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 - } - } + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true }, "smart-buffer": { "version": "4.1.0", @@ -15817,6 +16006,12 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, "stubs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", @@ -15959,6 +16154,69 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" }, + "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 + }, + "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 + }, + "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 + }, + "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" + } + }, + "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" + } + } + } + }, "tail": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/tail/-/tail-0.4.0.tgz", @@ -16343,6 +16601,12 @@ } } }, + "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 + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -16526,50 +16790,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" }, - "tslint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.0.0.tgz", - "integrity": "sha512-9nLya8GBtlFmmFMW7oXXwoXS1NkrccqTqAtwXzdPV9e2mqSEvCki6iHL/Fbzi5oqbugshzgGPk7KBb2qNP1DSA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.10.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "tslint-config-prettier": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", - "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", - "dev": true - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -16591,10 +16811,19 @@ "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.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { @@ -17033,6 +17262,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==" }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "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", @@ -18853,6 +19088,12 @@ "bs58check": "<3.0.0" } }, + "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 + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -18911,6 +19152,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "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" + } + }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", diff --git a/package.json b/package.json index f5fb4d211..c340ef9ec 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "test:unit": "ng test", "test:coverage": "ng test --codeCoverage --watch=false --progress=false", "test:e2e": "ng e2e", - "lint": "ng lint", + "lint": "eslint 'src/**/*.ts' --fix", "lab": "ionic serve --lab", "debug:ios": "PLATFORM=ios ionic cordova run ios --address=0.0.0.0 --debug --consolelogs -l", "build:ios": "PLATFORM=ios ionic cordova build ios --prod --release", @@ -22,7 +22,7 @@ "private": true, "dependencies": { "@angular/common": "~9.0.5", - "@angular/compiler": "~9.0.5", + "@angular/compiler": "^9.0.5", "@angular/core": "~9.0.5", "@angular/forms": "~9.0.5", "@angular/localize": "^9.0.5", @@ -98,7 +98,7 @@ "@angular-devkit/architect": "~0.900.5", "@angular-devkit/build-angular": "~0.900.5", "@angular/cli": "^9.0.5", - "@angular/compiler-cli": "~9.0.5", + "@angular/compiler-cli": "^9.0.5", "@angular/language-service": "~9.0.5", "@ionic/angular-toolkit": "^2.2.0", "@ionic/lab": "^3.1.1", @@ -112,8 +112,13 @@ "@types/node": "^13.7.7", "@types/node-forge": "^0.9.2", "@types/semver": "^7.1.0", + "@typescript-eslint/eslint-plugin": "^2.22.0", + "@typescript-eslint/parser": "^2.22.0", "codecov": "^3.6.5", - "codelyzer": "^5.2.1", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.10.0", + "eslint-plugin-prettier": "^3.1.2", + "eslint-plugin-simple-import-sort": "^5.0.1", "husky": "^4.2.3", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", @@ -134,8 +139,6 @@ "puppeteer": "^2.1.1", "tailwindcss": "^1.2.0", "ts-node": "~8.6.2", - "tslint": "~6.0.0", - "tslint-config-prettier": "^1.18.0", "typescript": "^3.7.5" }, "description": "A Wallet for Everyone", diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 7d3174fdd..3e615e2b1 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture } from "@angular/core/testing"; import { TestHelpers } from "@@/test/helpers"; + import { AppComponent } from "./app.component"; describe("AppComponent", () => { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 4f237e90d..6da07e23a 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -7,11 +7,12 @@ import { Renderer2, ViewChildren, } from "@angular/core"; - -import { Wallet } from "@/models/model"; -import { AuthProvider } from "@/services/auth/auth"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { Router } from "@angular/router"; +import { + Keyboard, + KeyboardResizeMode, + KeyboardStyle, +} from "@ionic-native/keyboard/ngx"; import { Network } from "@ionic-native/network/ngx"; import { ScreenOrientation } from "@ionic-native/screen-orientation/ngx"; import { SplashScreen } from "@ionic-native/splash-screen/ngx"; @@ -27,21 +28,20 @@ import { Platform, } from "@ionic/angular"; import { TranslateService } from "@ngx-translate/core"; +import moment from "moment"; import { Subject } from "rxjs"; import { debounceTime, takeUntil } from "rxjs/operators"; + +import * as constants from "@/app/app.constants"; +import { Wallet } from "@/models/model"; +import { AuthProvider } from "@/services/auth/auth"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; + import { ArkApiProvider } from "./services/ark-api/ark-api"; import { EventBusProvider } from "./services/event-bus/event-bus"; import { SettingsDataProvider } from "./services/settings-data/settings-data"; -import * as constants from "@/app/app.constants"; -import { Router } from "@angular/router"; -import { - Keyboard, - KeyboardResizeMode, - KeyboardStyle, -} from "@ionic-native/keyboard/ngx"; -import moment from "moment"; - @Component({ selector: "app-root", templateUrl: "app.component.html", @@ -51,9 +51,6 @@ export class AppComponent implements OnDestroy, OnInit { @ViewChildren(IonRouterOutlet) routerOutlets: QueryList; - private unsubscriber$: Subject = new Subject(); - private lastPauseTimestamp: Date; - public profile = null; public network = null; @@ -63,6 +60,9 @@ export class AppComponent implements OnDestroy, OnInit { public menuId = "sidebar"; + private unsubscriber$: Subject = new Subject(); + private lastPauseTimestamp: Date; + constructor( private platform: Platform, private splashScreen: SplashScreen, @@ -197,30 +197,6 @@ export class AppComponent implements OnDestroy, OnInit { }); } - private showConfirmation(title: string): Promise { - return new Promise(resolve => { - this.translateService - .get(["NO", "YES"]) - .subscribe(async translation => { - const alert = await this.alertCtrl.create({ - subHeader: title, - buttons: [ - { - text: translation.NO, - role: "cancel", - handler: () => {}, - }, - { - text: translation.YES, - handler: () => resolve(), - }, - ], - }); - alert.present(); - }); - }); - } - initTheme() { this.settingsDataProvider.settings.subscribe(settings => { if (settings.darkMode) { @@ -309,6 +285,49 @@ export class AppComponent implements OnDestroy, OnInit { this.authProvider.logout(); } + ngOnInit() { + this.onUserLogin(); + this.onUserLogout(); + this.verifyNetwork(); + + this.onCreateWallet(); + + this.settingsDataProvider.onUpdate$.subscribe(() => { + this.initTranslation(); + this.initTheme(); + }); + } + + ngOnDestroy() { + this.unsubscriber$.next(); + this.unsubscriber$.complete(); + this.authProvider.logout(); + } + + private showConfirmation(title: string): Promise { + return new Promise(resolve => { + this.translateService + .get(["NO", "YES"]) + .subscribe(async translation => { + const alert = await this.alertCtrl.create({ + subHeader: title, + buttons: [ + { + text: translation.NO, + role: "cancel", + handler: () => {}, + }, + { + text: translation.YES, + handler: () => resolve(), + }, + ], + }); + alert.present(); + }); + }); + } + // Verify if new wallet is a delegate private onCreateWallet() { return this.userDataProvider.onCreateWallet$ @@ -356,23 +375,4 @@ export class AppComponent implements OnDestroy, OnInit { this.toastProvider.error("NETWORKS_PAGE.INTERNET_DESCONNECTED"), ); } - - ngOnInit() { - this.onUserLogin(); - this.onUserLogout(); - this.verifyNetwork(); - - this.onCreateWallet(); - - this.settingsDataProvider.onUpdate$.subscribe(() => { - this.initTranslation(); - this.initTheme(); - }); - } - - ngOnDestroy() { - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - this.authProvider.logout(); - } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 8d363ac7b..41b8af323 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,7 +1,7 @@ +import { HttpClient, HttpClientModule } from "@angular/common/http"; import { NgModule } from "@angular/core"; import { BrowserModule } from "@angular/platform-browser"; import { RouteReuseStrategy } from "@angular/router"; - import { Keyboard } from "@ionic-native/keyboard/ngx"; import { Network } from "@ionic-native/network/ngx"; import { QRScanner } from "@ionic-native/qr-scanner/ngx"; @@ -11,15 +11,13 @@ import { SplashScreen } from "@ionic-native/splash-screen/ngx"; import { StatusBar } from "@ionic-native/status-bar/ngx"; import { IonicModule, IonicRouteStrategy } from "@ionic/angular"; import { IonicStorageModule } from "@ionic/storage"; - -import { AppRoutingModule } from "./app-routing.module"; -import { AppComponent } from "./app.component"; - -import { HttpClient, HttpClientModule } from "@angular/common/http"; import { TranslateLoader, TranslateModule } from "@ngx-translate/core"; import { TranslateHttpLoader } from "@ngx-translate/http-loader"; import { ChartsModule } from "ng2-charts"; +import { AppRoutingModule } from "./app-routing.module"; +import { AppComponent } from "./app.component"; + export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, "./assets/i18n/", ".json"); } diff --git a/src/app/components/address-list/address-list.module.ts b/src/app/components/address-list/address-list.module.ts index 5a0c63468..2b897684d 100644 --- a/src/app/components/address-list/address-list.module.ts +++ b/src/app/components/address-list/address-list.module.ts @@ -1,7 +1,9 @@ -import { PipesModule } from "@/pipes/pipes.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; + +import { PipesModule } from "@/pipes/pipes.module"; + import { AddressListComponent } from "./address-list"; @NgModule({ diff --git a/src/app/components/address-list/address-list.ts b/src/app/components/address-list/address-list.ts index d9f60d419..aa4f9483c 100644 --- a/src/app/components/address-list/address-list.ts +++ b/src/app/components/address-list/address-list.ts @@ -1,6 +1,7 @@ -import { AddressMap } from "@/models/contact"; import { Component, EventEmitter, Input, Output } from "@angular/core"; +import { AddressMap } from "@/models/contact"; + @Component({ selector: "address-list", templateUrl: "address-list.html", diff --git a/src/app/components/close-popup/close-popup.module.ts b/src/app/components/close-popup/close-popup.module.ts index 8ff730e67..a1f64fa85 100644 --- a/src/app/components/close-popup/close-popup.module.ts +++ b/src/app/components/close-popup/close-popup.module.ts @@ -1,6 +1,7 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; + import { ClosePopupComponent } from "./close-popup"; @NgModule({ diff --git a/src/app/components/components.module.ts b/src/app/components/components.module.ts index 005c89aad..558e81334 100644 --- a/src/app/components/components.module.ts +++ b/src/app/components/components.module.ts @@ -1,5 +1,7 @@ -import { ConfirmTransactionComponentModule } from "@/components/confirm-transaction/confirm-transaction.module"; import { NgModule } from "@angular/core"; + +import { ConfirmTransactionComponentModule } from "@/components/confirm-transaction/confirm-transaction.module"; + import { AddressListComponentModule } from "./address-list/address-list.module"; import { ClosePopupComponentModule } from "./close-popup/close-popup.module"; import { EmptyListComponentModule } from "./empty-list/empty-list.module"; diff --git a/src/app/components/confirm-transaction/confirm-transaction.module.ts b/src/app/components/confirm-transaction/confirm-transaction.module.ts index 295b30507..57d4dbb72 100644 --- a/src/app/components/confirm-transaction/confirm-transaction.module.ts +++ b/src/app/components/confirm-transaction/confirm-transaction.module.ts @@ -1,11 +1,12 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { ConfirmTransactionComponent } from "./confirm-transaction"; +import { TranslateModule } from "@ngx-translate/core"; import { ConfirmTransactionModal } from "@/app/modals/confirm-transaction/confirm-transaction"; import { ConfirmTransactionModalModule } from "@/app/modals/confirm-transaction/confirm-transaction.module"; -import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; + +import { ConfirmTransactionComponent } from "./confirm-transaction"; @NgModule({ declarations: [ConfirmTransactionComponent], diff --git a/src/app/components/confirm-transaction/confirm-transaction.ts b/src/app/components/confirm-transaction/confirm-transaction.ts index f8884ff1a..256b635a2 100644 --- a/src/app/components/confirm-transaction/confirm-transaction.ts +++ b/src/app/components/confirm-transaction/confirm-transaction.ts @@ -1,17 +1,17 @@ +import { Component, EventEmitter, Input, Output } from "@angular/core"; +import { ModalController, NavController } from "@ionic/angular"; +import { TranslateService } from "@ngx-translate/core"; +import lodash from "lodash"; + +import { ConfirmTransactionModal } from "@/app/modals/confirm-transaction/confirm-transaction"; import { Transaction, TranslatableObject, Wallet, WalletKeys, } from "@/models/model"; -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { Component, EventEmitter, Input, Output } from "@angular/core"; -import { ModalController, NavController } from "@ionic/angular"; -import { TranslateService } from "@ngx-translate/core"; - -import { ConfirmTransactionModal } from "@/app/modals/confirm-transaction/confirm-transaction"; import { AddressCheckResult } from "@/services/address-checker/address-check-result"; -import lodash from "lodash"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; @Component({ selector: "confirm-transaction", diff --git a/src/app/components/custom-network/custom-network.module.ts b/src/app/components/custom-network/custom-network.module.ts index a465b6655..84157b06c 100644 --- a/src/app/components/custom-network/custom-network.module.ts +++ b/src/app/components/custom-network/custom-network.module.ts @@ -1,12 +1,14 @@ -import { CustomNetworkCreateModal } from "@/app/modals/custom-network-create/custom-network-create"; -import { CustomNetworkCreateModalModule } from "@/app/modals/custom-network-create/custom-network-create.module"; -import { CustomNetworkEditModal } from "@/app/modals/custom-network-edit/custom-network-edit"; -import { CustomNetworkEditModalModule } from "@/app/modals/custom-network-edit/custom-network-edit.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { FormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; + +import { CustomNetworkCreateModal } from "@/app/modals/custom-network-create/custom-network-create"; +import { CustomNetworkCreateModalModule } from "@/app/modals/custom-network-create/custom-network-create.module"; +import { CustomNetworkEditModal } from "@/app/modals/custom-network-edit/custom-network-edit"; +import { CustomNetworkEditModalModule } from "@/app/modals/custom-network-edit/custom-network-edit.module"; + import { CustomNetworkComponent } from "./custom-network"; @NgModule({ diff --git a/src/app/components/custom-network/custom-network.ts b/src/app/components/custom-network/custom-network.ts index df8864cb1..9b8067df1 100644 --- a/src/app/components/custom-network/custom-network.ts +++ b/src/app/components/custom-network/custom-network.ts @@ -1,3 +1,8 @@ +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { ModalController } from "@ionic/angular"; +import { Network } from "ark-ts/model"; +import lodash from "lodash"; + import { CustomNetworkCreateModal } from "@/app/modals/custom-network-create/custom-network-create"; import { CustomNetworkEditModal, @@ -5,10 +10,6 @@ import { } from "@/app/modals/custom-network-edit/custom-network-edit"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; -import { ModalController } from "@ionic/angular"; -import { Network } from "ark-ts/model"; -import lodash from "lodash"; @Component({ selector: "customNetwork", @@ -40,21 +41,6 @@ export class CustomNetworkComponent implements OnInit { this.loadNetworks(); } - private loadNetworks(): void { - this.networks = this.userDataProvider.networks; - this.networksIds = lodash.keys(this.networks); - this.networkChoices = this.networksIds - .filter(id => - this.userDataProvider.defaultNetworks.every( - defaultNetwork => - this.networks[id].name !== defaultNetwork.name, - ), - ) - .map(id => { - return { name: this.networks[id].name, id }; - }); - } - public async createNewModal() { const modal = await this.modalCtrl.create({ component: CustomNetworkCreateModal, @@ -70,6 +56,32 @@ export class CustomNetworkComponent implements OnInit { modal.present(); } + public onActiveNetworkChange(): void { + if (this.openManageDialogOnSelect) { + this.openManageDialog( + this.networks[this.activeNetworkChoice.id], + this.activeNetworkChoice.id, + ); + } else { + this.emitActiveNetwork(); + } + } + + private loadNetworks(): void { + this.networks = this.userDataProvider.networks; + this.networksIds = lodash.keys(this.networks); + this.networkChoices = this.networksIds + .filter(id => + this.userDataProvider.defaultNetworks.every( + defaultNetwork => + this.networks[id].name !== defaultNetwork.name, + ), + ) + .map(id => { + return { name: this.networks[id].name, id }; + }); + } + private async openManageDialog(network: Network, networkId?: string) { const modal = await this.modalCtrl.create({ component: CustomNetworkEditModal, @@ -111,17 +123,6 @@ export class CustomNetworkComponent implements OnInit { modal.present(); } - public onActiveNetworkChange(): void { - if (this.openManageDialogOnSelect) { - this.openManageDialog( - this.networks[this.activeNetworkChoice.id], - this.activeNetworkChoice.id, - ); - } else { - this.emitActiveNetwork(); - } - } - private emitActiveNetwork() { this.networkChange.next( this.activeNetworkChoice ? this.activeNetworkChoice.id : null, diff --git a/src/app/components/empty-list/empty-list.module.ts b/src/app/components/empty-list/empty-list.module.ts index e4e8b10d0..61dab9020 100644 --- a/src/app/components/empty-list/empty-list.module.ts +++ b/src/app/components/empty-list/empty-list.module.ts @@ -1,10 +1,10 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { EmptyListComponent } from "./empty-list"; - -import { CommonModule } from "@angular/common"; import { TranslateModule } from "@ngx-translate/core"; +import { EmptyListComponent } from "./empty-list"; + @NgModule({ declarations: [EmptyListComponent], imports: [IonicModule, TranslateModule, CommonModule], diff --git a/src/app/components/input-address/input-address.component.ts b/src/app/components/input-address/input-address.component.ts index f965467b3..b74f33848 100644 --- a/src/app/components/input-address/input-address.component.ts +++ b/src/app/components/input-address/input-address.component.ts @@ -1,16 +1,12 @@ -import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; -import { - Component, - EventEmitter, - OnInit, - Output, -} from "@angular/core"; +import { Component, EventEmitter, OnInit, Output } from "@angular/core"; import { ControlContainer, FormControl, FormGroupDirective, } from "@angular/forms"; +import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; + @Component({ selector: "input-address", templateUrl: "input-address.component.html", diff --git a/src/app/components/input-address/input-address.module.ts b/src/app/components/input-address/input-address.module.ts index fd24247ee..e4cc4c4f8 100644 --- a/src/app/components/input-address/input-address.module.ts +++ b/src/app/components/input-address/input-address.module.ts @@ -1,8 +1,10 @@ +import { NgModule } from "@angular/core"; +import { IonicModule } from "@ionic/angular"; + import { SharedModule } from "@/app/shared.module"; import { DirectivesModule } from "@/directives/directives.module"; import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; + import { InputAddressComponent } from "./input-address.component"; @NgModule({ diff --git a/src/app/components/input-amount/input-amount.component.ts b/src/app/components/input-amount/input-amount.component.ts index 80ae13d7e..7517191a1 100644 --- a/src/app/components/input-amount/input-amount.component.ts +++ b/src/app/components/input-amount/input-amount.component.ts @@ -1,9 +1,3 @@ -import * as constants from "@/app/app.constants"; -import { MarketCurrency } from "@/models/model"; -import { MarketDataProvider } from "@/services/market-data/market-data"; -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; -import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; import { Component, OnInit } from "@angular/core"; import { ControlContainer, @@ -12,6 +6,13 @@ import { } from "@angular/forms"; import { Network } from "ark-ts/model"; +import * as constants from "@/app/app.constants"; +import { MarketCurrency } from "@/models/model"; +import { MarketDataProvider } from "@/services/market-data/market-data"; +import { SettingsDataProvider } from "@/services/settings-data/settings-data"; +import { UserDataProvider } from "@/services/user-data/user-data"; +import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; + @Component({ selector: "input-amount", templateUrl: "input-amount.component.html", diff --git a/src/app/components/input-amount/input-amount.module.ts b/src/app/components/input-amount/input-amount.module.ts index 0d067f5e3..78c0bb1bd 100644 --- a/src/app/components/input-amount/input-amount.module.ts +++ b/src/app/components/input-amount/input-amount.module.ts @@ -1,9 +1,11 @@ -import { InputAmountComponent } from "@/components/input-amount/input-amount.component"; -import { DirectivesModule } from "@/directives/directives.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; + +import { InputAmountComponent } from "@/components/input-amount/input-amount.component"; +import { DirectivesModule } from "@/directives/directives.module"; + import { InputCurrencyComponentModule } from "../input-currency/input-currency.module"; @NgModule({ diff --git a/src/app/components/input-currency/input-currency.component.ts b/src/app/components/input-currency/input-currency.component.ts index 03491e78c..ca8ac554a 100644 --- a/src/app/components/input-currency/input-currency.component.ts +++ b/src/app/components/input-currency/input-currency.component.ts @@ -1,5 +1,3 @@ -import { ARKTOSHI_DP } from "@/app/app.constants"; -import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; import { Component, EventEmitter, @@ -14,6 +12,9 @@ import { NG_VALUE_ACCESSOR, } from "@angular/forms"; +import { ARKTOSHI_DP } from "@/app/app.constants"; +import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; + export interface IInputCurrencyOutput { display: string; value: BigNumber; @@ -26,6 +27,7 @@ export interface IInputCurrencyOutput { providers: [ { provide: NG_VALUE_ACCESSOR, + /* eslint-disable-next-line */ useExisting: forwardRef(() => InputCurrencyComponent), multi: true, }, @@ -48,10 +50,11 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { public isDisabled: boolean; public input: (value: BigNumber) => void; - public onTouched = () => {}; constructor() {} + public onTouched = () => {}; + writeValue(value: string | number | BigNumber): void { if (SafeBigNumber.isBigNumber(value)) { this.format(value.toString()); @@ -102,7 +105,7 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { for (let i = 0; i < input.length; i++) { const char = input[i]; - if (numbers.indexOf(char) !== -1) { + if (numbers.includes(char)) { if (decimals >= 0) { decimals++; if (decimals > this.fractionDigits) { @@ -110,7 +113,7 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { } } display += char; - } else if (decimals === -1 && separatos.indexOf(char) !== -1) { + } else if (decimals === -1 && separatos.includes(char)) { if (i === 0) { display = "0"; } diff --git a/src/app/components/input-currency/input-currency.module.ts b/src/app/components/input-currency/input-currency.module.ts index 1bf958604..4f24611d9 100644 --- a/src/app/components/input-currency/input-currency.module.ts +++ b/src/app/components/input-currency/input-currency.module.ts @@ -1,7 +1,9 @@ -import { SharedModule } from "@/app/shared.module"; import { NgModule } from "@angular/core"; import { ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; + +import { SharedModule } from "@/app/shared.module"; + import { InputCurrencyComponent } from "./input-currency.component"; @NgModule({ diff --git a/src/app/components/input-fee/input-fee.component.ts b/src/app/components/input-fee/input-fee.component.ts index e59e5a3a7..5ecdb8904 100644 --- a/src/app/components/input-fee/input-fee.component.ts +++ b/src/app/components/input-fee/input-fee.component.ts @@ -6,21 +6,21 @@ import { OnInit, Output, } from "@angular/core"; -import { TransactionType } from "ark-ts"; - -import { FeeStatistic } from "@/models/stored-network"; -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { ArkUtility } from "../../utils/ark-utility"; - import { ControlContainer, FormControl, FormGroupDirective, } from "@angular/forms"; import { TranslateService } from "@ngx-translate/core"; +import { TransactionType } from "ark-ts"; import { Subscription } from "rxjs"; import { switchMap } from "rxjs/operators"; +import { FeeStatistic } from "@/models/stored-network"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; + +import { ArkUtility } from "../../utils/ark-utility"; + @Component({ selector: "input-fee", templateUrl: "input-fee.component.html", diff --git a/src/app/components/input-fee/input-fee.module.ts b/src/app/components/input-fee/input-fee.module.ts index 5ed7b7b3e..5ef57bee3 100644 --- a/src/app/components/input-fee/input-fee.module.ts +++ b/src/app/components/input-fee/input-fee.module.ts @@ -3,6 +3,7 @@ import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; + import { InputCurrencyComponentModule } from "../input-currency/input-currency.module"; import { InputFeeComponent } from "./input-fee.component"; diff --git a/src/app/components/passphrase-input/passphrase-input.module.ts b/src/app/components/passphrase-input/passphrase-input.module.ts index e66d43889..d97c04d16 100644 --- a/src/app/components/passphrase-input/passphrase-input.module.ts +++ b/src/app/components/passphrase-input/passphrase-input.module.ts @@ -1,11 +1,12 @@ -import { PassphraseInputComponent } from "@/components/passphrase-input/passphrase-input"; -import { DirectivesModule } from "@/directives/directives.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; +import { PassphraseInputComponent } from "@/components/passphrase-input/passphrase-input"; +import { DirectivesModule } from "@/directives/directives.module"; + @NgModule({ declarations: [PassphraseInputComponent], imports: [ diff --git a/src/app/components/passphrase-input/passphrase-input.ts b/src/app/components/passphrase-input/passphrase-input.ts index 74b374e8f..556bfd8d9 100644 --- a/src/app/components/passphrase-input/passphrase-input.ts +++ b/src/app/components/passphrase-input/passphrase-input.ts @@ -1,7 +1,8 @@ -import { ToastProvider } from "@/services/toast/toast"; import { Component, Input, OnInit, ViewChild } from "@angular/core"; import * as bip39 from "bip39"; +import { ToastProvider } from "@/services/toast/toast"; + @Component({ selector: "passphrase-input", templateUrl: "passphrase-input.html", @@ -130,8 +131,8 @@ export class PassphraseInputComponent implements OnInit { ) { // we just want one letter to be different - only "manual" typing, don't suggest on copy/paste stuff const wordlist = bip39.wordlists[this.wordlistLanguage]; - this.wordSuggestions = wordlist.filter( - word => word.indexOf(lastWordPassphrase) === 0, + this.wordSuggestions = wordlist.filter(word => + word.startsWith(lastWordPassphrase), ); } } diff --git a/src/app/components/pin-code/pin-code.module.ts b/src/app/components/pin-code/pin-code.module.ts index bad8c46de..399734612 100644 --- a/src/app/components/pin-code/pin-code.module.ts +++ b/src/app/components/pin-code/pin-code.module.ts @@ -1,14 +1,15 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { PinCodeComponent } from "./pin-code"; +import { TranslateModule } from "@ngx-translate/core"; import { EnterSecondPassphraseModal } from "@/app/modals/enter-second-passphrase/enter-second-passphrase"; import { EnterSecondPassphraseModalModule } from "@/app/modals/enter-second-passphrase/enter-second-passphrase.module"; import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { PinCodeModalModule } from "@/app/modals/pin-code/pin-code.module"; -import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; + import { ClosePopupComponentModule } from "../close-popup/close-popup.module"; +import { PinCodeComponent } from "./pin-code"; @NgModule({ declarations: [PinCodeComponent], diff --git a/src/app/components/pin-code/pin-code.ts b/src/app/components/pin-code/pin-code.ts index 8c5d70e72..8a77c59de 100644 --- a/src/app/components/pin-code/pin-code.ts +++ b/src/app/components/pin-code/pin-code.ts @@ -1,18 +1,18 @@ -import { Wallet, WalletKeys } from "@/models/model"; -import { AuthProvider } from "@/services/auth/auth"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; import { Component, EventEmitter, Input, Output } from "@angular/core"; import { LoadingController, ModalController, NavController, } from "@ionic/angular"; +import { TranslateService } from "@ngx-translate/core"; +import lodash from "lodash"; import { EnterSecondPassphraseModal } from "@/app/modals/enter-second-passphrase/enter-second-passphrase"; import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; -import { TranslateService } from "@ngx-translate/core"; -import lodash from "lodash"; +import { Wallet, WalletKeys } from "@/models/model"; +import { AuthProvider } from "@/services/auth/auth"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; @Component({ selector: "pin-code", @@ -96,37 +96,6 @@ export class PinCodeComponent { modal.present(); } - private async requestSecondPassphrase( - passphrases: WalletKeys, - onSuccess: (keys: WalletKeys) => void, - ) { - const hasSecondPublicKey = !!( - this.wallet.attributes?.secondPublicKey || - this.wallet.secondPublicKey - ); - if (hasSecondPublicKey && !this.wallet.cipherSecondKey) { - const modal = await this.modalCtrl.create({ - component: EnterSecondPassphraseModal, - }); - - modal.onDidDismiss().then(({ data }) => { - if (!data) { - this.toastProvider.error( - "TRANSACTIONS_PAGE.SECOND_PASSPHRASE_NOT_ENTERED", - ); - return this.wrong.emit(); - } - - passphrases.secondPassphrase = data; - return this.executeOnSuccess(onSuccess, passphrases); - }); - - modal.present(); - } else { - return this.executeOnSuccess(onSuccess, passphrases); - } - } - createUpdatePinCode(nextPage?: string, oldPassword?: string) { const createPinCodeModalFunc = async (master?: any) => { if (!master) { @@ -222,6 +191,37 @@ export class PinCodeComponent { } } + private async requestSecondPassphrase( + passphrases: WalletKeys, + onSuccess: (keys: WalletKeys) => void, + ) { + const hasSecondPublicKey = !!( + this.wallet.attributes?.secondPublicKey || + this.wallet.secondPublicKey + ); + if (hasSecondPublicKey && !this.wallet.cipherSecondKey) { + const modal = await this.modalCtrl.create({ + component: EnterSecondPassphraseModal, + }); + + modal.onDidDismiss().then(({ data }) => { + if (!data) { + this.toastProvider.error( + "TRANSACTIONS_PAGE.SECOND_PASSPHRASE_NOT_ENTERED", + ); + return this.wrong.emit(); + } + + passphrases.secondPassphrase = data; + return this.executeOnSuccess(onSuccess, passphrases); + }); + + modal.present(); + } else { + return this.executeOnSuccess(onSuccess, passphrases); + } + } + private executeOnSuccess( onSuccess: (keys: WalletKeys) => any, keys?: WalletKeys, diff --git a/src/app/components/qr-code/qr-code.module.ts b/src/app/components/qr-code/qr-code.module.ts index 7fecf5e48..2ef6b541f 100644 --- a/src/app/components/qr-code/qr-code.module.ts +++ b/src/app/components/qr-code/qr-code.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; import { QRCodeModule } from "angular2-qrcode"; + import { QRCodeComponent } from "./qr-code"; @NgModule({ diff --git a/src/app/components/qr-scanner/qr-scanner.module.ts b/src/app/components/qr-scanner/qr-scanner.module.ts index 9d0cc6c6b..dab371dcb 100644 --- a/src/app/components/qr-scanner/qr-scanner.module.ts +++ b/src/app/components/qr-scanner/qr-scanner.module.ts @@ -1,8 +1,10 @@ -import { QRScannerModal } from "@/app/modals/qr-scanner/qr-scanner"; -import { QRScannerModalModule } from "@/app/modals/qr-scanner/qr-scanner.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; + +import { QRScannerModal } from "@/app/modals/qr-scanner/qr-scanner"; +import { QRScannerModalModule } from "@/app/modals/qr-scanner/qr-scanner.module"; + import { QRScannerComponent } from "./qr-scanner"; @NgModule({ diff --git a/src/app/components/qr-scanner/qr-scanner.ts b/src/app/components/qr-scanner/qr-scanner.ts index 7d88c8c77..a0735fe8d 100644 --- a/src/app/components/qr-scanner/qr-scanner.ts +++ b/src/app/components/qr-scanner/qr-scanner.ts @@ -1,11 +1,11 @@ -import { QRCodeScheme } from "@/models/model"; import { Component, EventEmitter, Output } from "@angular/core"; import { ModalController } from "@ionic/angular"; +import * as bip39 from "bip39"; +import lodash from "lodash"; import * as constants from "@/app/app.constants"; import { QRScannerModal } from "@/app/modals/qr-scanner/qr-scanner"; -import * as bip39 from "bip39"; -import lodash from "lodash"; +import { QRCodeScheme } from "@/models/model"; @Component({ selector: "qr-scanner", diff --git a/src/app/components/wallet-picker/wallet-picker.component.module.ts b/src/app/components/wallet-picker/wallet-picker.component.module.ts index 6464c6073..dd2345ec3 100644 --- a/src/app/components/wallet-picker/wallet-picker.component.module.ts +++ b/src/app/components/wallet-picker/wallet-picker.component.module.ts @@ -1,7 +1,9 @@ -import { SharedModule } from "@/app/shared.module"; -import { PipesModule } from "@/pipes/pipes.module"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; + +import { SharedModule } from "@/app/shared.module"; +import { PipesModule } from "@/pipes/pipes.module"; + import { WalletPickerComponent } from "./wallet-picker.component"; @NgModule({ diff --git a/src/app/components/wallet-picker/wallet-picker.component.ts b/src/app/components/wallet-picker/wallet-picker.component.ts index b809dcfcd..3d58228c7 100644 --- a/src/app/components/wallet-picker/wallet-picker.component.ts +++ b/src/app/components/wallet-picker/wallet-picker.component.ts @@ -1,6 +1,7 @@ -import { Contact } from "@/models/model"; import { Component, EventEmitter, Input, Output } from "@angular/core"; +import { Contact } from "@/models/model"; + @Component({ selector: "wallet-picker", templateUrl: "wallet-picker.component.html", diff --git a/src/app/components/wallet-picker/wallet-picker.modal.module.ts b/src/app/components/wallet-picker/wallet-picker.modal.module.ts index 84d8e07af..0df09997f 100644 --- a/src/app/components/wallet-picker/wallet-picker.modal.module.ts +++ b/src/app/components/wallet-picker/wallet-picker.modal.module.ts @@ -1,6 +1,8 @@ -import { SharedModule } from "@/app/shared.module"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; + +import { SharedModule } from "@/app/shared.module"; + import { WalletPickerComponentModule } from "./wallet-picker.component.module"; import { WalletPickerModal } from "./wallet-picker.modal"; diff --git a/src/app/components/wallet-picker/wallet-picker.modal.ts b/src/app/components/wallet-picker/wallet-picker.modal.ts index 66fcfb24b..99691b004 100644 --- a/src/app/components/wallet-picker/wallet-picker.modal.ts +++ b/src/app/components/wallet-picker/wallet-picker.modal.ts @@ -1,8 +1,9 @@ +import { Component, OnInit } from "@angular/core"; +import { ModalController } from "@ionic/angular"; + import { Contact, Wallet } from "@/models/model"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component, OnInit } from "@angular/core"; -import { ModalController } from "@ionic/angular"; @Component({ templateUrl: "wallet-picker.modal.html", diff --git a/src/app/directives/directives.module.ts b/src/app/directives/directives.module.ts index 6201b2b52..cab7455d5 100644 --- a/src/app/directives/directives.module.ts +++ b/src/app/directives/directives.module.ts @@ -1,4 +1,5 @@ import { NgModule } from "@angular/core"; + import { HeaderScrollerDirective } from "./header-scroller/header-scroller"; import { MarketNetOnlyDirective } from "./marketnet-only/marketnet-only"; import { ValueMaskOnBlurDirective } from "./value-mask-on-blur/value-mask-on-blur"; diff --git a/src/app/directives/marketnet-only/marketnet-only.ts b/src/app/directives/marketnet-only/marketnet-only.ts index 15dad9f12..a3cbe23e5 100644 --- a/src/app/directives/marketnet-only/marketnet-only.ts +++ b/src/app/directives/marketnet-only/marketnet-only.ts @@ -1,6 +1,7 @@ -import { UserDataProvider } from "@/services/user-data/user-data"; import { Directive, ElementRef, OnInit } from "@angular/core"; +import { UserDataProvider } from "@/services/user-data/user-data"; + @Directive({ selector: "[appMarketNetOnly]", }) diff --git a/src/app/modals/confirm-transaction/confirm-transaction.module.ts b/src/app/modals/confirm-transaction/confirm-transaction.module.ts index 4fd50395c..8679b1966 100644 --- a/src/app/modals/confirm-transaction/confirm-transaction.module.ts +++ b/src/app/modals/confirm-transaction/confirm-transaction.module.ts @@ -1,13 +1,13 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { ConfirmTransactionModal } from "./confirm-transaction"; +import { TranslateModule } from "@ngx-translate/core"; import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; +import { DirectivesModule } from "@/directives/directives.module"; import { PipesModule } from "@/pipes/pipes.module"; -import { TranslateModule } from "@ngx-translate/core"; -import { DirectivesModule } from "@/directives/directives.module"; -import { CommonModule } from "@angular/common"; +import { ConfirmTransactionModal } from "./confirm-transaction"; @NgModule({ declarations: [ConfirmTransactionModal], diff --git a/src/app/modals/confirm-transaction/confirm-transaction.ts b/src/app/modals/confirm-transaction/confirm-transaction.ts index d51852c87..4f8171acd 100644 --- a/src/app/modals/confirm-transaction/confirm-transaction.ts +++ b/src/app/modals/confirm-transaction/confirm-transaction.ts @@ -1,20 +1,18 @@ import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; import { ModalController, NavController } from "@ionic/angular"; import { TranslateService } from "@ngx-translate/core"; +import { Network } from "ark-ts/model"; +import lodash from "lodash"; +import { Subject } from "rxjs"; +import { takeUntil, tap } from "rxjs/operators"; import { MarketCurrency, MarketTicker, Transaction } from "@/models/model"; +import { AddressCheckResult } from "@/services/address-checker/address-check-result"; +import { AddressCheckResultType } from "@/services/address-checker/address-check-result-type"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { MarketDataProvider } from "@/services/market-data/market-data"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { Subject } from "rxjs"; - -import { Network } from "ark-ts/model"; - -import { AddressCheckResult } from "@/services/address-checker/address-check-result"; -import { AddressCheckResultType } from "@/services/address-checker/address-check-result-type"; import { ArkUtility } from "@/utils/ark-utility"; -import lodash from "lodash"; -import { takeUntil, tap } from "rxjs/operators"; @Component({ selector: "modal-confirm-transaction", @@ -115,6 +113,24 @@ export class ConfirmTransactionModal implements OnInit, OnDestroy { this.modalCtrl.dismiss(response); } + ngOnInit() { + this.address = this.transaction.address; + + if (!this.transaction) { + this.navCtrl.pop(); + } + + this.currentNetwork = this.arkApiProvider.network; + + this.onUpdateTicker(); + this.marketDataProvider.refreshTicker(); + } + + ngOnDestroy() { + this.unsubscriber$.next(); + this.unsubscriber$.complete(); + } + private onUpdateTicker() { this.marketDataProvider.onUpdateTicker$ .pipe( @@ -134,22 +150,4 @@ export class ConfirmTransactionModal implements OnInit, OnDestroy { ) .subscribe(); } - - ngOnInit() { - this.address = this.transaction.address; - - if (!this.transaction) { - this.navCtrl.pop(); - } - - this.currentNetwork = this.arkApiProvider.network; - - this.onUpdateTicker(); - this.marketDataProvider.refreshTicker(); - } - - ngOnDestroy() { - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } } diff --git a/src/app/modals/custom-network-create/custom-network-create.module.ts b/src/app/modals/custom-network-create/custom-network-create.module.ts index 88b024e05..e5f19856e 100644 --- a/src/app/modals/custom-network-create/custom-network-create.module.ts +++ b/src/app/modals/custom-network-create/custom-network-create.module.ts @@ -1,9 +1,11 @@ -import { DirectivesModule } from "@/directives/directives.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; + +import { DirectivesModule } from "@/directives/directives.module"; + import { CustomNetworkCreateModal } from "./custom-network-create"; @NgModule({ diff --git a/src/app/modals/custom-network-create/custom-network-create.ts b/src/app/modals/custom-network-create/custom-network-create.ts index a55dee8d2..de22096e4 100644 --- a/src/app/modals/custom-network-create/custom-network-create.ts +++ b/src/app/modals/custom-network-create/custom-network-create.ts @@ -1,5 +1,3 @@ -import { ToastProvider } from "@/services/toast/toast"; -import ArkClient from "@/utils/ark-client"; import { HttpClient } from "@angular/common/http"; import { Component } from "@angular/core"; import { LoadingController, ModalController } from "@ionic/angular"; @@ -7,6 +5,9 @@ import { Network, Peer } from "ark-ts"; import lodash from "lodash"; import { finalize } from "rxjs/operators"; +import { ToastProvider } from "@/services/toast/toast"; +import ArkClient from "@/utils/ark-client"; + @Component({ selector: "customNetworkCreate", templateUrl: "custom-network-create.html", diff --git a/src/app/modals/custom-network-edit/custom-network-edit.module.ts b/src/app/modals/custom-network-edit/custom-network-edit.module.ts index bfd049fd7..1c702fbd4 100644 --- a/src/app/modals/custom-network-edit/custom-network-edit.module.ts +++ b/src/app/modals/custom-network-edit/custom-network-edit.module.ts @@ -1,9 +1,11 @@ -import { DirectivesModule } from "@/directives/directives.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; + +import { DirectivesModule } from "@/directives/directives.module"; + import { CustomNetworkEditModal } from "./custom-network-edit"; @NgModule({ diff --git a/src/app/modals/custom-network-edit/custom-network-edit.ts b/src/app/modals/custom-network-edit/custom-network-edit.ts index 4efe37c2a..698e0f163 100644 --- a/src/app/modals/custom-network-edit/custom-network-edit.ts +++ b/src/app/modals/custom-network-edit/custom-network-edit.ts @@ -1,11 +1,12 @@ -import { StoredNetwork } from "@/models/stored-network"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; import { Component } from "@angular/core"; import { AlertController, ModalController, NavParams } from "@ionic/angular"; import { TranslateService } from "@ngx-translate/core"; import lodash from "lodash"; +import { StoredNetwork } from "@/models/stored-network"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; + export enum EditNetworkAction { Update, Delete, diff --git a/src/app/modals/enter-second-passphrase/enter-second-passphrase.module.ts b/src/app/modals/enter-second-passphrase/enter-second-passphrase.module.ts index 36abaeaf6..5a036bea6 100644 --- a/src/app/modals/enter-second-passphrase/enter-second-passphrase.module.ts +++ b/src/app/modals/enter-second-passphrase/enter-second-passphrase.module.ts @@ -1,10 +1,12 @@ -import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; -import { DirectivesModule } from "@/directives/directives.module"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { FormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; + +import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; +import { DirectivesModule } from "@/directives/directives.module"; + import { EnterSecondPassphraseModal } from "./enter-second-passphrase"; @NgModule({ diff --git a/src/app/modals/generate-entropy/generate-entropy.module.ts b/src/app/modals/generate-entropy/generate-entropy.module.ts index fb457821a..aa78282b6 100644 --- a/src/app/modals/generate-entropy/generate-entropy.module.ts +++ b/src/app/modals/generate-entropy/generate-entropy.module.ts @@ -1,10 +1,11 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { GenerateEntropyModal } from "./generate-entropy"; +import { TranslateModule } from "@ngx-translate/core"; import { ComponentsModule } from "@/components/components.module"; -import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; + +import { GenerateEntropyModal } from "./generate-entropy"; @NgModule({ declarations: [GenerateEntropyModal], diff --git a/src/app/modals/generate-entropy/generate-entropy.ts b/src/app/modals/generate-entropy/generate-entropy.ts index 5b4510ec3..bdcf4bb31 100644 --- a/src/app/modals/generate-entropy/generate-entropy.ts +++ b/src/app/modals/generate-entropy/generate-entropy.ts @@ -5,7 +5,6 @@ import { NavController, NavParams, } from "@ionic/angular"; - import { Crypto } from "ark-ts/utils"; @Component({ diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.module.ts b/src/app/modals/passphrase-word-tester/passphrase-word-tester.module.ts index ae0911d68..b86f762ad 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.module.ts +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.module.ts @@ -1,10 +1,11 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; +import { TranslateModule } from "@ngx-translate/core"; import { PassphraseInputComponentModule } from "@/components/passphrase-input/passphrase-input.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { TranslateModule } from "@ngx-translate/core"; + import { PassphraseWordTesterModal } from "./passphrase-word-tester"; @NgModule({ diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts b/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts index 27e5806cb..602bfe937 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts @@ -1,8 +1,9 @@ -import { PassphraseInputComponent } from "@/components/passphrase-input/passphrase-input"; -import { UserDataProvider } from "@/services/user-data/user-data"; import { Component, Input, ViewChild } from "@angular/core"; import { ModalController, NavController } from "@ionic/angular"; +import { PassphraseInputComponent } from "@/components/passphrase-input/passphrase-input"; +import { UserDataProvider } from "@/services/user-data/user-data"; + @Component({ selector: "modal-passphrase-word-tester", templateUrl: "passphrase-word-tester.html", diff --git a/src/app/modals/pin-code/pin-code.module.ts b/src/app/modals/pin-code/pin-code.module.ts index 735e6fe23..893655eec 100644 --- a/src/app/modals/pin-code/pin-code.module.ts +++ b/src/app/modals/pin-code/pin-code.module.ts @@ -1,12 +1,13 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { PinCodeModal } from "./pin-code"; +import { TranslateModule } from "@ngx-translate/core"; import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; import { DirectivesModule } from "@/directives/directives.module"; import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; + +import { PinCodeModal } from "./pin-code"; @NgModule({ declarations: [PinCodeModal], diff --git a/src/app/modals/pin-code/pin-code.ts b/src/app/modals/pin-code/pin-code.ts index 7f69d6c68..0ba4f6e93 100644 --- a/src/app/modals/pin-code/pin-code.ts +++ b/src/app/modals/pin-code/pin-code.ts @@ -1,4 +1,3 @@ -import { AuthProvider } from "@/services/auth/auth"; import { Component, Input, NgZone, OnDestroy, OnInit } from "@angular/core"; import { Vibration } from "@ionic-native/vibration/ngx"; import { @@ -8,16 +7,14 @@ import { NavParams, Platform, } from "@ionic/angular"; - -import { Subscription, timer } from "rxjs"; - import { TranslateService } from "@ngx-translate/core"; - import lodash from "lodash"; import moment from "moment"; +import { Subscription, timer } from "rxjs"; +import { finalize, map, takeWhile } from "rxjs/operators"; import * as constants from "@/app/app.constants"; -import { finalize, map, takeWhile } from "rxjs/operators"; +import { AuthProvider } from "@/services/auth/auth"; @Component({ selector: "modal-pin-code", @@ -193,6 +190,19 @@ export class PinCodeModal implements OnInit, OnDestroy { this.modalCtrl.dismiss(status); } + ngOnInit() { + this.authProvider + .getAttempts() + .subscribe(attempts => (this.attempts = attempts)); + this.loadUnlockTime(); + } + + ngOnDestroy() { + if (this.unlockCountdown$) { + this.unlockCountdown$.unsubscribe(); + } + } + private loadUnlockTime() { this.authProvider.getUnlockTimestamp().subscribe(timestamp => { if (!timestamp || lodash.isEmpty(timestamp)) { @@ -229,17 +239,4 @@ export class PinCodeModal implements OnInit, OnDestroy { .subscribe(); }); } - - ngOnInit() { - this.authProvider - .getAttempts() - .subscribe(attempts => (this.attempts = attempts)); - this.loadUnlockTime(); - } - - ngOnDestroy() { - if (this.unlockCountdown$) { - this.unlockCountdown$.unsubscribe(); - } - } } diff --git a/src/app/modals/qr-scanner/qr-scanner.module.ts b/src/app/modals/qr-scanner/qr-scanner.module.ts index 65dd97d0c..88e68ed25 100644 --- a/src/app/modals/qr-scanner/qr-scanner.module.ts +++ b/src/app/modals/qr-scanner/qr-scanner.module.ts @@ -1,10 +1,11 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { QRScannerModal } from "./qr-scanner"; +import { TranslateModule } from "@ngx-translate/core"; import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; -import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; + +import { QRScannerModal } from "./qr-scanner"; @NgModule({ declarations: [QRScannerModal], diff --git a/src/app/modals/qr-scanner/qr-scanner.ts b/src/app/modals/qr-scanner/qr-scanner.ts index 8c53629f5..e6050ff3a 100644 --- a/src/app/modals/qr-scanner/qr-scanner.ts +++ b/src/app/modals/qr-scanner/qr-scanner.ts @@ -1,12 +1,11 @@ import { Component, OnDestroy } from "@angular/core"; import { QRScanner, QRScannerStatus } from "@ionic-native/qr-scanner/ngx"; -import { ModalController } from "@ionic/angular"; - -import { ToastProvider } from "@/services/toast/toast"; import { Vibration } from "@ionic-native/vibration/ngx"; +import { ModalController } from "@ionic/angular"; import * as constants from "@/app/app.constants"; import { EventBusProvider } from "@/services/event-bus/event-bus"; +import { ToastProvider } from "@/services/toast/toast"; @Component({ selector: "modal-qr-scanner", @@ -25,6 +24,21 @@ export class QRScannerModal implements OnDestroy { this.scanQrCode(); } + public dismiss(qrCode: object = null) { + this.qrScanner.getStatus().then((status: QRScannerStatus) => { + if (status.showing) { + this.hideCamera(); + } + }); + + this.modalCtrl.dismiss(qrCode); + } + + ngOnDestroy() { + this.hideCamera(); + this.qrScanner.destroy(); + } + private scanQrCode(): void { this.qrScanner .prepare() @@ -83,19 +97,4 @@ export class QRScannerModal implements OnDestroy { this.qrScanner.hide(); this.eventBus.emit("qrScanner:hide"); } - - public dismiss(qrCode: object = null) { - this.qrScanner.getStatus().then((status: QRScannerStatus) => { - if (status.showing) { - this.hideCamera(); - } - }); - - this.modalCtrl.dismiss(qrCode); - } - - ngOnDestroy() { - this.hideCamera(); - this.qrScanner.destroy(); - } } diff --git a/src/app/modals/wallet-backup/wallet-backup.module.ts b/src/app/modals/wallet-backup/wallet-backup.module.ts index e0732c1aa..17393d6dd 100644 --- a/src/app/modals/wallet-backup/wallet-backup.module.ts +++ b/src/app/modals/wallet-backup/wallet-backup.module.ts @@ -1,12 +1,13 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { WalletBackupModal } from "./wallet-backup"; +import { TranslateModule } from "@ngx-translate/core"; import { QRCodeComponentModule } from "@/components/qr-code/qr-code.module"; -import { CommonModule } from "@angular/common"; -import { TranslateModule } from "@ngx-translate/core"; + import { PassphraseWordTesterModal } from "../passphrase-word-tester/passphrase-word-tester"; import { PassphraseWordTesterModalModule } from "../passphrase-word-tester/passphrase-word-tester.module"; +import { WalletBackupModal } from "./wallet-backup"; @NgModule({ declarations: [WalletBackupModal], diff --git a/src/app/modals/wallet-backup/wallet-backup.ts b/src/app/modals/wallet-backup/wallet-backup.ts index 8873711a5..6ba5cfc83 100644 --- a/src/app/modals/wallet-backup/wallet-backup.ts +++ b/src/app/modals/wallet-backup/wallet-backup.ts @@ -1,11 +1,12 @@ import { Component, Input, OnInit } from "@angular/core"; import { ModalController, NavController } from "@ionic/angular"; +import { PrivateKey } from "ark-ts/core"; +import * as bip39 from "bip39"; import { AccountBackup, WalletKeys } from "@/models/model"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { PrivateKey } from "ark-ts/core"; -import * as bip39 from "bip39"; + import { PassphraseWordTesterModal } from "../passphrase-word-tester/passphrase-word-tester"; @Component({ diff --git a/src/app/models/stored-network.ts b/src/app/models/stored-network.ts index 0ba24fa97..20c311880 100644 --- a/src/app/models/stored-network.ts +++ b/src/app/models/stored-network.ts @@ -1,6 +1,7 @@ -import { PeerApiResponse } from "@/utils/ark-client"; import { Network } from "ark-ts"; +import { PeerApiResponse } from "@/utils/ark-client"; + export interface FeeStatistic { type: number; fees: { diff --git a/src/app/models/transaction.ts b/src/app/models/transaction.ts index bd56e6c73..d086cd519 100644 --- a/src/app/models/transaction.ts +++ b/src/app/models/transaction.ts @@ -1,11 +1,11 @@ -import { SafeBigNumber as BigNumber } from "@/utils/bignumber"; +import { Interfaces } from "@arkecosystem/crypto"; import { Transaction as TransactionModel, TransactionType } from "ark-ts/model"; import moment from "moment"; +import { TRANSACTION_GROUPS, TRANSACTION_TYPES } from "@/app/app.constants"; import { MarketCurrency, MarketHistory, MarketTicker } from "@/models/market"; +import { SafeBigNumber as BigNumber } from "@/utils/bignumber"; -import { TRANSACTION_GROUPS, TRANSACTION_TYPES } from "@/app/app.constants"; -import { Interfaces } from "@arkecosystem/crypto"; import { ArkUtility } from "../utils/ark-utility"; const TX_TYPES = { @@ -225,7 +225,7 @@ export class Transaction extends TransactionModel { isUnvote(): boolean { if (this.asset && this.asset.votes) { const vote = this.asset.votes[0]; - return vote.charAt(0) === "-"; + return vote.startsWith("-"); } return false; } diff --git a/src/app/models/wallet.ts b/src/app/models/wallet.ts index 1cde1b9de..1f5792cc7 100644 --- a/src/app/models/wallet.ts +++ b/src/app/models/wallet.ts @@ -1,10 +1,9 @@ import { Account } from "ark-ts/model"; +import * as constants from "@/app/app.constants"; import { MarketCurrency } from "@/models/market"; import { Transaction } from "@/models/transaction"; -import * as constants from "@/app/app.constants"; - export interface QRCodeScheme { address?: string; amount?: string; diff --git a/src/app/pages/contacts/contact-create/contact-create.module.ts b/src/app/pages/contacts/contact-create/contact-create.module.ts index e72d5f2f8..91c037ea8 100644 --- a/src/app/pages/contacts/contact-create/contact-create.module.ts +++ b/src/app/pages/contacts/contact-create/contact-create.module.ts @@ -1,14 +1,14 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { ContactCreatePage } from "./contact-create"; - -import { DirectivesModule } from "@/directives/directives.module"; import { TranslateModule } from "@ngx-translate/core"; import { QRScannerComponentModule } from "@/components/qr-scanner/qr-scanner.module"; -import { FormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; +import { DirectivesModule } from "@/directives/directives.module"; + +import { ContactCreatePage } from "./contact-create"; @NgModule({ declarations: [ContactCreatePage], diff --git a/src/app/pages/contacts/contact-create/contact-create.ts b/src/app/pages/contacts/contact-create/contact-create.ts index eff5ab87b..5c6a91649 100644 --- a/src/app/pages/contacts/contact-create/contact-create.ts +++ b/src/app/pages/contacts/contact-create/contact-create.ts @@ -1,19 +1,16 @@ import { Component, OnInit, ViewChild } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; import { AlertController, NavController } from "@ionic/angular"; - -import { ContactsProvider } from "@/services/contacts/contacts"; -import { UserDataProvider } from "@/services/user-data/user-data"; - -import { QRCodeScheme } from "@/models/model"; +import { TranslateService } from "@ngx-translate/core"; import { PublicKey } from "ark-ts/core"; +import lodash from "lodash"; import { QRScannerComponent } from "@/components/qr-scanner/qr-scanner"; - +import { QRCodeScheme } from "@/models/model"; import { TranslatableObject } from "@/models/translate"; +import { ContactsProvider } from "@/services/contacts/contacts"; import { ToastProvider } from "@/services/toast/toast"; -import { ActivatedRoute } from "@angular/router"; -import { TranslateService } from "@ngx-translate/core"; -import lodash from "lodash"; +import { UserDataProvider } from "@/services/user-data/user-data"; @Component({ selector: "page-contact-create", @@ -111,14 +108,6 @@ export class ContactCreatePage implements OnInit { } } - private closeAndLoadContactList = (): void => { - this.navCtrl.navigateForward("/contacts", { replaceUrl: true }); - }; - - private showErrorMessage = (error: TranslatableObject): void => { - this.toastProvider.error(error, 5000); - }; - scanQRCode() { this.qrScanner.open(true); } @@ -135,6 +124,14 @@ export class ContactCreatePage implements OnInit { } } + private closeAndLoadContactList = (): void => { + this.navCtrl.navigateForward("/contacts", { replaceUrl: true }); + }; + + private showErrorMessage = (error: TranslatableObject): void => { + this.toastProvider.error(error, 5000); + }; + private showConfirmation( titleKey: string, stringParams: any, diff --git a/src/app/pages/contacts/contact-list/contact-list.module.ts b/src/app/pages/contacts/contact-list/contact-list.module.ts index 515a5d407..9ff994b49 100644 --- a/src/app/pages/contacts/contact-list/contact-list.module.ts +++ b/src/app/pages/contacts/contact-list/contact-list.module.ts @@ -1,12 +1,13 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { ContactListPage } from "./contact-list"; +import { TranslateModule } from "@ngx-translate/core"; import { AddressListComponentModule } from "@/components/address-list/address-list.module"; import { EmptyListComponentModule } from "@/components/empty-list/empty-list.module"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; + +import { ContactListPage } from "./contact-list"; @NgModule({ declarations: [ContactListPage], diff --git a/src/app/pages/contacts/contact-list/contact-list.ts b/src/app/pages/contacts/contact-list/contact-list.ts index bbee6fda3..e4afeb10b 100644 --- a/src/app/pages/contacts/contact-list/contact-list.ts +++ b/src/app/pages/contacts/contact-list/contact-list.ts @@ -4,17 +4,14 @@ import { AlertController, NavController, } from "@ionic/angular"; - -import { ContactsProvider } from "@/services/contacts/contacts"; -import { UserDataProvider } from "@/services/user-data/user-data"; - import { TranslateService } from "@ngx-translate/core"; - +import lodash from "lodash"; import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; import { AddressMap } from "@/models/contact"; -import lodash from "lodash"; -import { takeUntil } from "rxjs/operators"; +import { ContactsProvider } from "@/services/contacts/contacts"; +import { UserDataProvider } from "@/services/user-data/user-data"; @Component({ selector: "page-contact-list", diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts index d0bae1745..4aee2126d 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.module.ts @@ -1,6 +1,5 @@ import { NgModule } from "@angular/core"; import { IonicModule } from "@ionic/angular"; -import { DelegateDetailPage } from "./delegate-detail"; import { SharedModule } from "@/app/shared.module"; import { ClosePopupComponentModule } from "@/components/close-popup/close-popup.module"; @@ -8,6 +7,8 @@ import { InputFeeComponentModule } from "@/components/input-fee/input-fee.module import { QRCodeComponentModule } from "@/components/qr-code/qr-code.module"; import { PipesModule } from "@/pipes/pipes.module"; +import { DelegateDetailPage } from "./delegate-detail"; + @NgModule({ declarations: [DelegateDetailPage], imports: [ diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.ts index b85f39bfe..2203be58f 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.ts @@ -1,22 +1,20 @@ import { Component } from "@angular/core"; +import { FormGroup } from "@angular/forms"; +import { Clipboard } from "@ionic-native/clipboard/ngx"; import { AlertController, ModalController, NavController, NavParams, } from "@ionic/angular"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { TranslateService } from "@ngx-translate/core"; import { Delegate, Network, TransactionType } from "ark-ts"; +import lodash from "lodash"; import { Wallet } from "@/models/wallet"; - +import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ToastProvider } from "@/services/toast/toast"; -import { FormGroup } from "@angular/forms"; -import { Clipboard } from "@ionic-native/clipboard/ngx"; -import { TranslateService } from "@ngx-translate/core"; -import lodash from "lodash"; +import { UserDataProvider } from "@/services/user-data/user-data"; @Component({ selector: "page-delegate-detail", diff --git a/src/app/pages/delegates/delegates.module.ts b/src/app/pages/delegates/delegates.module.ts index 636eae23d..ff35914c3 100644 --- a/src/app/pages/delegates/delegates.module.ts +++ b/src/app/pages/delegates/delegates.module.ts @@ -1,18 +1,18 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { DelegatesPage } from "./delegates"; - -import { PipesModule } from "@/pipes/pipes.module"; import { TranslateModule } from "@ngx-translate/core"; import { FilterPipeModule } from "ngx-filter-pipe"; import { ConfirmTransactionComponentModule } from "@/components/confirm-transaction/confirm-transaction.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; -import { FormsModule } from "@angular/forms"; +import { PipesModule } from "@/pipes/pipes.module"; + import { DelegateDetailPage } from "./delegate-detail/delegate-detail"; import { DelegateDetailPageModule } from "./delegate-detail/delegate-detail.module"; +import { DelegatesPage } from "./delegates"; @NgModule({ declarations: [DelegatesPage], diff --git a/src/app/pages/delegates/delegates.ts b/src/app/pages/delegates/delegates.ts index b1b88d40e..f97eae3bb 100644 --- a/src/app/pages/delegates/delegates.ts +++ b/src/app/pages/delegates/delegates.ts @@ -6,20 +6,19 @@ import { NavController, Platform, } from "@ionic/angular"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; import { Delegate, TransactionVote, VoteType } from "ark-ts"; import { Subject } from "rxjs"; - -import { Wallet, WalletKeys } from "@/models/model"; -import { StoredNetwork } from "@/models/stored-network"; +import { takeUntil, tap } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { ConfirmTransactionComponent } from "@/components/confirm-transaction/confirm-transaction"; import { PinCodeComponent } from "@/components/pin-code/pin-code"; -import { takeUntil, tap } from "rxjs/operators"; +import { Wallet, WalletKeys } from "@/models/model"; +import { StoredNetwork } from "@/models/stored-network"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; + import { DelegateDetailPage } from "./delegate-detail/delegate-detail"; @Component({ @@ -57,11 +56,11 @@ export class DelegatesPage implements OnDestroy { public rankStatus = "active"; public currentNetwork: StoredNetwork; public slides: string[] = ["active", "standBy"]; + public currentWallet: Wallet; private selectedDelegate: Delegate; private selectedFee: number; - public currentWallet: Wallet; private walletVote: Delegate; private unsubscriber$: Subject = new Subject(); @@ -166,37 +165,6 @@ export class DelegatesPage implements OnDestroy { }); } - private fetchCurrentVote() { - if (!this.currentWallet) { - return; - } - - this.arkApiProvider.client - .getWalletVotes(this.currentWallet.address) - .pipe(takeUntil(this.unsubscriber$)) - .subscribe( - data => { - if (data.success && data.delegates.length > 0) { - this.walletVote = data.delegates[0]; - } - }, - () => { - this.toastProvider.error("DELEGATES_PAGE.VOTE_FETCH_ERROR"); - }, - ); - } - - private onUpdateDelegates() { - this.arkApiProvider.onUpdateDelegates$ - .pipe( - takeUntil(this.unsubscriber$), - tap(delegates => { - this.zone.run(() => (this.delegates = delegates)); - }), - ) - .subscribe(); - } - ionViewDidEnter() { this.currentNetwork = this.arkApiProvider.network; this.currentWallet = this.userDataProvider.currentWallet; @@ -233,4 +201,35 @@ export class DelegatesPage implements OnDestroy { this.unsubscriber$.next(); this.unsubscriber$.complete(); } + + private fetchCurrentVote() { + if (!this.currentWallet) { + return; + } + + this.arkApiProvider.client + .getWalletVotes(this.currentWallet.address) + .pipe(takeUntil(this.unsubscriber$)) + .subscribe( + data => { + if (data.success && data.delegates.length > 0) { + this.walletVote = data.delegates[0]; + } + }, + () => { + this.toastProvider.error("DELEGATES_PAGE.VOTE_FETCH_ERROR"); + }, + ); + } + + private onUpdateDelegates() { + this.arkApiProvider.onUpdateDelegates$ + .pipe( + takeUntil(this.unsubscriber$), + tap(delegates => { + this.zone.run(() => (this.delegates = delegates)); + }), + ) + .subscribe(); + } } diff --git a/src/app/pages/intro/intro.module.ts b/src/app/pages/intro/intro.module.ts index 9929d5789..6c8c8ce2a 100644 --- a/src/app/pages/intro/intro.module.ts +++ b/src/app/pages/intro/intro.module.ts @@ -1,9 +1,10 @@ import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { IntroPage } from "./intro"; import { SharedModule } from "@/app/shared.module"; -import { RouterModule } from "@angular/router"; + +import { IntroPage } from "./intro"; @NgModule({ declarations: [IntroPage], diff --git a/src/app/pages/intro/intro.spec.ts b/src/app/pages/intro/intro.spec.ts index 95287110c..7f4a6711d 100644 --- a/src/app/pages/intro/intro.spec.ts +++ b/src/app/pages/intro/intro.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture } from "@angular/core/testing"; import { TestHelpers } from "@@/test/helpers"; + import { IntroPage } from "./intro"; describe("IntroPage", () => { diff --git a/src/app/pages/intro/intro.ts b/src/app/pages/intro/intro.ts index 272c2b802..d68552f73 100644 --- a/src/app/pages/intro/intro.ts +++ b/src/app/pages/intro/intro.ts @@ -1,8 +1,8 @@ import { Component, ViewChild } from "@angular/core"; import { IonSlides, NavController, Platform } from "@ionic/angular"; +import { TranslateService } from "@ngx-translate/core"; import { AuthProvider } from "@/services/auth/auth"; -import { TranslateService } from "@ngx-translate/core"; @Component({ selector: "page-intro", diff --git a/src/app/pages/login/login.module.ts b/src/app/pages/login/login.module.ts index 76ce7afc8..5d51dd470 100644 --- a/src/app/pages/login/login.module.ts +++ b/src/app/pages/login/login.module.ts @@ -1,10 +1,11 @@ import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { LoginPage } from "./login"; import { SharedModule } from "@/app/shared.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; -import { RouterModule } from "@angular/router"; + +import { LoginPage } from "./login"; @NgModule({ declarations: [LoginPage], diff --git a/src/app/pages/login/login.ts b/src/app/pages/login/login.ts index b67d7e01f..4a9446b37 100644 --- a/src/app/pages/login/login.ts +++ b/src/app/pages/login/login.ts @@ -1,9 +1,9 @@ +import { Component, OnInit, ViewChild } from "@angular/core"; +import { isNil } from "lodash"; + import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { AuthProvider } from "@/services/auth/auth"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component, OnInit, ViewChild } from "@angular/core"; - -import { isNil } from "lodash"; @Component({ selector: "page-login", diff --git a/src/app/pages/network/network-overview/network-overview.module.ts b/src/app/pages/network/network-overview/network-overview.module.ts index 8c4e61540..08253195d 100644 --- a/src/app/pages/network/network-overview/network-overview.module.ts +++ b/src/app/pages/network/network-overview/network-overview.module.ts @@ -1,3 +1,7 @@ +import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; +import { IonicModule } from "@ionic/angular"; + import { CustomNetworkCreateModal } from "@/app/modals/custom-network-create/custom-network-create"; import { CustomNetworkCreateModalModule } from "@/app/modals/custom-network-create/custom-network-create.module"; import { CustomNetworkEditModal } from "@/app/modals/custom-network-edit/custom-network-edit"; @@ -5,9 +9,7 @@ import { CustomNetworkEditModalModule } from "@/app/modals/custom-network-edit/c import { SharedModule } from "@/app/shared.module"; import { AddressListComponentModule } from "@/components/address-list/address-list.module"; import { EmptyListComponentModule } from "@/components/empty-list/empty-list.module"; -import { NgModule } from "@angular/core"; -import { RouterModule } from "@angular/router"; -import { IonicModule } from "@ionic/angular"; + import { NetworkOverviewPage } from "./network-overview.page"; @NgModule({ diff --git a/src/app/pages/network/network-overview/network-overview.page.ts b/src/app/pages/network/network-overview/network-overview.page.ts index 6353c5e5a..353d6b341 100644 --- a/src/app/pages/network/network-overview/network-overview.page.ts +++ b/src/app/pages/network/network-overview/network-overview.page.ts @@ -1,3 +1,9 @@ +import { Component } from "@angular/core"; +import { ActionSheetController, ModalController } from "@ionic/angular"; +import { TranslateService } from "@ngx-translate/core"; +import { NetworkType } from "ark-ts"; +import lodash from "lodash"; + import { CustomNetworkCreateModal } from "@/app/modals/custom-network-create/custom-network-create"; import { CustomNetworkEditModal, @@ -6,11 +12,6 @@ import { import { AddressMap, StoredNetwork } from "@/models/model"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component } from "@angular/core"; -import { ActionSheetController, ModalController } from "@ionic/angular"; -import { TranslateService } from "@ngx-translate/core"; -import { NetworkType } from "ark-ts"; -import lodash from "lodash"; @Component({ templateUrl: "network-overview.page.html", @@ -88,6 +89,14 @@ export class NetworkOverviewPage { modal.present(); } + isEmpty() { + return lodash.isEmpty(this.networksMap); + } + + ionViewWillEnter() { + this.load(); + } + private async openEditNetworkDialog( networkId: string, network: StoredNetwork, @@ -116,12 +125,4 @@ export class NetworkOverviewPage { modal.present(); } - - isEmpty() { - return lodash.isEmpty(this.networksMap); - } - - ionViewWillEnter() { - this.load(); - } } diff --git a/src/app/pages/network/network-status/network-status.module.ts b/src/app/pages/network/network-status/network-status.module.ts index 343444e8c..6cbe89d75 100644 --- a/src/app/pages/network/network-status/network-status.module.ts +++ b/src/app/pages/network/network-status/network-status.module.ts @@ -1,11 +1,11 @@ -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; -import { NetworkStatusPage } from "./network-status"; - import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; import { RouterModule } from "@angular/router"; +import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; +import { NetworkStatusPage } from "./network-status"; + @NgModule({ declarations: [NetworkStatusPage], imports: [ diff --git a/src/app/pages/network/network-status/network-status.ts b/src/app/pages/network/network-status/network-status.ts index d4fa10e63..6bb6d2b00 100644 --- a/src/app/pages/network/network-status/network-status.ts +++ b/src/app/pages/network/network-status/network-status.ts @@ -1,14 +1,12 @@ import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; import { LoadingController } from "@ionic/angular"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { Subject, throwError } from "rxjs"; - +import { TranslateService } from "@ngx-translate/core"; import { Network, Peer } from "ark-ts"; +import { Subject, throwError } from "rxjs"; +import { catchError, debounceTime, takeUntil, tap } from "rxjs/operators"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ToastProvider } from "@/services/toast/toast"; -import { TranslateService } from "@ngx-translate/core"; -import { catchError, debounceTime, takeUntil, tap } from "rxjs/operators"; @Component({ selector: "page-network-status", @@ -67,6 +65,22 @@ export class NetworkStatusPage implements OnInit, OnDestroy { }); } + ngOnInit() { + this.onUpdatePeer(); + this.refreshData(); + + this.refreshIntervalListener = setInterval(() => { + this.refreshData(); + }, 30 * 1000); + } + + ngOnDestroy() { + clearInterval(this.refreshIntervalListener); + + this.unsubscriber$.next(); + this.unsubscriber$.complete(); + } + private refreshData() { this.arkApiProvider.client .getPeerConfig(this.currentPeer.ip, this.currentNetwork.p2pPort) @@ -110,20 +124,4 @@ export class NetworkStatusPage implements OnInit, OnDestroy { ) .subscribe(); } - - ngOnInit() { - this.onUpdatePeer(); - this.refreshData(); - - this.refreshIntervalListener = setInterval(() => { - this.refreshData(); - }, 30 * 1000); - } - - ngOnDestroy() { - clearInterval(this.refreshIntervalListener); - - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } } diff --git a/src/app/pages/profiles/profile-create/profile-create.module.ts b/src/app/pages/profiles/profile-create/profile-create.module.ts index 29f903a62..b23219da1 100644 --- a/src/app/pages/profiles/profile-create/profile-create.module.ts +++ b/src/app/pages/profiles/profile-create/profile-create.module.ts @@ -1,13 +1,14 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { ProfileCreatePage } from "./profile-create"; +import { TranslateModule } from "@ngx-translate/core"; import { CustomNetworkComponentModule } from "@/components/custom-network/custom-network.module"; import { DirectivesModule } from "@/directives/directives.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; + +import { ProfileCreatePage } from "./profile-create"; @NgModule({ declarations: [ProfileCreatePage], diff --git a/src/app/pages/profiles/profile-create/profile-create.ts b/src/app/pages/profiles/profile-create/profile-create.ts index 788fd022e..0c7abb59b 100644 --- a/src/app/pages/profiles/profile-create/profile-create.ts +++ b/src/app/pages/profiles/profile-create/profile-create.ts @@ -1,15 +1,14 @@ import { Component, OnDestroy, ViewChild } from "@angular/core"; import { AlertController, NavController } from "@ionic/angular"; - +import { TranslateService } from "@ngx-translate/core"; +import { Network } from "ark-ts/model"; +import lodash from "lodash"; import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; import { Profile } from "@/models/profile"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { TranslateService } from "@ngx-translate/core"; -import { Network } from "ark-ts/model"; -import lodash from "lodash"; -import { takeUntil } from "rxjs/operators"; @Component({ selector: "page-profile-create", diff --git a/src/app/pages/profiles/profile-signin/profile-signin.module.ts b/src/app/pages/profiles/profile-signin/profile-signin.module.ts index e87257996..d0ed25653 100644 --- a/src/app/pages/profiles/profile-signin/profile-signin.module.ts +++ b/src/app/pages/profiles/profile-signin/profile-signin.module.ts @@ -1,13 +1,14 @@ import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { ProfileSigninPage } from "./profile-signin"; +import { TranslateModule } from "@ngx-translate/core"; import { AddressListComponentModule } from "@/components/address-list/address-list.module"; import { EmptyListComponentModule } from "@/components/empty-list/empty-list.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; + +import { ProfileSigninPage } from "./profile-signin"; @NgModule({ declarations: [ProfileSigninPage], diff --git a/src/app/pages/profiles/profile-signin/profile-signin.ts b/src/app/pages/profiles/profile-signin/profile-signin.ts index ec4d4bbbd..ce0aac342 100644 --- a/src/app/pages/profiles/profile-signin/profile-signin.ts +++ b/src/app/pages/profiles/profile-signin/profile-signin.ts @@ -4,23 +4,20 @@ import { AlertController, NavController, } from "@ionic/angular"; - -import { Subject } from "rxjs"; - -import { AuthProvider } from "@/services/auth/auth"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; - -import { TranslateService } from "@ngx-translate/core"; - -import { PinCodeComponent } from "@/components/pin-code/pin-code"; -import { AddressMap } from "@/models/model"; import { Platform } from "@ionic/angular"; +import { TranslateService } from "@ngx-translate/core"; import { PublicKey } from "ark-ts/core"; import { NetworkType } from "ark-ts/model"; import lodash from "lodash"; +import { Subject } from "rxjs"; import { takeUntil } from "rxjs/operators"; +import { PinCodeComponent } from "@/components/pin-code/pin-code"; +import { AddressMap } from "@/models/model"; +import { AuthProvider } from "@/services/auth/auth"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; + @Component({ selector: "page-profile-signin", templateUrl: "profile-signin.html", diff --git a/src/app/pages/settings/settings.module.ts b/src/app/pages/settings/settings.module.ts index af8119110..1a66ce85f 100644 --- a/src/app/pages/settings/settings.module.ts +++ b/src/app/pages/settings/settings.module.ts @@ -1,14 +1,15 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { SettingsPage } from "./settings"; +import { TranslateModule } from "@ngx-translate/core"; import { CustomNetworkCreateModal } from "@/app/modals/custom-network-create/custom-network-create"; import { CustomNetworkCreateModalModule } from "@/app/modals/custom-network-create/custom-network-create.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; + +import { SettingsPage } from "./settings"; @NgModule({ declarations: [SettingsPage], diff --git a/src/app/pages/settings/settings.ts b/src/app/pages/settings/settings.ts index e0907755f..099830b73 100644 --- a/src/app/pages/settings/settings.ts +++ b/src/app/pages/settings/settings.ts @@ -6,18 +6,15 @@ import { NavController, Platform, } from "@ionic/angular"; - -import { Subject } from "rxjs"; - import { TranslateService } from "@ngx-translate/core"; - -import { PinCodeComponent } from "@/components/pin-code/pin-code"; -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; +import { Subject } from "rxjs"; +import { takeUntil, tap } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; +import { PinCodeComponent } from "@/components/pin-code/pin-code"; +import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { takeUntil, tap } from "rxjs/operators"; const packageJson = require("@@/package.json"); @@ -118,11 +115,6 @@ export class SettingsPage implements OnInit, OnDestroy { }); } - private clearData() { - this.settingsDataProvider.clearData(); - this.navCtrl.navigateRoot("/intro"); - } - onUpdate() { this.settingsDataProvider.save(this.currentSettings); } @@ -147,4 +139,9 @@ export class SettingsPage implements OnInit, OnDestroy { this.unsubscriber$.next(); this.unsubscriber$.complete(); } + + private clearData() { + this.settingsDataProvider.clearData(); + this.navCtrl.navigateRoot("/intro"); + } } diff --git a/src/app/pages/transaction/transaction-receive/transaction-receive.module.ts b/src/app/pages/transaction/transaction-receive/transaction-receive.module.ts index 43887514a..69e0284dc 100644 --- a/src/app/pages/transaction/transaction-receive/transaction-receive.module.ts +++ b/src/app/pages/transaction/transaction-receive/transaction-receive.module.ts @@ -1,13 +1,14 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { TransactionReceivePage } from "./transaction-receive"; +import { TranslateModule } from "@ngx-translate/core"; import { InputAmountComponentModule } from "@/components/input-amount/input-amount.module"; import { QRCodeComponentModule } from "@/components/qr-code/qr-code.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; + +import { TransactionReceivePage } from "./transaction-receive"; @NgModule({ declarations: [TransactionReceivePage], diff --git a/src/app/pages/transaction/transaction-receive/transaction-receive.ts b/src/app/pages/transaction/transaction-receive/transaction-receive.ts index 189d5ea38..8f12bcc8a 100644 --- a/src/app/pages/transaction/transaction-receive/transaction-receive.ts +++ b/src/app/pages/transaction/transaction-receive/transaction-receive.ts @@ -1,12 +1,12 @@ import { Component, OnInit } from "@angular/core"; +import { FormControl, FormGroup } from "@angular/forms"; +import { ActivatedRoute } from "@angular/router"; import { Clipboard } from "@ionic-native/clipboard/ngx"; +import { SocialSharing } from "@ionic-native/social-sharing/ngx"; import { NavController } from "@ionic/angular"; import { ToastProvider } from "@/services/toast/toast"; import BigNumber from "@/utils/bignumber"; -import { FormControl, FormGroup } from "@angular/forms"; -import { ActivatedRoute } from "@angular/router"; -import { SocialSharing } from "@ionic-native/social-sharing/ngx"; @Component({ selector: "page-transaction-receive", diff --git a/src/app/pages/transaction/transaction-response/transaction-response.module.ts b/src/app/pages/transaction/transaction-response/transaction-response.module.ts index 52f31f80f..c384c10cb 100644 --- a/src/app/pages/transaction/transaction-response/transaction-response.module.ts +++ b/src/app/pages/transaction/transaction-response/transaction-response.module.ts @@ -1,11 +1,11 @@ -import { NgModule } from "@angular/core"; -import { IonicModule } from "@ionic/angular"; -import { TransactionResponsePage } from "./transaction-response"; - import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; import { RouterModule } from "@angular/router"; +import { IonicModule } from "@ionic/angular"; import { TranslateModule } from "@ngx-translate/core"; +import { TransactionResponsePage } from "./transaction-response"; + @NgModule({ declarations: [TransactionResponsePage], imports: [ diff --git a/src/app/pages/transaction/transaction-response/transaction-response.ts b/src/app/pages/transaction/transaction-response/transaction-response.ts index b92fdeefa..6de7c0c96 100644 --- a/src/app/pages/transaction/transaction-response/transaction-response.ts +++ b/src/app/pages/transaction/transaction-response/transaction-response.ts @@ -1,15 +1,13 @@ import { Component } from "@angular/core"; -import { ModalController, NavController } from "@ionic/angular"; - +import { ActivatedRoute } from "@angular/router"; import { Clipboard } from "@ionic-native/clipboard/ngx"; import { InAppBrowser } from "@ionic-native/in-app-browser/ngx"; +import { ModalController, NavController } from "@ionic/angular"; +import { StoredNetwork, Transaction, Wallet } from "@/models/model"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { StoredNetwork, Transaction, Wallet } from "@/models/model"; -import { ActivatedRoute } from "@angular/router"; - @Component({ selector: "page-transaction-response", templateUrl: "transaction-response.html", diff --git a/src/app/pages/transaction/transaction-send/transaction-send.module.ts b/src/app/pages/transaction/transaction-send/transaction-send.module.ts index 7aca4977f..58d7c0de1 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.module.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.module.ts @@ -1,22 +1,21 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { TransactionSendPage } from "./transaction-send"; +import { TranslateModule } from "@ngx-translate/core"; import { ConfirmTransactionComponentModule } from "@/components/confirm-transaction/confirm-transaction.module"; +import { InputAddressComponentModule } from "@/components/input-address/input-address.module"; +import { InputAmountComponentModule } from "@/components/input-amount/input-amount.module"; import { InputFeeComponentModule } from "@/components/input-fee/input-fee.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; import { QRScannerComponentModule } from "@/components/qr-scanner/qr-scanner.module"; -import { PipesModule } from "@/pipes/pipes.module"; -import { TranslateModule } from "@ngx-translate/core"; - +import { WalletPickerModalModule } from "@/components/wallet-picker/wallet-picker.modal.module"; import { DirectivesModule } from "@/directives/directives.module"; +import { PipesModule } from "@/pipes/pipes.module"; -import { InputAddressComponentModule } from "@/components/input-address/input-address.module"; -import { InputAmountComponentModule } from "@/components/input-amount/input-amount.module"; -import { WalletPickerModalModule } from "@/components/wallet-picker/wallet-picker.modal.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; +import { TransactionSendPage } from "./transaction-send"; @NgModule({ declarations: [TransactionSendPage], diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index fe60aeb5e..06247f228 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -1,41 +1,37 @@ import { Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core"; import { FormControl, FormGroup, Validators } from "@angular/forms"; +import { ActivatedRoute } from "@angular/router"; import { IonRouterOutlet, LoadingController, ModalController, } from "@ionic/angular"; - -import { - QRCodeScheme, - StoredNetwork, - Wallet, - WalletKeys, -} from "@/models/model"; - -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; - +import { TranslateService } from "@ngx-translate/core"; +import { TransactionSend, TransactionType } from "ark-ts"; import { PublicKey } from "ark-ts/core"; import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { ConfirmTransactionComponent } from "@/components/confirm-transaction/confirm-transaction"; import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { QRScannerComponent } from "@/components/qr-scanner/qr-scanner"; -import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; -import { TransactionSend, TransactionType } from "ark-ts"; - import { WalletPickerModal } from "@/components/wallet-picker/wallet-picker.modal"; +import { + QRCodeScheme, + StoredNetwork, + Wallet, + WalletKeys, +} from "@/models/model"; import { TranslatableObject } from "@/models/translate"; +import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; import { AddressCheckResult } from "@/services/address-checker/address-check-result"; import { AddressCheckerProvider } from "@/services/address-checker/address-checker"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; import { ArkUtility } from "@/utils/ark-utility"; import { SafeBigNumber } from "@/utils/bignumber"; -import { ActivatedRoute } from "@angular/router"; -import { TranslateService } from "@ngx-translate/core"; -import { takeUntil } from "rxjs/operators"; class CombinedResult { public checkerDone: boolean; @@ -192,34 +188,6 @@ export class TransactionSendPage implements OnInit, OnDestroy { }); } - private validAddress(): boolean { - const recipientId = this.sendForm.get("recipientId").value; - const isValid = PublicKey.validateAddress( - recipientId, - this.currentNetwork, - ); - - this.sendForm.controls.recipientId.setErrors({ - incorrect: !isValid, - }); - - return isValid; - } - - private validForm(): boolean { - let isValid = true; - if ( - !this.sendForm.controls.amount.value || - this.sendForm.controls.amount.value <= 0 || - (this.sendForm.controls.vendorField.value || "").length > - this.vendorFieldLength - ) { - isValid = false; - } - - return isValid; - } - scanQRCode() { this.qrScanner.open(true); } @@ -244,52 +212,10 @@ export class TransactionSendPage implements OnInit, OnDestroy { }); } - private createTransactionAndShowConfirm(result: CombinedResult) { - if (!result.pinCodeDone) { - return; - } - - if (!result.checkerDone) { - result.loader.present(); - return; - } - - result.loader.dismiss(); - const amount = this.sendForm.get("amount").value; - const data: TransactionSend = { - amount: new SafeBigNumber(amount) - .times(constants.WALLET_UNIT_TO_SATOSHI) - .toNumber(), - vendorField: this.sendForm.get("vendorField").value, - passphrase: result.keys.key, - secondPassphrase: result.keys.secondKey, - recipientId: this.sendForm.get("recipientId").value, - fee: this.fee, - }; - this.arkApiProvider.transactionBuilder - .createTransaction(data) - .subscribe( - transaction => { - // The transaction will be signed again; - this.confirmTransaction.open( - transaction, - result.keys, - result.checkerResult, - ); - }, - () => { - this.toastProvider.error( - "TRANSACTIONS_PAGE.CREATE_TRANSACTION_ERROR", - ); - this.hasNotSent(); - }, - ); - } - onScanQRCode(qrCode: QRCodeScheme) { if (qrCode.address) { const amount = Number(qrCode.amount); - if (!!amount) { + if (amount) { this.sendForm.controls.amount.setValue(amount); } if (qrCode.vendorField) { @@ -345,4 +271,74 @@ export class TransactionSendPage implements OnInit, OnDestroy { public onFeeError(hasError: boolean) { this.hasFeeError = hasError; } + + private validAddress(): boolean { + const recipientId = this.sendForm.get("recipientId").value; + const isValid = PublicKey.validateAddress( + recipientId, + this.currentNetwork, + ); + + this.sendForm.controls.recipientId.setErrors({ + incorrect: !isValid, + }); + + return isValid; + } + + private validForm(): boolean { + let isValid = true; + if ( + !this.sendForm.controls.amount.value || + this.sendForm.controls.amount.value <= 0 || + (this.sendForm.controls.vendorField.value || "").length > + this.vendorFieldLength + ) { + isValid = false; + } + + return isValid; + } + + private createTransactionAndShowConfirm(result: CombinedResult) { + if (!result.pinCodeDone) { + return; + } + + if (!result.checkerDone) { + result.loader.present(); + return; + } + + result.loader.dismiss(); + const amount = this.sendForm.get("amount").value; + const data: TransactionSend = { + amount: new SafeBigNumber(amount) + .times(constants.WALLET_UNIT_TO_SATOSHI) + .toNumber(), + vendorField: this.sendForm.get("vendorField").value, + passphrase: result.keys.key, + secondPassphrase: result.keys.secondKey, + recipientId: this.sendForm.get("recipientId").value, + fee: this.fee, + }; + this.arkApiProvider.transactionBuilder + .createTransaction(data) + .subscribe( + transaction => { + // The transaction will be signed again; + this.confirmTransaction.open( + transaction, + result.keys, + result.checkerResult, + ); + }, + () => { + this.toastProvider.error( + "TRANSACTIONS_PAGE.CREATE_TRANSACTION_ERROR", + ); + this.hasNotSent(); + }, + ); + } } diff --git a/src/app/pages/transaction/transaction-show/transaction-show.module.ts b/src/app/pages/transaction/transaction-show/transaction-show.module.ts index 0833ca097..659625ffa 100644 --- a/src/app/pages/transaction/transaction-show/transaction-show.module.ts +++ b/src/app/pages/transaction/transaction-show/transaction-show.module.ts @@ -1,13 +1,13 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { TransactionShowPage } from "./transaction-show"; - -import { PipesModule } from "@/pipes/pipes.module"; import { TranslateModule } from "@ngx-translate/core"; import { DirectivesModule } from "@/directives/directives.module"; -import { CommonModule } from "@angular/common"; -import { RouterModule } from "@angular/router"; +import { PipesModule } from "@/pipes/pipes.module"; + +import { TransactionShowPage } from "./transaction-show"; @NgModule({ declarations: [TransactionShowPage], diff --git a/src/app/pages/transaction/transaction-show/transaction-show.ts b/src/app/pages/transaction/transaction-show/transaction-show.ts index 11ee691ed..3438b780b 100644 --- a/src/app/pages/transaction/transaction-show/transaction-show.ts +++ b/src/app/pages/transaction/transaction-show/transaction-show.ts @@ -1,14 +1,14 @@ import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; import { InAppBrowser } from "@ionic-native/in-app-browser/ngx"; import { ActionSheetController, NavController } from "@ionic/angular"; +import { TranslateService } from "@ngx-translate/core"; import { StoredNetwork, Wallet } from "@/models/model"; import { TransactionEntity } from "@/models/transaction"; import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; import { ContactsProvider } from "@/services/contacts/contacts"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { ActivatedRoute } from "@angular/router"; -import { TranslateService } from "@ngx-translate/core"; @Component({ selector: "page-transaction-show", diff --git a/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.module.ts b/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.module.ts index 45c4ec3ce..2a545f666 100644 --- a/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.module.ts +++ b/src/app/pages/wallet/wallet-dashboard/modal/set-label/set-label.module.ts @@ -1,11 +1,12 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; -import { SetLabelPage } from "./set-label"; +import { TranslateModule } from "@ngx-translate/core"; import { DirectivesModule } from "@/directives/directives.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule } from "@angular/forms"; -import { TranslateModule } from "@ngx-translate/core"; + +import { SetLabelPage } from "./set-label"; @NgModule({ declarations: [SetLabelPage], diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.module.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.module.ts index 952f8248a..b7fb39063 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.module.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.module.ts @@ -1,20 +1,19 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { WalletDashboardPage } from "./wallet-dashboard"; - import { TranslateModule } from "@ngx-translate/core"; +import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; +import { WalletBackupModalModule } from "@/app/modals/wallet-backup/wallet-backup.module"; import { ConfirmTransactionComponentModule } from "@/components/confirm-transaction/confirm-transaction.module"; import { PinCodeComponentModule } from "@/components/pin-code/pin-code.module"; +import { DirectivesModule } from "@/directives/directives.module"; import { PipesModule } from "@/pipes/pipes.module"; -import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; -import { WalletBackupModalModule } from "@/app/modals/wallet-backup/wallet-backup.module"; -import { DirectivesModule } from "@/directives/directives.module"; -import { CommonModule } from "@angular/common"; -import { RouterModule } from "@angular/router"; import { SetLabelPage } from "./modal/set-label/set-label"; import { SetLabelPageModule } from "./modal/set-label/set-label.module"; +import { WalletDashboardPage } from "./wallet-dashboard"; @NgModule({ declarations: [WalletDashboardPage], diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts index 7bc16f4f4..109a6053c 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts @@ -1,4 +1,6 @@ import { Component, OnDestroy, OnInit, ViewChild } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { Clipboard } from "@ionic-native/clipboard/ngx"; import { ActionSheetController, AlertController, @@ -8,9 +10,16 @@ import { ModalController, NavController, } from "@ionic/angular"; - +import { TranslateService } from "@ngx-translate/core"; +import { Fees } from "ark-ts"; +import lodash from "lodash"; import { Subject, throwError } from "rxjs"; +import { catchError, debounceTime, finalize, takeUntil } from "rxjs/operators"; +import * as constants from "@/app/app.constants"; +import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; +import { ConfirmTransactionComponent } from "@/components/confirm-transaction/confirm-transaction"; +import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { MarketCurrency, MarketHistory, @@ -24,22 +33,9 @@ import { import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { MarketDataProvider } from "@/services/market-data/market-data"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; +import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import lodash from "lodash"; - -import { Fees } from "ark-ts"; - -import { TranslateService } from "@ngx-translate/core"; - -import * as constants from "@/app/app.constants"; -import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; -import { ConfirmTransactionComponent } from "@/components/confirm-transaction/confirm-transaction"; -import { PinCodeComponent } from "@/components/pin-code/pin-code"; -import { ToastProvider } from "@/services/toast/toast"; -import { ActivatedRoute } from "@angular/router"; -import { Clipboard } from "@ionic-native/clipboard/ngx"; -import { catchError, debounceTime, finalize, takeUntil } from "rxjs/operators"; import { SetLabelPage } from "./modal/set-label/set-label"; @Component({ @@ -79,14 +75,13 @@ export class WalletDashboardPage implements OnInit, OnDestroy { public emptyTransactions = false; public minConfirmations = constants.WALLET_MIN_NUMBER_CONFIRMATIONS; + public transactions: TransactionEntity[] = []; private unsubscriber$: Subject = new Subject(); private refreshDataIntervalListener; private refreshTickerIntervalListener; - public transactions: TransactionEntity[] = []; - constructor( private navCtrl: NavController, private route: ActivatedRoute, @@ -216,22 +211,6 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.pinCode.open("PIN_CODE.DEFAULT_MESSAGE", true); } - private async showBackup(keys: WalletKeys) { - if (!keys) { - return; - } - - const modal = await this.modalCtrl.create({ - component: WalletBackupModal, - componentProps: { - title: "SETTINGS_PAGE.WALLET_BACKUP", - keys, - }, - }); - - modal.present(); - } - presentAddActionSheet() { this.translateService .get(["TRANSACTIONS_PAGE.SEND", "TRANSACTIONS_PAGE.RECEIVE"]) @@ -387,6 +366,35 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.transactions = transactions; } + ngOnInit(): void { + this.confirmTransaction.confirm + .pipe(takeUntil(this.unsubscriber$)) + .subscribe(); + this.load(); + this.refreshAllData(); + this.refreshPrice(); + this.onUpdateWallet(); + this.onUpdateMarket(); + // this.content.resize(); + + this.refreshDataIntervalListener = setInterval( + () => this.refreshAllData(), + constants.WALLET_REFRESH_TRANSACTIONS_MILLISECONDS, + ); + this.refreshTickerIntervalListener = setInterval( + () => this.refreshPrice(), + constants.WALLET_REFRESH_PRICE_MILLISECONDS, + ); + } + + ngOnDestroy() { + clearInterval(this.refreshDataIntervalListener); + clearInterval(this.refreshTickerIntervalListener); + + this.unsubscriber$.next(); + this.unsubscriber$.complete(); + } + private saveWallet() { this.userDataProvider.updateWallet(this.wallet, this.profile.profileId); } @@ -522,32 +530,19 @@ export class WalletDashboardPage implements OnInit, OnDestroy { } } - ngOnInit(): void { - this.confirmTransaction.confirm - .pipe(takeUntil(this.unsubscriber$)) - .subscribe(); - this.load(); - this.refreshAllData(); - this.refreshPrice(); - this.onUpdateWallet(); - this.onUpdateMarket(); - // this.content.resize(); - - this.refreshDataIntervalListener = setInterval( - () => this.refreshAllData(), - constants.WALLET_REFRESH_TRANSACTIONS_MILLISECONDS, - ); - this.refreshTickerIntervalListener = setInterval( - () => this.refreshPrice(), - constants.WALLET_REFRESH_PRICE_MILLISECONDS, - ); - } + private async showBackup(keys: WalletKeys) { + if (!keys) { + return; + } - ngOnDestroy() { - clearInterval(this.refreshDataIntervalListener); - clearInterval(this.refreshTickerIntervalListener); + const modal = await this.modalCtrl.create({ + component: WalletBackupModal, + componentProps: { + title: "SETTINGS_PAGE.WALLET_BACKUP", + keys, + }, + }); - this.unsubscriber$.next(); - this.unsubscriber$.complete(); + modal.present(); } } diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.module.ts b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.module.ts index 986e18d91..7526dadb7 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.module.ts +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.module.ts @@ -1,15 +1,16 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { WalletManualImportPage } from "./wallet-import-manual"; +import { TranslateModule } from "@ngx-translate/core"; import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { PinCodeModalModule } from "@/app/modals/pin-code/pin-code.module"; import { DirectivesModule } from "@/directives/directives.module"; import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { RouterModule } from "@angular/router"; -import { TranslateModule } from "@ngx-translate/core"; + +import { WalletManualImportPage } from "./wallet-import-manual"; @NgModule({ declarations: [WalletManualImportPage], diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts index 7193da841..633bd0a42 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts @@ -1,23 +1,20 @@ import { Component, ViewChild } from "@angular/core"; +import { FormBuilder, FormGroup } from "@angular/forms"; +import { ActivatedRoute } from "@angular/router"; import { InAppBrowser } from "@ionic-native/in-app-browser/ngx"; import { ModalController, NavController } from "@ionic/angular"; +import * as bip39 from "bip39"; +import { finalize } from "rxjs/operators"; -import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; - +import * as constants from "@/app/app.constants"; import { BaseWalletImport } from "@/app/pages/wallet/wallet-import/wallet-import.base"; -import { NetworkProvider } from "@/services/network/network"; -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; - import { AddressValidator } from "@/app/validators/address/address"; import { PassphraseValidator } from "@/app/validators/passphrase/passphrase"; -import { FormBuilder, FormGroup } from "@angular/forms"; - -import * as constants from "@/app/app.constants"; -import { ActivatedRoute } from "@angular/router"; -import * as bip39 from "bip39"; -import { finalize } from "rxjs/operators"; +import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { NetworkProvider } from "@/services/network/network"; +import { SettingsDataProvider } from "@/services/settings-data/settings-data"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; @Component({ selector: "page-wallet-import-passphrase", @@ -35,9 +32,6 @@ export class WalletManualImportPage extends BaseWalletImport { public manualImportFormGroup: FormGroup; public submitted = false; - private wordlist; - private suggestLanguageFound = false; - @ViewChild("inputAddressOrPassphrase", { static: true }) inputAddressOrPassphrase; @@ -47,6 +41,9 @@ export class WalletManualImportPage extends BaseWalletImport { @ViewChild("importWalletManual", { static: true }) importWalletManual: HTMLFormElement; + private wordlist; + private suggestLanguageFound = false; + constructor( route: ActivatedRoute, navCtrl: NavController, @@ -163,8 +160,8 @@ export class WalletManualImportPage extends BaseWalletImport { ]) { // we want to find a word which is in one wordlist and not in the other if ( - bip39.wordlists[lang1].indexOf(word) !== -1 && - bip39.wordlists[lang2].indexOf(word) === -1 + bip39.wordlists[lang1].includes(word) && + !bip39.wordlists[lang2].includes(word) ) { this.wordlist = bip39.wordlists[lang1]; this.suggestLanguageFound = true; diff --git a/src/app/pages/wallet/wallet-import/wallet-import.base.ts b/src/app/pages/wallet/wallet-import/wallet-import.base.ts index 3f9562e4e..fd5fd7d17 100644 --- a/src/app/pages/wallet/wallet-import/wallet-import.base.ts +++ b/src/app/pages/wallet/wallet-import/wallet-import.base.ts @@ -1,3 +1,10 @@ +import { ActivatedRoute } from "@angular/router"; +import { ModalController, NavController } from "@ionic/angular"; +import { PrivateKey, PublicKey } from "ark-ts"; +import * as bip39 from "bip39"; +import { EMPTY, Observable } from "rxjs"; +import { finalize } from "rxjs/operators"; + import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { Wallet } from "@/models/model"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; @@ -5,12 +12,6 @@ import { NetworkProvider } from "@/services/network/network"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { ActivatedRoute } from "@angular/router"; -import { ModalController, NavController } from "@ionic/angular"; -import { PrivateKey, PublicKey } from "ark-ts"; -import * as bip39 from "bip39"; -import { EMPTY, Observable } from "rxjs"; -import { finalize } from "rxjs/operators"; export abstract class BaseWalletImport { public existingAddress: string; diff --git a/src/app/pages/wallet/wallet-import/wallet-import.module.ts b/src/app/pages/wallet/wallet-import/wallet-import.module.ts index 8e7699fc1..16b8c8215 100644 --- a/src/app/pages/wallet/wallet-import/wallet-import.module.ts +++ b/src/app/pages/wallet/wallet-import/wallet-import.module.ts @@ -1,15 +1,15 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { WalletImportPage } from "./wallet-import"; - import { TranslateModule } from "@ngx-translate/core"; import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { PinCodeModalModule } from "@/app/modals/pin-code/pin-code.module"; import { QRScannerComponentModule } from "@/components/qr-scanner/qr-scanner.module"; import { PipesModule } from "@/pipes/pipes.module"; -import { CommonModule } from "@angular/common"; -import { RouterModule } from "@angular/router"; + +import { WalletImportPage } from "./wallet-import"; @NgModule({ declarations: [WalletImportPage], diff --git a/src/app/pages/wallet/wallet-import/wallet-import.ts b/src/app/pages/wallet/wallet-import/wallet-import.ts index 93cfe55d9..dae48d687 100644 --- a/src/app/pages/wallet/wallet-import/wallet-import.ts +++ b/src/app/pages/wallet/wallet-import/wallet-import.ts @@ -1,3 +1,7 @@ +import { Component, OnInit, ViewChild } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { ModalController, NavController } from "@ionic/angular"; + import { BaseWalletImport } from "@/app/pages/wallet/wallet-import/wallet-import.base"; import { QRScannerComponent } from "@/components/qr-scanner/qr-scanner"; import { QRCodeScheme } from "@/models/model"; @@ -6,9 +10,6 @@ import { NetworkProvider } from "@/services/network/network"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Component, OnInit, ViewChild } from "@angular/core"; -import { ActivatedRoute } from "@angular/router"; -import { ModalController, NavController } from "@ionic/angular"; @Component({ selector: "page-wallet-import", diff --git a/src/app/pages/wallet/wallet-list/wallet-list.module.ts b/src/app/pages/wallet/wallet-list/wallet-list.module.ts index 2aa535957..81b0049f6 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.module.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.module.ts @@ -1,20 +1,19 @@ +import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { WalletListPage } from "./wallet-list"; - -import { EmptyListComponentModule } from "@/components/empty-list/empty-list.module"; -import { PipesModule } from "@/pipes/pipes.module"; import { TranslateModule } from "@ngx-translate/core"; - -import { DirectivesModule } from "@/directives/directives.module"; +import { ChartsModule } from "ng2-charts"; import { GenerateEntropyModal } from "@/app/modals/generate-entropy/generate-entropy"; import { GenerateEntropyModalModule } from "@/app/modals/generate-entropy/generate-entropy.module"; import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; import { WalletBackupModalModule } from "@/app/modals/wallet-backup/wallet-backup.module"; -import { CommonModule } from "@angular/common"; -import { RouterModule } from "@angular/router"; -import { ChartsModule } from "ng2-charts"; +import { EmptyListComponentModule } from "@/components/empty-list/empty-list.module"; +import { DirectivesModule } from "@/directives/directives.module"; +import { PipesModule } from "@/pipes/pipes.module"; + +import { WalletListPage } from "./wallet-list"; @NgModule({ declarations: [WalletListPage], diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 973e53755..5e9fb31b7 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -6,13 +6,17 @@ import { ModalController, NavController, } from "@ionic/angular"; - +import { TranslateService } from "@ngx-translate/core"; +import { Network } from "ark-ts/model"; +import lodash from "lodash"; +import { BaseChartDirective } from "ng2-charts"; import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; -import { MarketDataProvider } from "@/services/market-data/market-data"; -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; - +import * as constants from "@/app/app.constants"; +import { GenerateEntropyModal } from "@/app/modals/generate-entropy/generate-entropy"; +import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; +import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; import { MarketCurrency, MarketHistory, @@ -20,18 +24,10 @@ import { Profile, Wallet, } from "@/models/model"; -import { Network } from "ark-ts/model"; - -import { TranslateService } from "@ngx-translate/core"; - -import * as constants from "@/app/app.constants"; -import { GenerateEntropyModal } from "@/app/modals/generate-entropy/generate-entropy"; -import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; -import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import lodash from "lodash"; -import { BaseChartDirective } from "ng2-charts"; -import { takeUntil } from "rxjs/operators"; +import { MarketDataProvider } from "@/services/market-data/market-data"; +import { SettingsDataProvider } from "@/services/settings-data/settings-data"; +import { UserDataProvider } from "@/services/user-data/user-data"; @Component({ selector: "page-wallet-list", @@ -169,6 +165,20 @@ export class WalletListPage implements OnInit, OnDestroy { }); } + ionViewDidEnter() { + this.loadWallets(); + this.onCreateUpdateWallet(); + this.initMarketHistory(); + this.initTicker(); + + // this.content.resize(); + } + + ngOnDestroy() { + this.unsubscriber$.next(); + this.unsubscriber$.complete(); + } + private async presentWalletGenerate() { const modal = await this.modalCtrl.create({ component: GenerateEntropyModal, @@ -446,15 +456,6 @@ export class WalletListPage implements OnInit, OnDestroy { }); } - ionViewDidEnter() { - this.loadWallets(); - this.onCreateUpdateWallet(); - this.initMarketHistory(); - this.initTicker(); - - // this.content.resize(); - } - private initTicker() { // just set the data from cache first if (this.marketDataProvider.cachedTicker) { @@ -473,9 +474,4 @@ export class WalletListPage implements OnInit, OnDestroy { constants.WALLET_REFRESH_PRICE_MILLISECONDS, ); } - - ngOnDestroy() { - this.unsubscriber$.next(); - this.unsubscriber$.complete(); - } } diff --git a/src/app/pipes/account-label/account-label.ts b/src/app/pipes/account-label/account-label.ts index f7be9f50e..857a25a80 100644 --- a/src/app/pipes/account-label/account-label.ts +++ b/src/app/pipes/account-label/account-label.ts @@ -1,6 +1,7 @@ +import { Pipe, PipeTransform } from "@angular/core"; + import { ContactsProvider } from "@/services/contacts/contacts"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: "accountLabel", diff --git a/src/app/pipes/has-account-label/has-account-label.ts b/src/app/pipes/has-account-label/has-account-label.ts index 6d3e82adc..89942f9df 100644 --- a/src/app/pipes/has-account-label/has-account-label.ts +++ b/src/app/pipes/has-account-label/has-account-label.ts @@ -1,7 +1,8 @@ +import { Pipe, PipeTransform } from "@angular/core"; + import { AccountLabelPipe } from "@/pipes/account-label/account-label"; import { ContactsProvider } from "@/services/contacts/contacts"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: "hasAccountLabel", diff --git a/src/app/pipes/market-number/market-number.ts b/src/app/pipes/market-number/market-number.ts index efaf09d9c..54cbc6b32 100644 --- a/src/app/pipes/market-number/market-number.ts +++ b/src/app/pipes/market-number/market-number.ts @@ -1,11 +1,12 @@ +import { OnDestroy, Pipe, PipeTransform } from "@angular/core"; +import { Subject } from "rxjs"; +import { finalize, takeUntil, tap } from "rxjs/operators"; + import { MarketCurrency, MarketTicker } from "@/models/model"; import { UserSettings } from "@/models/settings"; import { MarketDataProvider } from "@/services/market-data/market-data"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { SafeBigNumber as BigNumber } from "@/utils/bignumber"; -import { OnDestroy, Pipe, PipeTransform } from "@angular/core"; -import { Subject } from "rxjs"; -import { finalize, takeUntil, tap } from "rxjs/operators"; @Pipe({ name: "marketNumber", @@ -39,16 +40,6 @@ export class MarketNumberPipe implements PipeTransform, OnDestroy { .subscribe(ticker => (this.marketTicker = ticker)); } - private updateCurrency(settings: UserSettings) { - if (!this.marketTicker) { - return; - } - - this.marketCurrency = this.marketTicker.getCurrency({ - code: settings.currency, - }); - } - transform(value: number | string, forceCurrency?: MarketCurrency) { if (value === null) { return; @@ -73,4 +64,14 @@ export class MarketNumberPipe implements PipeTransform, OnDestroy { this.unsubscriber$.next(); this.unsubscriber$.complete(); } + + private updateCurrency(settings: UserSettings) { + if (!this.marketTicker) { + return; + } + + this.marketCurrency = this.marketTicker.getCurrency({ + code: settings.currency, + }); + } } diff --git a/src/app/pipes/pipes.module.ts b/src/app/pipes/pipes.module.ts index 1629287db..6037a18d6 100644 --- a/src/app/pipes/pipes.module.ts +++ b/src/app/pipes/pipes.module.ts @@ -1,5 +1,7 @@ -import { MarketDataProvider } from "@/services/market-data/market-data"; import { NgModule } from "@angular/core"; + +import { MarketDataProvider } from "@/services/market-data/market-data"; + import { AccountLabelPipe } from "./../pipes/account-label/account-label"; import { EscapeHTMLPipe } from "./../pipes/escape-html/escape-html"; import { HasAccountLabelPipe } from "./../pipes/has-account-label/has-account-label"; diff --git a/src/app/pipes/timestamp-human/timestamp-human.ts b/src/app/pipes/timestamp-human/timestamp-human.ts index dc6b2b925..4a395e410 100644 --- a/src/app/pipes/timestamp-human/timestamp-human.ts +++ b/src/app/pipes/timestamp-human/timestamp-human.ts @@ -1,7 +1,8 @@ -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { Pipe, PipeTransform } from "@angular/core"; import moment from "moment"; +import { SettingsDataProvider } from "@/services/settings-data/settings-data"; + @Pipe({ name: "timestampHuman", }) diff --git a/src/app/pipes/units-satoshi/units-satoshi.ts b/src/app/pipes/units-satoshi/units-satoshi.ts index d356b46aa..0689ea46b 100644 --- a/src/app/pipes/units-satoshi/units-satoshi.ts +++ b/src/app/pipes/units-satoshi/units-satoshi.ts @@ -1,4 +1,5 @@ import { Pipe, PipeTransform } from "@angular/core"; + import { ArkUtility } from "../../utils/ark-utility"; @Pipe({ diff --git a/src/app/services/address-checker/address-checker.ts b/src/app/services/address-checker/address-checker.ts index b10505be2..18fa3efde 100644 --- a/src/app/services/address-checker/address-checker.ts +++ b/src/app/services/address-checker/address-checker.ts @@ -1,12 +1,14 @@ +import { Injectable } from "@angular/core"; +import { Observable, Subscriber } from "rxjs"; +import { map } from "rxjs/operators"; + import { AddressCheckResult } from "@/services/address-checker/address-check-result"; import { AddressCheckResultType } from "@/services/address-checker/address-check-result-type"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { NeoApiProvider } from "@/services/neo-api/neo-api"; import { NetworkProvider } from "@/services/network/network"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Injectable } from "@angular/core"; -import { Observable, Subscriber } from "rxjs"; -import { map } from "rxjs/operators"; + import { CompleteHandler } from "../../utils/complete-handler"; @Injectable({ providedIn: "root" }) diff --git a/src/app/services/ark-api/ark-api.ts b/src/app/services/ark-api/ark-api.ts index 768aeac29..70a4eda9e 100644 --- a/src/app/services/ark-api/ark-api.ts +++ b/src/app/services/ark-api/ark-api.ts @@ -1,28 +1,26 @@ import { HttpClient } from "@angular/common/http"; import { Injectable } from "@angular/core"; - +import * as ArkCrypto from "@arkecosystem/crypto"; +import * as arkts from "ark-ts"; +import arktsConfig from "ark-ts/config"; +import lodash from "lodash"; +import moment from "moment"; import { EMPTY, Observable, of, Subject, throwError } from "rxjs"; +import { catchError, expand, finalize, switchMap, tap } from "rxjs/operators"; -import { StorageProvider } from "@/services/storage/storage"; -import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; - +import * as constants from "@/app/app.constants"; import { INodeConfiguration, Transaction, TranslatableObject, } from "@/models/model"; - -import * as constants from "@/app/app.constants"; import { FeeStatistic, StoredNetwork } from "@/models/stored-network"; +import { StorageProvider } from "@/services/storage/storage"; +import { ToastProvider } from "@/services/toast/toast"; +import { UserDataProvider } from "@/services/user-data/user-data"; import { PeerDiscovery } from "@/utils/ark-peer-discovery"; import { SafeBigNumber as BigNumber } from "@/utils/bignumber"; -import * as ArkCrypto from "@arkecosystem/crypto"; -import * as arkts from "ark-ts"; -import arktsConfig from "ark-ts/config"; -import lodash from "lodash"; -import moment from "moment"; -import { catchError, expand, finalize, switchMap, tap } from "rxjs/operators"; + import ArkClient, { WalletResponse } from "../../utils/ark-client"; import { ArkUtility } from "../../utils/ark-utility"; @@ -159,62 +157,6 @@ export class ArkApiProvider { this.fetchFees().subscribe(); } - private refreshPeers(): Observable { - return new Observable(observer => { - const network = this._network; - const networkLookup = ["mainnet", "devnet"]; - const isKnowNetwork = lodash.includes(networkLookup, network.name); - const peerUrl = network.getPeerAPIUrl(); - - const networkOrHost = isKnowNetwork - ? network.name - : `${peerUrl}/api/peers`; - - this._peerDiscovery.find({ networkOrHost }).subscribe( - discovery => { - discovery.withLatency(300).sortBy("latency", "asc"); - - discovery - .findPeersWithPlugin("core-api", { - additional: ["height", "latency", "version"], - }) - .pipe( - switchMap(peers => { - if (!peers.length) { - return discovery.findPeersWithPlugin( - "core-wallet-api", - { - additional: [ - "height", - "latency", - "version", - ], - }, - ); - } - - return of(peers); - }), - ) - .subscribe( - peers => { - if (peers.length) { - this._network.peerList = peers; - observer.next(); - } else { - observer.error( - "No good peer could be found!", - ); - } - }, - e => observer.error(e), - ); - }, - e => observer.error(e), - ); - }); - } - public connectToRandomPeer(): Observable { return new Observable(observer => { this.refreshPeers().subscribe( @@ -403,20 +345,6 @@ export class ArkApiProvider { }); } - private getNextWalletNonce(address: string): Observable { - return new Observable(observer => { - this._client.getWallet(address).subscribe( - (wallet: WalletResponse) => { - const nonce = wallet.nonce || 0; - const nextNonce = new BigNumber(nonce).plus(1).toString(); - observer.next(nextNonce); - }, - () => observer.next("1"), - () => observer.complete(), - ); - }); - } - public validateAddress(address: string) { return ArkCrypto.Identities.Address.validate( address, @@ -638,4 +566,74 @@ export class ArkApiProvider { .getObject(constants.STORAGE_DELEGATES) .subscribe(delegates => (this._delegates = delegates)); } + + private getNextWalletNonce(address: string): Observable { + return new Observable(observer => { + this._client.getWallet(address).subscribe( + (wallet: WalletResponse) => { + const nonce = wallet.nonce || 0; + const nextNonce = new BigNumber(nonce).plus(1).toString(); + observer.next(nextNonce); + }, + () => observer.next("1"), + () => observer.complete(), + ); + }); + } + + private refreshPeers(): Observable { + return new Observable(observer => { + const network = this._network; + const networkLookup = ["mainnet", "devnet"]; + const isKnowNetwork = lodash.includes(networkLookup, network.name); + const peerUrl = network.getPeerAPIUrl(); + + const networkOrHost = isKnowNetwork + ? network.name + : `${peerUrl}/api/peers`; + + this._peerDiscovery.find({ networkOrHost }).subscribe( + discovery => { + discovery.withLatency(300).sortBy("latency", "asc"); + + discovery + .findPeersWithPlugin("core-api", { + additional: ["height", "latency", "version"], + }) + .pipe( + switchMap(peers => { + if (!peers.length) { + return discovery.findPeersWithPlugin( + "core-wallet-api", + { + additional: [ + "height", + "latency", + "version", + ], + }, + ); + } + + return of(peers); + }), + ) + .subscribe( + peers => { + if (peers.length) { + this._network.peerList = peers; + observer.next(); + } else { + observer.error( + "No good peer could be found!", + ); + } + }, + e => observer.error(e), + ); + }, + e => observer.error(e), + ); + }); + } } diff --git a/src/app/services/auth/auth.ts b/src/app/services/auth/auth.ts index 7b7f95fc1..e2dacfe79 100644 --- a/src/app/services/auth/auth.ts +++ b/src/app/services/auth/auth.ts @@ -1,13 +1,12 @@ -import { StorageProvider } from "@/services/storage/storage"; import { Injectable } from "@angular/core"; - -import { Observable, Subject } from "rxjs"; - -import * as constants from "@/app/app.constants"; import * as bcrypt from "bcryptjs"; import * as moment from "moment"; +import { Observable, Subject } from "rxjs"; import { map, mergeMap } from "rxjs/operators"; +import * as constants from "@/app/app.constants"; +import { StorageProvider } from "@/services/storage/storage"; + @Injectable({ providedIn: "root" }) export class AuthProvider { public onLogin$: Subject = new Subject(); @@ -106,7 +105,7 @@ export class AuthProvider { "987654", "098765", ]; - return weakPasswords.indexOf(password) > -1; + return weakPasswords.includes(password); } getUnlockTimestamp() { diff --git a/src/app/services/contacts/contacts.ts b/src/app/services/contacts/contacts.ts index f76804563..0a98be21d 100644 --- a/src/app/services/contacts/contacts.ts +++ b/src/app/services/contacts/contacts.ts @@ -1,11 +1,12 @@ +import { Injectable } from "@angular/core"; +import lodash from "lodash"; +import { Observable, throwError } from "rxjs"; + import { Contact } from "@/models/contact"; import { TranslatableObject } from "@/models/model"; import { Profile } from "@/models/profile"; import { NetworkProvider } from "@/services/network/network"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { Injectable } from "@angular/core"; -import lodash from "lodash"; -import { Observable, throwError } from "rxjs"; @Injectable({ providedIn: "root" }) export class ContactsProvider { diff --git a/src/app/services/forge/forge.ts b/src/app/services/forge/forge.ts index 5c70a29a1..ddc1ad685 100644 --- a/src/app/services/forge/forge.ts +++ b/src/app/services/forge/forge.ts @@ -1,5 +1,4 @@ import { Injectable } from "@angular/core"; - import forge from "node-forge"; @Injectable({ providedIn: "root" }) diff --git a/src/app/services/market-data/market-data.ts b/src/app/services/market-data/market-data.ts index 87d4da0a4..612f785dc 100644 --- a/src/app/services/market-data/market-data.ts +++ b/src/app/services/market-data/market-data.ts @@ -1,16 +1,14 @@ import { HttpClient } from "@angular/common/http"; import { Injectable } from "@angular/core"; - import { Observable, of, Subject } from "rxjs"; - -import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { StorageProvider } from "@/services/storage/storage"; +import { flatMap, map } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import * as model from "@/models/market"; import { UserSettings } from "@/models/settings"; +import { SettingsDataProvider } from "@/services/settings-data/settings-data"; +import { StorageProvider } from "@/services/storage/storage"; import { UserDataProvider } from "@/services/user-data/user-data"; -import { flatMap, map } from "rxjs/operators"; @Injectable({ providedIn: "root" }) export class MarketDataProvider { @@ -76,36 +74,6 @@ export class MarketDataProvider { }); } - private fetchTicker(): Observable { - const url = `${constants.API_MARKET_URL}/data/pricemultifull?fsyms=${this.marketTickerName}&tsyms=`; - - const currenciesList = model.CURRENCIES_LIST.map(currency => { - return currency.code.toUpperCase(); - }).join(","); - - return this.http.get(url + currenciesList).pipe( - map((response: any) => { - const json = - response.RAW[this.marketTickerName] || - response.RAW[this.marketTickerName.toUpperCase()]; - const tickerObject = { - symbol: json.BTC.FROMSYMBOL, - currencies: json, - }; - - this.marketTicker = new model.MarketTicker().deserialize( - tickerObject, - ); - this.storageProvider.set( - this.getKey(constants.STORAGE_MARKET_TICKER), - tickerObject, - ); - - return this.marketTicker; - }), - ); - } - fetchHistory(): Observable { const url = `${constants.API_MARKET_URL}/data/histoday?fsym=${this.marketTickerName}&allData=true&tsym=`; const myCurrencyCode = (!this.settings || !this.settings.currency @@ -139,6 +107,36 @@ export class MarketDataProvider { ); } + private fetchTicker(): Observable { + const url = `${constants.API_MARKET_URL}/data/pricemultifull?fsyms=${this.marketTickerName}&tsyms=`; + + const currenciesList = model.CURRENCIES_LIST.map(currency => { + return currency.code.toUpperCase(); + }).join(","); + + return this.http.get(url + currenciesList).pipe( + map((response: any) => { + const json = + response.RAW[this.marketTickerName] || + response.RAW[this.marketTickerName.toUpperCase()]; + const tickerObject = { + symbol: json.BTC.FROMSYMBOL, + currencies: json, + }; + + this.marketTicker = new model.MarketTicker().deserialize( + tickerObject, + ); + this.storageProvider.set( + this.getKey(constants.STORAGE_MARKET_TICKER), + tickerObject, + ); + + return this.marketTicker; + }), + ); + } + private onUpdateSettings() { this.settingsDataProvider.onUpdate$.subscribe(settings => { this.settings = settings; diff --git a/src/app/services/neo-api/neo-api.ts b/src/app/services/neo-api/neo-api.ts index 703884e79..b7ba738b5 100644 --- a/src/app/services/neo-api/neo-api.ts +++ b/src/app/services/neo-api/neo-api.ts @@ -1,9 +1,10 @@ -import { NetworkProvider } from "@/services/network/network"; import { HttpClient } from "@angular/common/http"; import { Injectable } from "@angular/core"; import { Observable, of } from "rxjs"; import { map } from "rxjs/operators"; +import { NetworkProvider } from "@/services/network/network"; + @Injectable({ providedIn: "root" }) export class NeoApiProvider { private static readonly baseUrl = "https://neoscan.io/api/main_net/v1"; diff --git a/src/app/services/network/network.ts b/src/app/services/network/network.ts index ecabadd21..111ff11d4 100644 --- a/src/app/services/network/network.ts +++ b/src/app/services/network/network.ts @@ -1,9 +1,10 @@ -import { UserDataProvider } from "@/services/user-data/user-data"; import { Injectable } from "@angular/core"; import { Network } from "ark-ts"; import { PublicKey } from "ark-ts/core"; import { isNil } from "lodash"; +import { UserDataProvider } from "@/services/user-data/user-data"; + @Injectable({ providedIn: "root" }) export class NetworkProvider { public get currentNetwork(): Network { diff --git a/src/app/services/settings-data/settings-data.ts b/src/app/services/settings-data/settings-data.ts index 1d7f8d9e4..4c1988da8 100644 --- a/src/app/services/settings-data/settings-data.ts +++ b/src/app/services/settings-data/settings-data.ts @@ -1,9 +1,7 @@ import { Injectable } from "@angular/core"; import { TranslateService } from "@ngx-translate/core"; - -import { Observable, of, Subject } from "rxjs"; - import lodash from "lodash"; +import { Observable, of, Subject } from "rxjs"; import * as constants from "@/app/app.constants"; import { UserSettings } from "@/models/settings"; @@ -12,9 +10,6 @@ import { StorageProvider } from "@/services/storage/storage"; @Injectable({ providedIn: "root" }) export class SettingsDataProvider { public onUpdate$: Subject = new Subject(); - - private _settings: UserSettings; - public AVALIABLE_OPTIONS = { languages: { en: "English", @@ -63,6 +58,7 @@ export class SettingsDataProvider { chinese_traditional: "Chinese traditional", }, }; + private _settings: UserSettings; constructor( private _storageProvider: StorageProvider, diff --git a/src/app/services/storage/storage.spec.ts b/src/app/services/storage/storage.spec.ts index 1c7858f44..d757d5053 100644 --- a/src/app/services/storage/storage.spec.ts +++ b/src/app/services/storage/storage.spec.ts @@ -1,5 +1,6 @@ import { Storage } from "@ionic/storage"; import { Observable } from "rxjs"; + import { StorageProvider } from "./storage"; let storageProvider = null; diff --git a/src/app/services/storage/storage.ts b/src/app/services/storage/storage.ts index 03b00990c..69dce102c 100644 --- a/src/app/services/storage/storage.ts +++ b/src/app/services/storage/storage.ts @@ -1,9 +1,7 @@ import { Injectable } from "@angular/core"; import { Storage } from "@ionic/storage"; - -import { from, Subject } from "rxjs"; - import { isObject, isString, toString } from "lodash"; +import { from, Subject } from "rxjs"; import { map } from "rxjs/operators"; @Injectable({ providedIn: "root" }) diff --git a/src/app/services/toast/toast.ts b/src/app/services/toast/toast.ts index 36d538dea..549f6a6d1 100644 --- a/src/app/services/toast/toast.ts +++ b/src/app/services/toast/toast.ts @@ -1,6 +1,5 @@ import { Injectable } from "@angular/core"; import { ToastController } from "@ionic/angular"; - import { TranslateService } from "@ngx-translate/core"; import * as constants from "@/app/app.constants"; @@ -78,10 +77,10 @@ export class ToastProvider { let message: string; let parameters: any; if (typeof messageOrObj === "string") { - message = messageOrObj as string; + message = messageOrObj; parameters = null; } else { - const obj = messageOrObj as TranslatableObject; + const obj = messageOrObj; message = obj.key; parameters = obj.parameters; } diff --git a/src/app/services/user-data/user-data.ts b/src/app/services/user-data/user-data.ts index 1387df809..5be640b04 100644 --- a/src/app/services/user-data/user-data.ts +++ b/src/app/services/user-data/user-data.ts @@ -1,21 +1,18 @@ -import { AuthProvider } from "@/services/auth/auth"; -import { ForgeProvider } from "@/services/forge/forge"; -import { StorageProvider } from "@/services/storage/storage"; import { Injectable } from "@angular/core"; - -import { EMPTY, Observable, Subject, throwError } from "rxjs"; - -import { Contact, Profile, Wallet, WalletKeys } from "@/models/model"; - +import { Delegate } from "ark-ts"; import { Network, NetworkType } from "ark-ts/model"; import * as lodash from "lodash"; +import { EMPTY, Observable, Subject, throwError } from "rxjs"; +import { debounceTime, map } from "rxjs/operators"; import { v4 as uuid } from "uuid"; import * as constants from "@/app/app.constants"; +import { Contact, Profile, Wallet, WalletKeys } from "@/models/model"; import { StoredNetwork } from "@/models/stored-network"; import { TranslatableObject } from "@/models/translate"; -import { Delegate } from "ark-ts"; -import { debounceTime, map } from "rxjs/operators"; +import { AuthProvider } from "@/services/auth/auth"; +import { ForgeProvider } from "@/services/forge/forge"; +import { StorageProvider } from "@/services/storage/storage"; @Injectable({ providedIn: "root" }) export class UserDataProvider { @@ -40,21 +37,6 @@ export class UserDataProvider { return this._defaultNetworks; } - constructor( - private storageProvider: StorageProvider, - private authProvider: AuthProvider, - private forgeProvider: ForgeProvider, - ) { - this.loadAllData(); - - this.onLogin(); - this.onClearStorage(); - - this.onUpdateNetwork$.subscribe( - network => (this.currentNetwork = network), - ); - } - public profiles: { [key: string]: Profile } = {}; public networks: Record = {}; @@ -70,6 +52,21 @@ export class UserDataProvider { private _defaultNetworks: Network[]; + constructor( + private storageProvider: StorageProvider, + private authProvider: AuthProvider, + private forgeProvider: ForgeProvider, + ) { + this.loadAllData(); + + this.onLogin(); + this.onClearStorage(); + + this.onUpdateNetwork$.subscribe( + network => (this.currentNetwork = network), + ); + } + // this method is required to "migrate" contacts, in the first version of the app the contact's didnt't include an address property private static mapContact = ( contacts: { [address: string]: Contact }, diff --git a/src/app/utils/ark-client.ts b/src/app/utils/ark-client.ts index bc74b0092..43c119dcb 100644 --- a/src/app/utils/ark-client.ts +++ b/src/app/utils/ark-client.ts @@ -1,5 +1,3 @@ -import { TRANSACTION_GROUPS } from "@/app/app.constants"; -import { INodeConfiguration } from "@/models/node"; import { HttpClient } from "@angular/common/http"; import { AccountResponse, @@ -18,6 +16,9 @@ import lodash from "lodash"; import { Observable, of } from "rxjs"; import { timeout } from "rxjs/operators"; +import { TRANSACTION_GROUPS } from "@/app/app.constants"; +import { INodeConfiguration } from "@/models/node"; + export interface PeerApiResponse extends Peer { latency?: number; ports?: { @@ -41,38 +42,6 @@ export default class ApiClient { this.httpClient = httpClient; } - private get defaultHeaders() { - return { "API-Version": "2" }; - } - - private get( - path: string, - options: any = {}, - host: string = this.host, - timeoutMs: number = 5000, - ) { - return this.httpClient - .request("GET", `${host}/api/${path}`, { - ...options, - headers: this.defaultHeaders, - }) - .pipe(timeout(timeoutMs)); - } - - private post( - path: string, - body: any | null, - options: any = {}, - host: string = this.host, - ) { - return this.httpClient - .post(`${this.host}/api/${path}`, body, { - ...options, - headers: this.defaultHeaders, - }) - .pipe(timeout(5000)); - } - getWallet(address: string): Observable { return new Observable(observer => { this.get(`wallets/${address}`).subscribe( @@ -397,4 +366,36 @@ export default class ApiClient { return delegate; } + + private get defaultHeaders() { + return { "API-Version": "2" }; + } + + private get( + path: string, + options: any = {}, + host: string = this.host, + timeoutMs: number = 5000, + ) { + return this.httpClient + .request("GET", `${host}/api/${path}`, { + ...options, + headers: this.defaultHeaders, + }) + .pipe(timeout(timeoutMs)); + } + + private post( + path: string, + body: any | null, + options: any = {}, + host: string = this.host, + ) { + return this.httpClient + .post(`${this.host}/api/${path}`, body, { + ...options, + headers: this.defaultHeaders, + }) + .pipe(timeout(5000)); + } } diff --git a/src/app/utils/ark-peer-discovery.ts b/src/app/utils/ark-peer-discovery.ts index 34569cbd0..05ae894d2 100644 --- a/src/app/utils/ark-peer-discovery.ts +++ b/src/app/utils/ark-peer-discovery.ts @@ -3,6 +3,7 @@ import isUrl from "is-url"; import orderBy from "lodash/orderBy"; import { Observable } from "rxjs/Observable"; import semver from "semver"; + import { PeerApiResponse } from "./ark-client"; export class PeerDiscovery { @@ -60,63 +61,6 @@ export class PeerDiscovery { }); } - private getSeedsFromHost( - host: string, - defaultPort: number, - ): Observable { - return new Observable(observer => { - this.httpClient.get(host).subscribe( - (body: any) => { - const seeds: PeerApiResponse[] = []; - - for (const seed of body.data) { - let port = defaultPort; - if (seed.ports) { - const walletApiPort = - seed.ports["@arkecosystem/core-wallet-api"]; - const apiPort = - seed.ports["@arkecosystem/core-api"]; - if (walletApiPort >= 1 && walletApiPort <= 65535) { - port = walletApiPort; - } else if (apiPort >= 1 && apiPort <= 65535) { - port = apiPort; - } - } - - seeds.push({ ip: seed.ip, port }); - } - - observer.next(seeds); - observer.complete(); - }, - e => observer.error(e), - ); - }); - } - - private getSeedsFromRepository( - network: string, - defaultPort: number, - ): Observable { - return new Observable(observer => { - this.httpClient - .get( - `https://raw.githubusercontent.com/ArkEcosystem/peers/master/${network}.json`, - ) - .subscribe( - (body: any) => { - const seeds: PeerApiResponse[] = []; - for (const seed of body) { - seeds.push({ ip: seed.ip, port: defaultPort }); - } - observer.next(seeds); - observer.complete(); - }, - e => observer.error(e), - ); - }); - } - public getSeeds(): PeerApiResponse[] { return this.seeds; } @@ -255,4 +199,61 @@ export class PeerDiscovery { ); }); } + + private getSeedsFromHost( + host: string, + defaultPort: number, + ): Observable { + return new Observable(observer => { + this.httpClient.get(host).subscribe( + (body: any) => { + const seeds: PeerApiResponse[] = []; + + for (const seed of body.data) { + let port = defaultPort; + if (seed.ports) { + const walletApiPort = + seed.ports["@arkecosystem/core-wallet-api"]; + const apiPort = + seed.ports["@arkecosystem/core-api"]; + if (walletApiPort >= 1 && walletApiPort <= 65535) { + port = walletApiPort; + } else if (apiPort >= 1 && apiPort <= 65535) { + port = apiPort; + } + } + + seeds.push({ ip: seed.ip, port }); + } + + observer.next(seeds); + observer.complete(); + }, + e => observer.error(e), + ); + }); + } + + private getSeedsFromRepository( + network: string, + defaultPort: number, + ): Observable { + return new Observable(observer => { + this.httpClient + .get( + `https://raw.githubusercontent.com/ArkEcosystem/peers/master/${network}.json`, + ) + .subscribe( + (body: any) => { + const seeds: PeerApiResponse[] = []; + for (const seed of body) { + seeds.push({ ip: seed.ip, port: defaultPort }); + } + observer.next(seeds); + observer.complete(); + }, + e => observer.error(e), + ); + }); + } } diff --git a/src/app/utils/ark-utility.ts b/src/app/utils/ark-utility.ts index 7a410a919..cee5898fa 100644 --- a/src/app/utils/ark-utility.ts +++ b/src/app/utils/ark-utility.ts @@ -1,4 +1,5 @@ import * as constants from "@/app/app.constants"; + import { SafeBigNumber as BigNumber } from "./bignumber"; export class ArkUtility { diff --git a/src/app/utils/http-utils.ts b/src/app/utils/http-utils.ts index cf8fd10bd..b6de2b92f 100644 --- a/src/app/utils/http-utils.ts +++ b/src/app/utils/http-utils.ts @@ -1,6 +1,5 @@ -import { isNil, isPlainObject } from "lodash"; - import { HttpParams } from "@angular/common/http"; +import { isNil, isPlainObject } from "lodash"; export class HttpUtils { static buildQueryParams(source: object): HttpParams { diff --git a/src/app/validators/address/address.ts b/src/app/validators/address/address.ts index c4b2fb66e..a0c3868bd 100644 --- a/src/app/validators/address/address.ts +++ b/src/app/validators/address/address.ts @@ -1,7 +1,8 @@ -import { NetworkProvider } from "@/services/network/network"; import { Injectable } from "@angular/core"; import { FormControl } from "@angular/forms"; +import { NetworkProvider } from "@/services/network/network"; + @Injectable() export class AddressValidator { public constructor(private networkProvider: NetworkProvider) {} diff --git a/src/main.ts b/src/main.ts index fb9d57d5a..ef0468206 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,11 +1,11 @@ +import "hammerjs"; + import { enableProdMode } from "@angular/core"; import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; import { AppModule } from "./app/app.module"; import { environment } from "./environments/environment"; -import "hammerjs"; - if (environment.production) { enableProdMode(); } diff --git a/src/polyfills.ts b/src/polyfills.ts index 82fd9c2f7..689723135 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -53,11 +53,9 @@ */ import "./zone-flags.ts"; - /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ - import "zone.js/dist/zone"; // Included with Angular CLI. /*************************************************************************************************** diff --git a/src/test.ts b/src/test.ts index ad4cb25bb..25cbd69f5 100644 --- a/src/test.ts +++ b/src/test.ts @@ -1,11 +1,12 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files +import "zone.js/dist/zone-testing"; + import { getTestBed } from "@angular/core/testing"; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting, } from "@angular/platform-browser-dynamic/testing"; -import "zone.js/dist/zone-testing"; declare const require: any; diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 000000000..70e963ece --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules"] +} diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 07029e4fd..000000000 --- a/tslint.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "extends": ["tslint:recommended", "tslint-config-prettier"], - "rulesDirectory": ["codelyzer"], - "rules": { - "radix": false, - "variable-name": { - "options": [ - "ban-keywords", - "check-format", - "allow-leading-underscore" - ] - }, - "no-unused-variable": [true, { "ignore-pattern": "^_" }], - "array-type": false, - "arrow-parens": false, - "deprecation": { - "severity": "warn" - }, - "import-blacklist": [true, "rxjs/Rx"], - "interface-name": false, - "max-classes-per-file": false, - "member-access": false, - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-consecutive-blank-lines": false, - "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], - "no-empty": false, - "no-inferrable-types": [true, "ignore-params"], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-var-requires": false, - "object-literal-key-quotes": [true, "as-needed"], - "object-literal-sort-keys": false, - "ordered-imports": true, - "no-output-on-prefix": true, - "no-inputs-metadata-property": true, - "no-host-metadata-property": true, - "no-input-rename": true, - "no-output-rename": true, - "use-lifecycle-interface": true, - "use-pipe-transform-interface": true, - "one-variable-per-declaration": false, - "component-class-suffix": [true, "Page", "Component", "Modal"], - "directive-class-suffix": true, - "directive-selector": [true, "attribute", "app", "camelCase"], - "component-selector": [true, "element", "app", "page", "kebab-case"] - } -} From 7ecb9609733f700a9393b5a03ff9109039f751b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Mon, 9 Mar 2020 15:38:35 -0300 Subject: [PATCH 22/46] test: add network service test cases (#518) * test: Add test cases * refactor: add user data provider interface * refactor: add user data service implementation * test: disable code coverage by default Co-authored-by: Caio Alcantara --- .lintstagedrc.json | 5 +- angular.json | 2 +- karma.conf.js | 16 ++- package-lock.json | 15 +- package.json | 5 +- src/app/app.component.ts | 14 +- src/app/app.module.ts | 3 + .../custom-network/custom-network.ts | 8 +- .../input-amount/input-amount.component.ts | 6 +- src/app/components/pin-code/pin-code.ts | 8 +- .../wallet-picker/wallet-picker.modal.ts | 8 +- .../marketnet-only/marketnet-only.ts | 8 +- .../custom-network-edit.ts | 12 +- .../passphrase-word-tester.ts | 6 +- src/app/modals/wallet-backup/wallet-backup.ts | 8 +- .../contacts/contact-create/contact-create.ts | 8 +- .../contacts/contact-list/contact-list.ts | 8 +- .../delegate-detail/delegate-detail.ts | 6 +- src/app/pages/delegates/delegates.ts | 6 +- src/app/pages/login/login.ts | 6 +- .../network-overview/network-overview.page.ts | 8 +- .../profiles/profile-create/profile-create.ts | 12 +- .../profiles/profile-signin/profile-signin.ts | 10 +- src/app/pages/settings/settings.ts | 6 +- .../transaction-response.ts | 12 +- .../transaction-send/transaction-send.ts | 8 +- .../transaction-show/transaction-show.ts | 8 +- .../wallet-dashboard/wallet-dashboard.ts | 22 +-- .../wallet-import-manual.ts | 4 +- .../wallet-import/wallet-import.base.ts | 8 +- .../wallet/wallet-import/wallet-import.ts | 4 +- .../pages/wallet/wallet-list/wallet-list.ts | 22 +-- src/app/pipes/account-label/account-label.ts | 6 +- .../has-account-label/has-account-label.ts | 4 +- .../address-checker/address-checker.ts | 6 +- src/app/services/ark-api/ark-api.ts | 14 +- src/app/services/contacts/contacts.ts | 14 +- src/app/services/market-data/market-data.ts | 6 +- src/app/services/network/network.spec.ts | 33 +++++ src/app/services/network/network.ts | 8 +- .../services/user-data/user-data.interface.ts | 95 +++++++++++++ src/app/services/user-data/user-data.ts | 8 +- test/helpers.ts | 8 +- test/mocks.ts | 129 +++++++++++++++++- tsconfig.eslint.json | 5 +- 45 files changed, 445 insertions(+), 173 deletions(-) create mode 100644 src/app/services/network/network.spec.ts create mode 100644 src/app/services/user-data/user-data.interface.ts diff --git a/.lintstagedrc.json b/.lintstagedrc.json index d13ebdf2a..60bf2e1bc 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,5 +1,4 @@ { - "*.ts": ["npm run lint", "prettier --write"], - "src/**/*.ts": ["npm run lint --fix"], - "*.{css,pcss,scss,html,json,md,js}": ["prettier --write"] + "*.ts": ["prettier --write", "eslint --fix"], + "*.{css,pcss,scss,html,json,md,js}": ["prettier --write"] } diff --git a/angular.json b/angular.json index 3e85f078a..33050de17 100644 --- a/angular.json +++ b/angular.json @@ -109,7 +109,7 @@ "test": { "builder": "@angular-builders/custom-webpack:karma", "options": { - "codeCoverage": true, + "codeCoverage": false, "customWebpackConfig": { "path": "./webpack.config.js" }, diff --git a/karma.conf.js b/karma.conf.js index 5e35a15a5..4277227cd 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -4,17 +4,20 @@ process.env.CHROME_BIN = require("puppeteer").executablePath(); module.exports = function(config) { + const isCoverageEnabled = config.buildWebpack.options.codeCoverage; + config.set({ basePath: "", frameworks: ["jasmine", "@angular-devkit/build-angular"], plugins: [ - require("karma-jasmine"), - require("karma-chrome-launcher"), - require("karma-jasmine-html-reporter"), - require("karma-coverage-istanbul-reporter"), - require("@angular-devkit/build-angular/plugins/karma"), - require("karma-sabarivka-reporter"), + "karma-spec-reporter", + "karma-sabarivka-reporter", + "karma-coverage-istanbul-reporter", + "karma-jasmine", + "karma-chrome-launcher", + "@angular-devkit/build-angular/plugins/karma", ], + reporters: ["spec", isCoverageEnabled ? "sabarivka" : null], client: { clearContext: false, // leave Jasmine Spec Runner output visible in browser jasmine: { @@ -45,7 +48,6 @@ module.exports = function(config) { ], }, }, - reporters: ["progress", "kjhtml", "sabarivka"], port: 9876, colors: true, logLevel: config.LOG_INFO, diff --git a/package-lock.json b/package-lock.json index 4d8d4d9d1..8eec38e7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10578,12 +10578,6 @@ "jasmine-core": "^3.5.0" } }, - "karma-jasmine-html-reporter": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.2.tgz", - "integrity": "sha512-ILBPsXqQ3eomq+oaQsM311/jxsypw5/d0LnZXj26XkfThwq7jZ55A2CFSKJVA5VekbbOGvMyv7d3juZj0SeTxA==", - "dev": true - }, "karma-sabarivka-reporter": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/karma-sabarivka-reporter/-/karma-sabarivka-reporter-3.0.2.tgz", @@ -10660,6 +10654,15 @@ "source-map-support": "^0.5.5" } }, + "karma-spec-reporter": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz", + "integrity": "sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=", + "dev": true, + "requires": { + "colors": "^1.1.2" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", diff --git a/package.json b/package.json index c340ef9ec..cfa856c7f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "test:unit": "ng test", "test:coverage": "ng test --codeCoverage --watch=false --progress=false", "test:e2e": "ng e2e", - "lint": "eslint 'src/**/*.ts' --fix", + "lint": "eslint --ext .ts --ignore-path .gitignore .", + "lint:fix": "eslint --ext .ts --ignore-path .gitignore . --fix", "lab": "ionic serve --lab", "debug:ios": "PLATFORM=ios ionic cordova run ios --address=0.0.0.0 --debug --consolelogs -l", "build:ios": "PLATFORM=ios ionic cordova build ios --prod --release", @@ -126,8 +127,8 @@ "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~2.1.1", "karma-jasmine": "~3.1.1", - "karma-jasmine-html-reporter": "^1.5.2", "karma-sabarivka-reporter": "^3.0.2", + "karma-spec-reporter": "0.0.32", "lint-staged": "^10.0.8", "ng-lint-staged": "^0.1.6", "postcss-import": "^12.0.1", diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 6da07e23a..559e25b61 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -36,7 +36,7 @@ import * as constants from "@/app/app.constants"; import { Wallet } from "@/models/model"; import { AuthProvider } from "@/services/auth/auth"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { ArkApiProvider } from "./services/ark-api/ark-api"; import { EventBusProvider } from "./services/event-bus/event-bus"; @@ -73,7 +73,7 @@ export class AppComponent implements OnDestroy, OnInit { private toastProvider: ToastProvider, private authProvider: AuthProvider, private menuCtrl: MenuController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private arkApiProvider: ArkApiProvider, private settingsDataProvider: SettingsDataProvider, public element: ElementRef, @@ -330,13 +330,13 @@ export class AppComponent implements OnDestroy, OnInit { // Verify if new wallet is a delegate private onCreateWallet() { - return this.userDataProvider.onCreateWallet$ + return this.userDataService.onCreateWallet$ .pipe(takeUntil(this.unsubscriber$), debounceTime(500)) .subscribe((wallet: Wallet) => { this.arkApiProvider .getDelegateByPublicKey(wallet.publicKey) .subscribe(delegate => - this.userDataProvider.ensureWalletDelegateProperties( + this.userDataService.ensureWalletDelegateProperties( wallet, delegate, ), @@ -349,8 +349,8 @@ export class AppComponent implements OnDestroy, OnInit { this.authProvider.onLogin$ .pipe(takeUntil(this.unsubscriber$)) .subscribe(() => { - this.profile = this.userDataProvider.currentProfile; - this.network = this.userDataProvider.currentNetwork; + this.profile = this.userDataService.currentProfile; + this.network = this.userDataService.currentNetwork; return this.menuCtrl.enable(true, this.menuId); }); @@ -360,7 +360,7 @@ export class AppComponent implements OnDestroy, OnInit { this.authProvider.onLogout$ .pipe(takeUntil(this.unsubscriber$)) .subscribe(() => { - this.userDataProvider.clearCurrentWallet(); + this.userDataService.clearCurrentWallet(); this.menuCtrl.enable(false, this.menuId); return this.openPage("/login"); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 41b8af323..8984327fc 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -17,6 +17,8 @@ import { ChartsModule } from "ng2-charts"; import { AppRoutingModule } from "./app-routing.module"; import { AppComponent } from "./app.component"; +import { UserDataServiceImpl } from "./services/user-data/user-data"; +import { UserDataService } from "./services/user-data/user-data.interface"; export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, "./assets/i18n/", ".json"); @@ -49,6 +51,7 @@ export function createTranslateLoader(http: HttpClient) { SocialSharing, Network, ScreenOrientation, + { provide: UserDataService, useClass: UserDataServiceImpl }, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, ], bootstrap: [AppComponent], diff --git a/src/app/components/custom-network/custom-network.ts b/src/app/components/custom-network/custom-network.ts index 9b8067df1..b03c375ae 100644 --- a/src/app/components/custom-network/custom-network.ts +++ b/src/app/components/custom-network/custom-network.ts @@ -9,7 +9,7 @@ import { EditNetworkAction, } from "@/app/modals/custom-network-edit/custom-network-edit"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "customNetwork", @@ -32,7 +32,7 @@ export class CustomNetworkComponent implements OnInit { public activeNetworkChoice: { name: string; id?: string }; public constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private modalCtrl: ModalController, private toastProvider: ToastProvider, ) {} @@ -68,11 +68,11 @@ export class CustomNetworkComponent implements OnInit { } private loadNetworks(): void { - this.networks = this.userDataProvider.networks; + this.networks = this.userDataService.networks; this.networksIds = lodash.keys(this.networks); this.networkChoices = this.networksIds .filter(id => - this.userDataProvider.defaultNetworks.every( + this.userDataService.defaultNetworks.every( defaultNetwork => this.networks[id].name !== defaultNetwork.name, ), diff --git a/src/app/components/input-amount/input-amount.component.ts b/src/app/components/input-amount/input-amount.component.ts index 7517191a1..277413941 100644 --- a/src/app/components/input-amount/input-amount.component.ts +++ b/src/app/components/input-amount/input-amount.component.ts @@ -10,7 +10,7 @@ import * as constants from "@/app/app.constants"; import { MarketCurrency } from "@/models/model"; import { MarketDataProvider } from "@/services/market-data/market-data"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; @Component({ @@ -31,12 +31,12 @@ export class InputAmountComponent implements OnInit { public currentNetwork: Network; public constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private marketDataProvider: MarketDataProvider, private settingsDataProvider: SettingsDataProvider, private parentForm: FormGroupDirective, ) { - this.currentNetwork = this.userDataProvider.currentNetwork; + this.currentNetwork = this.userDataService.currentNetwork; } public ngOnInit() { diff --git a/src/app/components/pin-code/pin-code.ts b/src/app/components/pin-code/pin-code.ts index 8a77c59de..5782e5d6e 100644 --- a/src/app/components/pin-code/pin-code.ts +++ b/src/app/components/pin-code/pin-code.ts @@ -12,7 +12,7 @@ import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { Wallet, WalletKeys } from "@/models/model"; import { AuthProvider } from "@/services/auth/auth"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "pin-code", @@ -32,7 +32,7 @@ export class PinCodeComponent { close: EventEmitter = new EventEmitter(); constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private authProvider: AuthProvider, private toastProvider: ToastProvider, private modalCtrl: ModalController, @@ -77,7 +77,7 @@ export class PinCodeComponent { return this.executeOnSuccess(onSuccess); } - const passphrases = this.userDataProvider.getKeysByWallet( + const passphrases = this.userDataService.getKeysByWallet( this.wallet, data, ); @@ -143,7 +143,7 @@ export class PinCodeComponent { { message: updatingText }, ); loading.present().then(() => { - this.userDataProvider.updateWalletEncryption( + this.userDataService.updateWalletEncryption( oldPassword, password, ); diff --git a/src/app/components/wallet-picker/wallet-picker.modal.ts b/src/app/components/wallet-picker/wallet-picker.modal.ts index 99691b004..8a6e1a53e 100644 --- a/src/app/components/wallet-picker/wallet-picker.modal.ts +++ b/src/app/components/wallet-picker/wallet-picker.modal.ts @@ -3,7 +3,7 @@ import { ModalController } from "@ionic/angular"; import { Contact, Wallet } from "@/models/model"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ templateUrl: "wallet-picker.modal.html", @@ -15,13 +15,13 @@ export class WalletPickerModal implements OnInit { constructor( private modalCtrl: ModalController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private arkApiProvider: ArkApiProvider, ) {} ngOnInit() { - const profile = this.userDataProvider.currentProfile; - const network = this.userDataProvider.currentNetwork; + const profile = this.userDataService.currentProfile; + const network = this.userDataService.currentNetwork; this.symbol = network.symbol; this.contacts = Object.values(profile.contacts); this.wallets = Object.values(profile.wallets) diff --git a/src/app/directives/marketnet-only/marketnet-only.ts b/src/app/directives/marketnet-only/marketnet-only.ts index a3cbe23e5..5ef108697 100644 --- a/src/app/directives/marketnet-only/marketnet-only.ts +++ b/src/app/directives/marketnet-only/marketnet-only.ts @@ -1,20 +1,20 @@ import { Directive, ElementRef, OnInit } from "@angular/core"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Directive({ selector: "[appMarketNetOnly]", }) export class MarketNetOnlyDirective implements OnInit { constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private elementRef: ElementRef, ) {} ngOnInit() { if ( - !this.userDataProvider.currentNetwork.marketTickerName && - !this.userDataProvider.isMainNet + !this.userDataService.currentNetwork.marketTickerName && + !this.userDataService.isMainNet ) { this.elementRef.nativeElement.style.display = "none"; } diff --git a/src/app/modals/custom-network-edit/custom-network-edit.ts b/src/app/modals/custom-network-edit/custom-network-edit.ts index 698e0f163..defee8d4e 100644 --- a/src/app/modals/custom-network-edit/custom-network-edit.ts +++ b/src/app/modals/custom-network-edit/custom-network-edit.ts @@ -5,7 +5,7 @@ import lodash from "lodash"; import { StoredNetwork } from "@/models/stored-network"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; export enum EditNetworkAction { Update, @@ -31,11 +31,11 @@ export class CustomNetworkEditModal { public navParams: NavParams, private modalCtrl: ModalController, private alertCtrl: AlertController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private translateService: TranslateService, private toastProvider: ToastProvider, ) { - const defaultNetworksNames = this.userDataProvider.defaultNetworks.map( + const defaultNetworksNames = this.userDataService.defaultNetworks.map( item => item.name, ); this.network = this.navParams.get("network") || new StoredNetwork(); @@ -66,7 +66,7 @@ export class CustomNetworkEditModal { } public save(): void { - this.userDataProvider + this.userDataService .addOrUpdateNetwork(this.network, this.networkId) .subscribe(network => this.dismiss({ @@ -79,7 +79,7 @@ export class CustomNetworkEditModal { public prepareDelete(): void { if ( lodash.some( - this.userDataProvider.profiles, + this.userDataService.profiles, (p: any) => p.networkId === this.networkId, ) ) { @@ -110,7 +110,7 @@ export class CustomNetworkEditModal { } private delete(): void { - this.userDataProvider.removeNetworkById(this.networkId).subscribe(() => + this.userDataService.removeNetworkById(this.networkId).subscribe(() => this.dismiss({ action: EditNetworkAction.Delete, networkId: this.networkId, diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts b/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts index 602bfe937..d1ae69750 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.ts @@ -2,7 +2,7 @@ import { Component, Input, ViewChild } from "@angular/core"; import { ModalController, NavController } from "@ionic/angular"; import { PassphraseInputComponent } from "@/components/passphrase-input/passphrase-input"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "modal-passphrase-word-tester", @@ -25,13 +25,13 @@ export class PassphraseWordTesterModal { public constructor( public navCtrl: NavController, private modalCtrl: ModalController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, ) { if (!this.passphraseReference) { this.dismiss(); } - this.isDevNet = this.userDataProvider.isDevNet; + this.isDevNet = this.userDataService.isDevNet; if (this.isDevNet) { this.passphraseInit = this.passphraseReference; } diff --git a/src/app/modals/wallet-backup/wallet-backup.ts b/src/app/modals/wallet-backup/wallet-backup.ts index 6ba5cfc83..1b9a2c757 100644 --- a/src/app/modals/wallet-backup/wallet-backup.ts +++ b/src/app/modals/wallet-backup/wallet-backup.ts @@ -5,7 +5,7 @@ import * as bip39 from "bip39"; import { AccountBackup, WalletKeys } from "@/models/model"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { PassphraseWordTesterModal } from "../passphrase-word-tester/passphrase-word-tester"; @@ -36,14 +36,14 @@ export class WalletBackupModal implements OnInit { constructor( public navCtrl: NavController, private modalCtrl: ModalController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private settingsDataProvider: SettingsDataProvider, ) { if (!this.title || (!this.entropy && !this.keys)) { this.dismiss(); } - this.currentNetwork = this.userDataProvider.currentNetwork; + this.currentNetwork = this.userDataService.currentNetwork; this.settingsDataProvider.settings.subscribe( settings => (this.wordlistLanguage = settings.wordlistLanguage), ); @@ -94,7 +94,7 @@ export class WalletBackupModal implements OnInit { const pbKey = pvKey.getPublicKey(); pbKey.setNetwork(this.currentNetwork); - const wallet = this.userDataProvider.getWalletByAddress( + const wallet = this.userDataService.getWalletByAddress( pbKey.getAddress(), ); diff --git a/src/app/pages/contacts/contact-create/contact-create.ts b/src/app/pages/contacts/contact-create/contact-create.ts index 5c6a91649..8751901bd 100644 --- a/src/app/pages/contacts/contact-create/contact-create.ts +++ b/src/app/pages/contacts/contact-create/contact-create.ts @@ -10,7 +10,7 @@ import { QRCodeScheme } from "@/models/model"; import { TranslatableObject } from "@/models/translate"; import { ContactsProvider } from "@/services/contacts/contacts"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-contact-create", @@ -33,7 +33,7 @@ export class ContactCreatePage implements OnInit { constructor( private navCtrl: NavController, private route: ActivatedRoute, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private contactsProvider: ContactsProvider, private translateService: TranslateService, private alertCtrl: AlertController, @@ -41,7 +41,7 @@ export class ContactCreatePage implements OnInit { ) {} ngOnInit() { - this.currentNetwork = this.userDataProvider.currentNetwork; + this.currentNetwork = this.userDataService.currentNetwork; const contact = this.route.snapshot.queryParamMap.get("contact"); this.address = this.route.snapshot.queryParamMap.get("address"); @@ -54,7 +54,7 @@ export class ContactCreatePage implements OnInit { this.address = contactMap.address; } - this.currentNetwork = this.userDataProvider.currentNetwork; + this.currentNetwork = this.userDataService.currentNetwork; } validateAddress() { diff --git a/src/app/pages/contacts/contact-list/contact-list.ts b/src/app/pages/contacts/contact-list/contact-list.ts index e4afeb10b..eb0049a74 100644 --- a/src/app/pages/contacts/contact-list/contact-list.ts +++ b/src/app/pages/contacts/contact-list/contact-list.ts @@ -11,7 +11,7 @@ import { takeUntil } from "rxjs/operators"; import { AddressMap } from "@/models/contact"; import { ContactsProvider } from "@/services/contacts/contacts"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-contact-list", @@ -27,7 +27,7 @@ export class ContactListPage { constructor( private navCtrl: NavController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private contactsProvider: ContactsProvider, private translateService: TranslateService, private alertCtrl: AlertController, @@ -125,8 +125,8 @@ export class ContactListPage { } private _load() { - this.profile = this.userDataProvider.currentProfile; - this.network = this.userDataProvider.currentNetwork; + this.profile = this.userDataService.currentProfile; + this.network = this.userDataService.currentNetwork; this.addresses = lodash(this.profile.contacts) .mapValues("name") diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.ts index 2203be58f..29f27b0c2 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.ts @@ -14,7 +14,7 @@ import lodash from "lodash"; import { Wallet } from "@/models/wallet"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-delegate-detail", @@ -38,7 +38,7 @@ export class DelegateDetailPage { private arkApiProvider: ArkApiProvider, private modalCtrl: ModalController, private clipboard: Clipboard, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private alertCtrl: AlertController, private translateService: TranslateService, private toastProvider: ToastProvider, @@ -48,7 +48,7 @@ export class DelegateDetailPage { this.qraddress = `'{a: "${this.delegate.address}"}'`; this.currentNetwork = this.arkApiProvider.network; - this.currentWallet = this.userDataProvider.currentWallet; + this.currentWallet = this.userDataService.currentWallet; if (!this.delegate) { this.navCtrl.pop(); diff --git a/src/app/pages/delegates/delegates.ts b/src/app/pages/delegates/delegates.ts index f97eae3bb..93e54bd07 100644 --- a/src/app/pages/delegates/delegates.ts +++ b/src/app/pages/delegates/delegates.ts @@ -17,7 +17,7 @@ import { Wallet, WalletKeys } from "@/models/model"; import { StoredNetwork } from "@/models/stored-network"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { DelegateDetailPage } from "./delegate-detail/delegate-detail"; @@ -72,7 +72,7 @@ export class DelegatesPage implements OnDestroy { private arkApiProvider: ArkApiProvider, private zone: NgZone, private modalCtrl: ModalController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private toastProvider: ToastProvider, ) {} @@ -167,7 +167,7 @@ export class DelegatesPage implements OnDestroy { ionViewDidEnter() { this.currentNetwork = this.arkApiProvider.network; - this.currentWallet = this.userDataProvider.currentWallet; + this.currentWallet = this.userDataService.currentWallet; this.zone.runOutsideAngular(() => { this.arkApiProvider.delegates.subscribe(data => this.zone.run(() => { diff --git a/src/app/pages/login/login.ts b/src/app/pages/login/login.ts index 4a9446b37..8f3f0dda7 100644 --- a/src/app/pages/login/login.ts +++ b/src/app/pages/login/login.ts @@ -3,7 +3,7 @@ import { isNil } from "lodash"; import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { AuthProvider } from "@/services/auth/auth"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-login", @@ -19,12 +19,12 @@ export class LoginPage implements OnInit { constructor( private authProvider: AuthProvider, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, ) {} ngOnInit() { this.authProvider.getMasterPassword().subscribe(master => { - this.hasProfiles = master && !isNil(this.userDataProvider.profiles); + this.hasProfiles = master && !isNil(this.userDataService.profiles); this.isReady = true; }); } diff --git a/src/app/pages/network/network-overview/network-overview.page.ts b/src/app/pages/network/network-overview/network-overview.page.ts index 353d6b341..f7dc5916c 100644 --- a/src/app/pages/network/network-overview/network-overview.page.ts +++ b/src/app/pages/network/network-overview/network-overview.page.ts @@ -11,7 +11,7 @@ import { } from "@/app/modals/custom-network-edit/custom-network-edit"; import { AddressMap, StoredNetwork } from "@/models/model"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ templateUrl: "network-overview.page.html", @@ -24,7 +24,7 @@ export class NetworkOverviewPage { private translateService: TranslateService, private actionSheetCtrl: ActionSheetController, private toastProvider: ToastProvider, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private modalCtrl: ModalController, ) {} @@ -52,8 +52,8 @@ export class NetworkOverviewPage { } load() { - this.networks = this.userDataProvider.networks; - const defaultNetworks = this.userDataProvider.defaultNetworks.map( + this.networks = this.userDataService.networks; + const defaultNetworks = this.userDataService.defaultNetworks.map( item => item.name, ); diff --git a/src/app/pages/profiles/profile-create/profile-create.ts b/src/app/pages/profiles/profile-create/profile-create.ts index 0c7abb59b..6b1c2ba5d 100644 --- a/src/app/pages/profiles/profile-create/profile-create.ts +++ b/src/app/pages/profiles/profile-create/profile-create.ts @@ -8,7 +8,7 @@ import { takeUntil } from "rxjs/operators"; import { Profile } from "@/models/profile"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-profile-create", @@ -33,7 +33,7 @@ export class ProfileCreatePage implements OnDestroy { constructor( public navCtrl: NavController, private alertCtrl: AlertController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private toastProvider: ToastProvider, private translateService: TranslateService, ) {} @@ -47,7 +47,7 @@ export class ProfileCreatePage implements OnDestroy { } submitForm() { - const existingProfile = this.userDataProvider.getProfileByName( + const existingProfile = this.userDataService.getProfileByName( this.newProfile.name, ); @@ -63,7 +63,7 @@ export class ProfileCreatePage implements OnDestroy { profile.name = this.newProfile.name; profile.networkId = this.newProfile.networkId; - this.userDataProvider + this.userDataService .addProfile(profile) .pipe(takeUntil(this.unsubscriber$)) .subscribe( @@ -83,11 +83,11 @@ export class ProfileCreatePage implements OnDestroy { this.translateService .get("PROFILES_PAGE.CUSTOM") .subscribe(customTrans => { - this.networks = this.userDataProvider.networks; + this.networks = this.userDataService.networks; this.networksIds = lodash.keys(this.networks); this.networkChoices = this.networksIds .filter(id => - this.userDataProvider.defaultNetworks.some( + this.userDataService.defaultNetworks.some( defaultNetwork => this.networks[id].name === defaultNetwork.name, ), diff --git a/src/app/pages/profiles/profile-signin/profile-signin.ts b/src/app/pages/profiles/profile-signin/profile-signin.ts index ce0aac342..ac47c7b04 100644 --- a/src/app/pages/profiles/profile-signin/profile-signin.ts +++ b/src/app/pages/profiles/profile-signin/profile-signin.ts @@ -16,7 +16,7 @@ import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { AddressMap } from "@/models/model"; import { AuthProvider } from "@/services/auth/auth"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-profile-signin", @@ -37,7 +37,7 @@ export class ProfileSigninPage implements OnDestroy { constructor( public platform: Platform, public navCtrl: NavController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private translateService: TranslateService, private authProvider: AuthProvider, private toastProvider: ToastProvider, @@ -98,7 +98,7 @@ export class ProfileSigninPage implements OnDestroy { } delete(profileId: string) { - return this.userDataProvider + return this.userDataService .removeProfileById(profileId) .pipe(takeUntil(this.unsubscriber$)) .subscribe(() => { @@ -133,8 +133,8 @@ export class ProfileSigninPage implements OnDestroy { } load() { - this.profiles = this.userDataProvider.profiles; - this.networks = this.userDataProvider.networks; + this.profiles = this.userDataService.profiles; + this.networks = this.userDataService.networks; this.addresses = lodash(this.profiles) .mapValues(o => [o.name, o.networkId]) diff --git a/src/app/pages/settings/settings.ts b/src/app/pages/settings/settings.ts index 099830b73..800fd0d8f 100644 --- a/src/app/pages/settings/settings.ts +++ b/src/app/pages/settings/settings.ts @@ -14,7 +14,7 @@ import * as constants from "@/app/app.constants"; import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; const packageJson = require("@@/package.json"); @@ -47,10 +47,10 @@ export class SettingsPage implements OnInit, OnDestroy { private translateService: TranslateService, private modalCtrl: ModalController, private inAppBrowser: InAppBrowser, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, ) { this.availableOptions = this.settingsDataProvider.AVALIABLE_OPTIONS; - this.currentWallet = this.userDataProvider.currentWallet; + this.currentWallet = this.userDataService.currentWallet; } async openChangePinPage() { diff --git a/src/app/pages/transaction/transaction-response/transaction-response.ts b/src/app/pages/transaction/transaction-response/transaction-response.ts index 6de7c0c96..57536bad7 100644 --- a/src/app/pages/transaction/transaction-response/transaction-response.ts +++ b/src/app/pages/transaction/transaction-response/transaction-response.ts @@ -6,7 +6,7 @@ import { ModalController, NavController } from "@ionic/angular"; import { StoredNetwork, Transaction, Wallet } from "@/models/model"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-transaction-response", @@ -27,13 +27,13 @@ export class TransactionResponsePage { public navCtrl: NavController, private clipboard: Clipboard, private modalCtrl: ModalController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private toastProvider: ToastProvider, private iab: InAppBrowser, private route: ActivatedRoute, ) { - this.wallet = this.userDataProvider.currentWallet; - this.currentNetwork = this.userDataProvider.currentNetwork; + this.wallet = this.userDataService.currentWallet; + this.currentNetwork = this.userDataService.currentNetwork; this.response = this.route.snapshot.queryParamMap.get("response"); const transaction = this.route.snapshot.queryParamMap.get( @@ -82,8 +82,8 @@ export class TransactionResponsePage { // modal.onDidDismiss().then((({ data }) => { // if (!data.password) { return; } - // this.userDataProvider.encryptSecondPassphrase(this.wallet, data.password, this.keys.secondPassphrase).subscribe(() => { - // this.wallet = this.userDataProvider.getWalletByAddress(this.wallet.address); + // this.userDataService.encryptSecondPassphrase(this.wallet, data.password, this.keys.secondPassphrase).subscribe(() => { + // this.wallet = this.userDataService.getWalletByAddress(this.wallet.address); // this.showKeepSecondPassphrase = false; // this.presentEncryptedAlert(); diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index 06247f228..87c0b0409 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -29,7 +29,7 @@ import { AddressCheckResult } from "@/services/address-checker/address-check-res import { AddressCheckerProvider } from "@/services/address-checker/address-checker"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { ArkUtility } from "@/utils/ark-utility"; import { SafeBigNumber } from "@/utils/bignumber"; @@ -74,7 +74,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { private unsubscriber$: Subject = new Subject(); constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private arkApiProvider: ArkApiProvider, private toastProvider: ToastProvider, private modalCtrl: ModalController, @@ -85,8 +85,8 @@ export class TransactionSendPage implements OnInit, OnDestroy { private route: ActivatedRoute, private routerOutlet: IonRouterOutlet, ) { - this.currentWallet = this.userDataProvider.currentWallet; - this.currentNetwork = this.userDataProvider.currentNetwork; + this.currentWallet = this.userDataService.currentWallet; + this.currentNetwork = this.userDataService.currentNetwork; } toggleSendAll() { diff --git a/src/app/pages/transaction/transaction-show/transaction-show.ts b/src/app/pages/transaction/transaction-show/transaction-show.ts index 3438b780b..48226c94d 100644 --- a/src/app/pages/transaction/transaction-show/transaction-show.ts +++ b/src/app/pages/transaction/transaction-show/transaction-show.ts @@ -8,7 +8,7 @@ import { StoredNetwork, Wallet } from "@/models/model"; import { TransactionEntity } from "@/models/transaction"; import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; import { ContactsProvider } from "@/services/contacts/contacts"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-transaction-show", @@ -28,15 +28,15 @@ export class TransactionShowPage { constructor( private navCtrl: NavController, private route: ActivatedRoute, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private contactsProvider: ContactsProvider, private inAppBrowser: InAppBrowser, private actionSheetCtrl: ActionSheetController, private translateService: TranslateService, private truncateMiddlePipe: TruncateMiddlePipe, ) { - this.currentNetwork = this.userDataProvider.currentNetwork; - this.currentWallet = this.userDataProvider.currentWallet; + this.currentNetwork = this.userDataService.currentNetwork; + this.currentWallet = this.userDataService.currentWallet; const transaction = this.route.snapshot.queryParamMap.get( "transaction", diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts index 109a6053c..30c55a343 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts @@ -34,7 +34,7 @@ import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { MarketDataProvider } from "@/services/market-data/market-data"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { SetLabelPage } from "./modal/set-label/set-label"; @@ -85,7 +85,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { constructor( private navCtrl: NavController, private route: ActivatedRoute, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private arkApiProvider: ArkApiProvider, private actionSheetCtrl: ActionSheetController, private translateService: TranslateService, @@ -103,9 +103,9 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.navCtrl.pop(); } - this.profile = this.userDataProvider.currentProfile; - this.network = this.userDataProvider.currentNetwork; - this.setWallet(this.userDataProvider.getWalletByAddress(this.address)); + this.profile = this.userDataService.currentProfile; + this.network = this.userDataService.currentNetwork; + this.setWallet(this.userDataService.getWalletByAddress(this.address)); } copyAddress() { @@ -280,7 +280,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { modal.onDidDismiss().then(({ data, role }) => { if (role === "submit") { - this.userDataProvider + this.userDataService .setWalletLabel(this.wallet, data) .pipe( catchError(error => { @@ -396,11 +396,11 @@ export class WalletDashboardPage implements OnInit, OnDestroy { } private saveWallet() { - this.userDataProvider.updateWallet(this.wallet, this.profile.profileId); + this.userDataService.updateWallet(this.wallet, this.profile.profileId); } private deleteWallet() { - this.userDataProvider.removeWalletByAddress(this.wallet.address); + this.userDataService.removeWalletByAddress(this.wallet.address); this.navCtrl.navigateRoot("/wallets"); } @@ -453,7 +453,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.arkApiProvider .getDelegateByPublicKey(this.wallet.publicKey) .subscribe(delegate => - this.userDataProvider.ensureWalletDelegateProperties( + this.userDataService.ensureWalletDelegateProperties( this.wallet, delegate, ), @@ -482,7 +482,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { } private onUpdateWallet() { - this.userDataProvider.onUpdateWallet$ + this.userDataService.onUpdateWallet$ .pipe(takeUntil(this.unsubscriber$), debounceTime(500)) .subscribe(wallet => { if ( @@ -508,7 +508,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { return; } - this.userDataProvider.setCurrentWallet(this.wallet); + this.userDataService.setCurrentWallet(this.wallet); const transactions = this.wallet.transactions; this.emptyTransactions = lodash.isEmpty(transactions); diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts index 633bd0a42..70cb445d2 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts @@ -14,7 +14,7 @@ import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { NetworkProvider } from "@/services/network/network"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-wallet-import-passphrase", @@ -47,7 +47,7 @@ export class WalletManualImportPage extends BaseWalletImport { constructor( route: ActivatedRoute, navCtrl: NavController, - userDataProvider: UserDataProvider, + userDataProvider: UserDataService, arkApiProvider: ArkApiProvider, toastProvider: ToastProvider, modalCtrl: ModalController, diff --git a/src/app/pages/wallet/wallet-import/wallet-import.base.ts b/src/app/pages/wallet/wallet-import/wallet-import.base.ts index fd5fd7d17..c92731e9b 100644 --- a/src/app/pages/wallet/wallet-import/wallet-import.base.ts +++ b/src/app/pages/wallet/wallet-import/wallet-import.base.ts @@ -11,7 +11,7 @@ import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { NetworkProvider } from "@/services/network/network"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; export abstract class BaseWalletImport { public existingAddress: string; @@ -20,7 +20,7 @@ export abstract class BaseWalletImport { constructor( protected route: ActivatedRoute, protected navCtrl: NavController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private arkApiProvider: ArkApiProvider, protected toastProvider: ToastProvider, private modalCtrl: ModalController, @@ -92,7 +92,7 @@ export abstract class BaseWalletImport { this.addWallet(newWallet); } else { // if we are converting watch-only to full wallet, keep label from existing watch-only wallet - const existingWallet = this.userDataProvider.getWalletByAddress( + const existingWallet = this.userDataService.getWalletByAddress( address, ); if (existingWallet) { @@ -149,7 +149,7 @@ export abstract class BaseWalletImport { passphrase?: string, password?: string, ): void { - this.userDataProvider + this.userDataService .addWallet(newWallet, passphrase, password) .subscribe(() => { this.navCtrl.navigateRoot("/wallets/dashboard", { diff --git a/src/app/pages/wallet/wallet-import/wallet-import.ts b/src/app/pages/wallet/wallet-import/wallet-import.ts index dae48d687..131541bb6 100644 --- a/src/app/pages/wallet/wallet-import/wallet-import.ts +++ b/src/app/pages/wallet/wallet-import/wallet-import.ts @@ -9,7 +9,7 @@ import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { NetworkProvider } from "@/services/network/network"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-wallet-import", @@ -23,7 +23,7 @@ export class WalletImportPage extends BaseWalletImport implements OnInit { constructor( route: ActivatedRoute, navCtrl: NavController, - userDataProvider: UserDataProvider, + userDataProvider: UserDataService, arkApiProvider: ArkApiProvider, toastProvider: ToastProvider, modalCtrl: ModalController, diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 5e9fb31b7..429936912 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -27,7 +27,7 @@ import { import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { MarketDataProvider } from "@/services/market-data/market-data"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-wallet-list", @@ -75,7 +75,7 @@ export class WalletListPage implements OnInit, OnDestroy { constructor( public navCtrl: NavController, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private marketDataProvider: MarketDataProvider, private modalCtrl: ModalController, private actionSheetCtrl: ActionSheetController, @@ -88,12 +88,12 @@ export class WalletListPage implements OnInit, OnDestroy { ngOnInit() { this.loadUserData(); - this.userDataProvider.clearCurrentWallet(); + this.userDataService.clearCurrentWallet(); } async onSlideChanged() { const realIndex = await this.slider.getActiveIndex(); - this.selectedWallet = this.userDataProvider.getWalletByAddress( + this.selectedWallet = this.userDataService.getWalletByAddress( this.wallets[realIndex].address, ); } @@ -106,7 +106,7 @@ export class WalletListPage implements OnInit, OnDestroy { }, }) .then(() => { - this.userDataProvider + this.userDataService .updateWallet(wallet, this.currentProfile.profileId) .subscribe(() => { this.loadWallets(); @@ -242,7 +242,7 @@ export class WalletListPage implements OnInit, OnDestroy { return; } - this.userDataProvider + this.userDataService .addWallet(wallet, account.mnemonic, password) .pipe(takeUntil(this.unsubscriber$)) .subscribe(() => { @@ -284,22 +284,22 @@ export class WalletListPage implements OnInit, OnDestroy { this.wallets = lodash.orderBy(list, ["lastUpdate"], ["desc"]); if (!this.selectedWallet && this.wallets.length) { - this.selectedWallet = this.userDataProvider.getWalletByAddress( + this.selectedWallet = this.userDataService.getWalletByAddress( this.wallets[0].address, ); } } private loadUserData() { - this.currentNetwork = this.userDataProvider.currentNetwork; - this.currentProfile = this.userDataProvider.currentProfile; + this.currentNetwork = this.userDataService.currentNetwork; + this.currentProfile = this.userDataService.currentProfile; } private onCreateUpdateWallet() { - this.userDataProvider.onCreateWallet$ + this.userDataService.onCreateWallet$ .pipe(takeUntil(this.unsubscriber$)) .subscribe(() => this.loadWallets()); - this.userDataProvider.onUpdateWallet$ + this.userDataService.onUpdateWallet$ .pipe(takeUntil(this.unsubscriber$)) .subscribe(() => this.loadWallets()); } diff --git a/src/app/pipes/account-label/account-label.ts b/src/app/pipes/account-label/account-label.ts index 857a25a80..e58949662 100644 --- a/src/app/pipes/account-label/account-label.ts +++ b/src/app/pipes/account-label/account-label.ts @@ -1,14 +1,14 @@ import { Pipe, PipeTransform } from "@angular/core"; import { ContactsProvider } from "@/services/contacts/contacts"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Pipe({ name: "accountLabel", }) export class AccountLabelPipe implements PipeTransform { constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private contactsProvider: ContactsProvider, ) {} @@ -18,7 +18,7 @@ export class AccountLabelPipe implements PipeTransform { return contact.name; } - const label = this.userDataProvider.getWalletLabel(value); + const label = this.userDataService.getWalletLabel(value); if (label) { return label; } diff --git a/src/app/pipes/has-account-label/has-account-label.ts b/src/app/pipes/has-account-label/has-account-label.ts index 89942f9df..fa497bca7 100644 --- a/src/app/pipes/has-account-label/has-account-label.ts +++ b/src/app/pipes/has-account-label/has-account-label.ts @@ -2,7 +2,7 @@ import { Pipe, PipeTransform } from "@angular/core"; import { AccountLabelPipe } from "@/pipes/account-label/account-label"; import { ContactsProvider } from "@/services/contacts/contacts"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Pipe({ name: "hasAccountLabel", @@ -11,7 +11,7 @@ export class HasAccountLabelPipe implements PipeTransform { private accountLabelPipe: AccountLabelPipe; constructor( - userDataProvider: UserDataProvider, + userDataProvider: UserDataService, contactsProvider: ContactsProvider, ) { this.accountLabelPipe = new AccountLabelPipe( diff --git a/src/app/services/address-checker/address-checker.ts b/src/app/services/address-checker/address-checker.ts index 18fa3efde..281cbe995 100644 --- a/src/app/services/address-checker/address-checker.ts +++ b/src/app/services/address-checker/address-checker.ts @@ -7,7 +7,7 @@ import { AddressCheckResultType } from "@/services/address-checker/address-check import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { NeoApiProvider } from "@/services/neo-api/neo-api"; import { NetworkProvider } from "@/services/network/network"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { CompleteHandler } from "../../utils/complete-handler"; @@ -15,7 +15,7 @@ import { CompleteHandler } from "../../utils/complete-handler"; export class AddressCheckerProvider { public constructor( private networkProvider: NetworkProvider, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private arkApiProvider: ArkApiProvider, private neoApiProvider: NeoApiProvider, ) {} @@ -112,7 +112,7 @@ export class AddressCheckerProvider { } public isOwnAddress(address: string): boolean { - return this.userDataProvider.currentWallet.address === address; + return this.userDataService.currentWallet.address === address; } public hasTransactions(address: string): Observable { diff --git a/src/app/services/ark-api/ark-api.ts b/src/app/services/ark-api/ark-api.ts index 70a4eda9e..b9c066b03 100644 --- a/src/app/services/ark-api/ark-api.ts +++ b/src/app/services/ark-api/ark-api.ts @@ -17,7 +17,7 @@ import { import { FeeStatistic, StoredNetwork } from "@/models/stored-network"; import { StorageProvider } from "@/services/storage/storage"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; import { PeerDiscovery } from "@/utils/ark-peer-discovery"; import { SafeBigNumber as BigNumber } from "@/utils/bignumber"; @@ -61,13 +61,13 @@ export class ArkApiProvider { constructor( private httpClient: HttpClient, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private storageProvider: StorageProvider, private toastProvider: ToastProvider, ) { this.loadData(); - this.userDataProvider.onActivateNetwork$.subscribe(network => { + this.userDataService.onActivateNetwork$.subscribe(network => { if (lodash.isEmpty(network)) { return; } @@ -152,7 +152,7 @@ export class ArkApiProvider { ) .subscribe(); - this.userDataProvider.onUpdateNetwork$.next(this._network); + this.userDataService.onUpdateNetwork$.next(this._network); this.fetchFees().subscribe(); } @@ -250,7 +250,7 @@ export class ArkApiProvider { return observer.complete(); } - const wallet = this.userDataProvider.getWalletByAddress( + const wallet = this.userDataService.getWalletByAddress( transaction.address, ); @@ -435,9 +435,9 @@ export class ArkApiProvider { this.onUpdatePeer$.next(peer); } // Save in localStorage - this.userDataProvider.addOrUpdateNetwork( + this.userDataService.addOrUpdateNetwork( this._network, - this.userDataProvider.currentProfile.networkId, + this.userDataService.currentProfile.networkId, ); this._api = new arkts.Client(this._network); this._client = new ArkClient( diff --git a/src/app/services/contacts/contacts.ts b/src/app/services/contacts/contacts.ts index 0a98be21d..7da6fb7f5 100644 --- a/src/app/services/contacts/contacts.ts +++ b/src/app/services/contacts/contacts.ts @@ -6,12 +6,12 @@ import { Contact } from "@/models/contact"; import { TranslatableObject } from "@/models/model"; import { Profile } from "@/models/profile"; import { NetworkProvider } from "@/services/network/network"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Injectable({ providedIn: "root" }) export class ContactsProvider { public constructor( - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, private networkProvider: NetworkProvider, ) {} @@ -49,7 +49,7 @@ export class ContactsProvider { contacts[address] = { address, name } as Contact; profile.contacts = contacts; - return this.userDataProvider.saveProfiles(); + return this.userDataService.saveProfiles(); } public editContact(address: string, name: string): Observable { @@ -78,7 +78,7 @@ export class ContactsProvider { contact.name = name; const profile = this.getProfile(); profile.contacts[address] = contact; - return this.userDataProvider.saveProfiles(); + return this.userDataService.saveProfiles(); } public removeContactByAddress(address: string): Observable { @@ -86,7 +86,7 @@ export class ContactsProvider { profile.contacts = lodash.omit(profile.contacts, [address]); - return this.userDataProvider.saveProfiles(); + return this.userDataService.saveProfiles(); } public getContactByAddress(address: string, profileId?: string): Contact { @@ -115,10 +115,10 @@ export class ContactsProvider { private getProfile(profileId?: string): Profile { if (profileId) { - return this.userDataProvider.getProfileById(profileId); + return this.userDataService.getProfileById(profileId); } - const profile: Profile = this.userDataProvider.getCurrentProfile(); + const profile: Profile = this.userDataService.getCurrentProfile(); if (!profile) { throw new Error( "This service can only be used if a current profile is set!", diff --git a/src/app/services/market-data/market-data.ts b/src/app/services/market-data/market-data.ts index 612f785dc..6c76b0ef6 100644 --- a/src/app/services/market-data/market-data.ts +++ b/src/app/services/market-data/market-data.ts @@ -8,7 +8,7 @@ import * as model from "@/models/market"; import { UserSettings } from "@/models/settings"; import { SettingsDataProvider } from "@/services/settings-data/settings-data"; import { StorageProvider } from "@/services/storage/storage"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Injectable({ providedIn: "root" }) export class MarketDataProvider { @@ -24,14 +24,14 @@ export class MarketDataProvider { private marketHistory: model.MarketHistory; private get marketTickerName(): string { - return this.userDataProvider.currentNetwork.marketTickerName || "ARK"; + return this.userDataService.currentNetwork.marketTickerName || "ARK"; } constructor( private http: HttpClient, private storageProvider: StorageProvider, private settingsDataProvider: SettingsDataProvider, - private userDataProvider: UserDataProvider, + private userDataService: UserDataService, ) { this.loadData(); this.fetchTicker(); diff --git a/src/app/services/network/network.spec.ts b/src/app/services/network/network.spec.ts new file mode 100644 index 000000000..fb1e0afca --- /dev/null +++ b/src/app/services/network/network.spec.ts @@ -0,0 +1,33 @@ +import { UserDataProviderMock } from "@@/test/mocks"; +import { StoredNetwork } from "@/models/model"; + +import { NetworkProvider } from "./network"; + +const VALID_ADDRESS = "D8x2Rno1CxrE5kRoVHS1EooQnfTL3v5ZyM"; +const INVALID_ADDRESS = "D8x2Rno1CxrE5kRoVHS1EooQnfTL3v5z12"; + +const network = new StoredNetwork(); +network.version = 30; + +const userDataProvider = new UserDataProviderMock(); +userDataProvider.currentNetwork = network; + +const networkProvider = new NetworkProvider(userDataProvider); + +describe("Network service", () => { + it("should pass with an valid address", () => { + expect(networkProvider.isValidAddress(VALID_ADDRESS, 30)).toBe(true); + }); + + it("should fail with an invalid address", () => { + expect(networkProvider.isValidAddress(INVALID_ADDRESS, 30)).toBe(false); + }); + + it("should validate and address without version specified", () => { + expect(networkProvider.isValidAddress(VALID_ADDRESS)).toBe(true); + }); + + it("should return the current network", () => { + expect(networkProvider.currentNetwork).toEqual(network); + }); +}); diff --git a/src/app/services/network/network.ts b/src/app/services/network/network.ts index 111ff11d4..9a0ba5a44 100644 --- a/src/app/services/network/network.ts +++ b/src/app/services/network/network.ts @@ -3,16 +3,16 @@ import { Network } from "ark-ts"; import { PublicKey } from "ark-ts/core"; import { isNil } from "lodash"; -import { UserDataProvider } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Injectable({ providedIn: "root" }) export class NetworkProvider { + public constructor(private userDataService: UserDataService) {} + public get currentNetwork(): Network { - return this.userDataProvider.currentNetwork; + return this.userDataService.currentNetwork; } - public constructor(private userDataProvider: UserDataProvider) {} - public isValidAddress(address: string, specificVersion?: number): boolean { const network: Network = !isNil(specificVersion) ? ({ version: specificVersion } as any) diff --git a/src/app/services/user-data/user-data.interface.ts b/src/app/services/user-data/user-data.interface.ts new file mode 100644 index 000000000..a291dc274 --- /dev/null +++ b/src/app/services/user-data/user-data.interface.ts @@ -0,0 +1,95 @@ +import { Injectable } from "@angular/core"; +import { Delegate, Network } from "ark-ts/model"; +import { Observable, Subject } from "rxjs"; + +import { Profile, StoredNetwork, Wallet, WalletKeys } from "@/models/model"; + +@Injectable() +export abstract class UserDataService { + public currentNetwork: StoredNetwork; + public currentWallet: Wallet; + public currentProfile: Profile; + + public profiles: Record; + public networks: Record; + + public onActivateNetwork$: Subject; + public onUpdateNetwork$: Subject; + public onCreateWallet$: Subject; + public onUpdateWallet$: Subject; + public onSelectProfile$: Subject; + + public abstract get isDevNet(): boolean; + public abstract get isMainNet(): boolean; + public abstract get defaultNetworks(): Network[]; + + public abstract addOrUpdateNetwork( + network: StoredNetwork, + networkId?: string, + ): Observable<{ + network: Network; + id: string; + }>; + public abstract getNetworkById(networkId: string): StoredNetwork; + public abstract removeNetworkById(networkId: string): any; + public abstract addProfile(profile: Profile): any; + public abstract getProfileByName(name: string): any; + public abstract getProfileById(profileId: string): any; + public abstract removeProfileById(profileId: string): any; + public abstract saveProfiles(profiles?: { [key: string]: any }): any; + public abstract encryptSecondPassphrase( + wallet: Wallet, + pinCode: string, + secondPassphrase: string, + profileId?: string, + ): any; + public abstract addWallet( + wallet: Wallet, + passphrase: string, + pinCode: string, + profileId?: string, + ): any; + public abstract updateWalletEncryption( + oldPassword: string, + newPassword: string, + ): any; + public abstract removeWalletByAddress( + address: string, + profileId?: string, + ): void; + public abstract ensureWalletDelegateProperties( + wallet: Wallet, + delegateOrUserName: string | Delegate, + ): void; + public abstract getWalletByAddress( + address: string, + profileId?: string, + ): Wallet; + public abstract updateWallet( + wallet: Wallet, + profileId: string, + notificate?: boolean, + ): Observable; + public abstract saveWallet( + wallet: Wallet, + profileId?: string, + notificate?: boolean, + ): any; + public abstract setWalletLabel( + wallet: Wallet, + label: string, + ): Observable; + public abstract getWalletLabel( + walletOrAddress: Wallet | string, + profileId?: string, + ): string; + public abstract setCurrentWallet(wallet: Wallet): void; + public abstract clearCurrentWallet(): void; + public abstract getCurrentProfile(): Profile; + public abstract loadProfiles(): any; + public abstract loadNetworks(): Observable>; + public abstract getKeysByWallet( + wallet: Wallet, + password: string, + ): WalletKeys; +} diff --git a/src/app/services/user-data/user-data.ts b/src/app/services/user-data/user-data.ts index 5be640b04..3ed2f12bd 100644 --- a/src/app/services/user-data/user-data.ts +++ b/src/app/services/user-data/user-data.ts @@ -14,8 +14,10 @@ import { AuthProvider } from "@/services/auth/auth"; import { ForgeProvider } from "@/services/forge/forge"; import { StorageProvider } from "@/services/storage/storage"; -@Injectable({ providedIn: "root" }) -export class UserDataProvider { +import { UserDataService } from "./user-data.interface"; + +@Injectable() +export class UserDataServiceImpl implements UserDataService { public get isDevNet(): boolean { return ( this.currentNetwork && @@ -416,7 +418,7 @@ export class UserDataProvider { profileId, contacts: lodash.transform( profile.contacts, - UserDataProvider.mapContact, + UserDataServiceImpl.mapContact, {}, ), })); diff --git a/test/helpers.ts b/test/helpers.ts index 959c8c5d2..0880d5517 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -1,4 +1,3 @@ -import { SharedModule } from "@/app/shared.module"; import { HttpClientModule } from "@angular/common/http"; import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { @@ -18,6 +17,11 @@ import { StatusBar } from "@ionic-native/status-bar/ngx"; import { IonicModule } from "@ionic/angular"; import { IonicStorageModule } from "@ionic/storage"; import { TranslateModule } from "@ngx-translate/core"; + +import { SharedModule } from "@/app/shared.module"; +import { UserDataServiceImpl } from "@/services/user-data/user-data"; +import { UserDataService } from "@/services/user-data/user-data.interface"; + import { KeyboardMock, NetworkMock, @@ -26,6 +30,7 @@ import { SocialSharingMock, SplashScreenMock, StatusBarMock, + UserDataProviderMock, } from "./mocks"; interface Compilation { @@ -64,6 +69,7 @@ export class TestHelpers { RouterModule.forRoot([]), ], providers: [ + { provide: UserDataService, useClass: UserDataServiceImpl }, { provide: SplashScreen, useClass: SplashScreenMock }, { provide: StatusBar, useClass: StatusBarMock }, { provide: QRScanner, useClass: QRScannerMock }, diff --git a/test/mocks.ts b/test/mocks.ts index 67b0ca066..b19789a3e 100644 --- a/test/mocks.ts +++ b/test/mocks.ts @@ -6,7 +6,11 @@ import { ScreenOrientation } from "@ionic-native/screen-orientation/ngx"; import { SocialSharing } from "@ionic-native/social-sharing/ngx"; import { SplashScreen } from "@ionic-native/splash-screen/ngx"; import { StatusBar } from "@ionic-native/status-bar/ngx"; -import { Observable } from "rxjs"; +import { Delegate, Network as ArkNetwork } from "ark-ts"; +import { Observable, Subject } from "rxjs"; + +import { Profile, StoredNetwork, Wallet, WalletKeys } from "@/models/model"; +import { UserDataService } from "@/services/user-data/user-data.interface"; @Injectable() export class SplashScreenMock extends SplashScreen { @@ -132,3 +136,126 @@ export class ScreenOrientationMock extends ScreenOrientation { } unlock(): void {} } + +@Injectable() +export class UserDataProviderMock implements UserDataService { + public currentNetwork: StoredNetwork; + public currentWallet: Wallet; + public currentProfile: Profile; + public profiles: Record; + public networks: Record; + public onActivateNetwork$: Subject; + public onUpdateNetwork$: Subject; + public onCreateWallet$: Subject; + public onUpdateWallet$: Subject; + public onSelectProfile$: Subject; + + public get isDevNet(): boolean { + throw new Error("Method not implemented."); + } + public get isMainNet(): boolean { + throw new Error("Method not implemented."); + } + public get defaultNetworks(): ArkNetwork[] { + throw new Error("Method not implemented."); + } + public addOrUpdateNetwork( + network: StoredNetwork, + networkId?: string, + ): Observable<{ network: ArkNetwork; id: string }> { + throw new Error("Method not implemented."); + } + public getNetworkById(networkId: string): StoredNetwork { + throw new Error("Method not implemented."); + } + public removeNetworkById(networkId: string) { + throw new Error("Method not implemented."); + } + public addProfile(profile: Profile) { + throw new Error("Method not implemented."); + } + public getProfileByName(name: string) { + throw new Error("Method not implemented."); + } + public getProfileById(profileId: string) { + throw new Error("Method not implemented."); + } + public removeProfileById(profileId: string) { + throw new Error("Method not implemented."); + } + public saveProfiles(profiles?: { [key: string]: any }) { + throw new Error("Method not implemented."); + } + public encryptSecondPassphrase( + wallet: Wallet, + pinCode: string, + secondPassphrase: string, + profileId?: string, + ) { + throw new Error("Method not implemented."); + } + public addWallet( + wallet: Wallet, + passphrase: string, + pinCode: string, + profileId?: string, + ) { + throw new Error("Method not implemented."); + } + public updateWalletEncryption(oldPassword: string, newPassword: string) { + throw new Error("Method not implemented."); + } + public removeWalletByAddress(address: string, profileId?: string): void { + throw new Error("Method not implemented."); + } + public ensureWalletDelegateProperties( + wallet: Wallet, + delegateOrUserName: string | Delegate, + ): void { + throw new Error("Method not implemented."); + } + public getWalletByAddress(address: string, profileId?: string): Wallet { + throw new Error("Method not implemented."); + } + public updateWallet( + wallet: Wallet, + profileId: string, + notificate?: boolean, + ): Observable { + throw new Error("Method not implemented."); + } + public saveWallet( + wallet: Wallet, + profileId?: string, + notificate?: boolean, + ) { + throw new Error("Method not implemented."); + } + public setWalletLabel(wallet: Wallet, label: string): Observable { + throw new Error("Method not implemented."); + } + public getWalletLabel( + walletOrAddress: string | Wallet, + profileId?: string, + ): string { + throw new Error("Method not implemented."); + } + public setCurrentWallet(wallet: Wallet): void { + throw new Error("Method not implemented."); + } + public clearCurrentWallet(): void { + throw new Error("Method not implemented."); + } + public getCurrentProfile(): Profile { + throw new Error("Method not implemented."); + } + public loadProfiles() { + throw new Error("Method not implemented."); + } + public loadNetworks(): Observable> { + throw new Error("Method not implemented."); + } + public getKeysByWallet(wallet: Wallet, password: string): WalletKeys { + throw new Error("Method not implemented."); + } +} diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 70e963ece..b953cbcd1 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,5 @@ { - "extends": "./tsconfig.json", - "exclude": ["node_modules"] + "extends": "./tsconfig.json", + "include": ["src/**/*.ts", "test/**/*.ts", "e2e/**/*.ts"], + "exclude": ["node_modules"] } From d0dbc07a8632bcbcec3d972ff2d71f3ca1976d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Tue, 10 Mar 2020 19:28:01 -0300 Subject: [PATCH 23/46] fix: hammerjs with Angular 9 (#519) --- src/app/app.module.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 8984327fc..846ce8fb3 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,6 +1,6 @@ import { HttpClient, HttpClientModule } from "@angular/common/http"; import { NgModule } from "@angular/core"; -import { BrowserModule } from "@angular/platform-browser"; +import { BrowserModule, HammerModule } from "@angular/platform-browser"; import { RouteReuseStrategy } from "@angular/router"; import { Keyboard } from "@ionic-native/keyboard/ngx"; import { Network } from "@ionic-native/network/ngx"; @@ -41,6 +41,7 @@ export function createTranslateLoader(http: HttpClient) { }), AppRoutingModule, ChartsModule, + HammerModule, ], exports: [TranslateModule], providers: [ From b4a521bfe18fe82bb3a2edfde401c5bd9dc5477e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Wed, 11 Mar 2020 13:29:34 -0300 Subject: [PATCH 24/46] feat: add settings-data unit tests (#520) * test: add initial settings-data specs * test: Add getDefaults test case * test: Add update settings test case * chore: rename test case to fit better * chore: remove single test run * test: add clear storage specs * test: wip spyon to interact with browser config * test: make sypon browserLang work adding coverage * test: split tests about lang to cover if branch Co-authored-by: Lucio Rubens <4539235+luciorubeens@users.noreply.github.com> --- karma.conf.js | 4 +- src/app/pages/settings/settings.ts | 5 +- .../settings-data/settings-data.spec.ts | 117 ++++++++++++++++++ .../services/settings-data/settings-data.ts | 9 +- src/app/services/storage/storage.spec.ts | 19 ++- src/app/services/storage/storage.ts | 9 +- 6 files changed, 151 insertions(+), 12 deletions(-) create mode 100644 src/app/services/settings-data/settings-data.spec.ts diff --git a/karma.conf.js b/karma.conf.js index 4277227cd..820cc8642 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -17,7 +17,9 @@ module.exports = function(config) { "karma-chrome-launcher", "@angular-devkit/build-angular/plugins/karma", ], - reporters: ["spec", isCoverageEnabled ? "sabarivka" : null], + reporters: ["spec", isCoverageEnabled ? "sabarivka" : null].filter( + Boolean, + ), client: { clearContext: false, // leave Jasmine Spec Runner output visible in browser jasmine: { diff --git a/src/app/pages/settings/settings.ts b/src/app/pages/settings/settings.ts index 800fd0d8f..dda901c82 100644 --- a/src/app/pages/settings/settings.ts +++ b/src/app/pages/settings/settings.ts @@ -141,7 +141,8 @@ export class SettingsPage implements OnInit, OnDestroy { } private clearData() { - this.settingsDataProvider.clearData(); - this.navCtrl.navigateRoot("/intro"); + this.settingsDataProvider.clearData().subscribe(() => { + this.navCtrl.navigateRoot("/intro"); + }); } } diff --git a/src/app/services/settings-data/settings-data.spec.ts b/src/app/services/settings-data/settings-data.spec.ts new file mode 100644 index 000000000..573efed54 --- /dev/null +++ b/src/app/services/settings-data/settings-data.spec.ts @@ -0,0 +1,117 @@ +import { TestBed } from "@angular/core/testing"; +import { IonicStorageModule } from "@ionic/storage"; +import { TranslateModule, TranslateService } from "@ngx-translate/core"; +import { switchMap } from "rxjs/operators"; + +import { UserSettings } from "@/models/settings"; + +import { SettingsDataProvider } from "./settings-data"; + +describe("Settings Service", () => { + let settingsService: SettingsDataProvider; + let translate: TranslateService; + + beforeAll(() => { + TestBed.configureTestingModule({ + imports: [TranslateModule.forRoot(), IonicStorageModule.forRoot()], + providers: [SettingsDataProvider, TranslateService], + }); + + translate = TestBed.get(TranslateService); + settingsService = TestBed.inject(SettingsDataProvider); + }); + + it("should return valid settings", done => { + settingsService.settings.subscribe(data => { + expect(data).toEqual( + jasmine.objectContaining({ + language: jasmine.any(String), + currency: jasmine.any(String), + wordlistLanguage: jasmine.any(String), + darkMode: jasmine.any(Boolean), + }), + ); + done(); + }); + }); + + it("should return the default settings", () => { + expect(settingsService.getDefaults()).toEqual( + jasmine.objectContaining({ + language: "en", + currency: "usd", + wordlistLanguage: "english", + darkMode: false, + notification: false, + }), + ); + }); + + it("should return settings taking cultureLang in consideration", () => { + spyOn(translate, "getBrowserCultureLang").and.returnValue("en"); + + expect(settingsService.getDefaults()).toEqual( + jasmine.objectContaining({ + language: "en", + currency: "usd", + wordlistLanguage: "english", + darkMode: false, + notification: false, + }), + ); + }); + + it("should return settings taking browserLang in consideration", () => { + spyOn(translate, "getBrowserLang").and.returnValue(""); + + expect(settingsService.getDefaults()).toEqual( + jasmine.objectContaining({ + language: "en", + currency: "usd", + wordlistLanguage: "english", + darkMode: false, + notification: false, + }), + ); + }); + + it("should update settings", done => { + const newSettings = new UserSettings(); + newSettings.language = "pt-BR"; + newSettings.currency = "BRL"; + newSettings.wordlistLanguage = "portuguese"; + newSettings.darkMode = true; + newSettings.notification = true; + + settingsService.save(newSettings); + + settingsService.settings.subscribe(data => { + expect(data).toEqual( + jasmine.objectContaining({ + language: "pt-BR", + currency: "BRL", + wordlistLanguage: "portuguese", + darkMode: true, + notification: true, + }), + ); + done(); + }); + }); + + it("should clear settings", done => { + settingsService.settings + .pipe( + switchMap(data => { + expect(data.language).toEqual("pt-BR"); + return settingsService + .clearData() + .pipe(switchMap(() => settingsService.settings)); + }), + ) + .subscribe(newData => { + expect(newData.language).toEqual("en"); + done(); + }); + }); +}); diff --git a/src/app/services/settings-data/settings-data.ts b/src/app/services/settings-data/settings-data.ts index 4c1988da8..3b3ddf8e0 100644 --- a/src/app/services/settings-data/settings-data.ts +++ b/src/app/services/settings-data/settings-data.ts @@ -2,6 +2,7 @@ import { Injectable } from "@angular/core"; import { TranslateService } from "@ngx-translate/core"; import lodash from "lodash"; import { Observable, of, Subject } from "rxjs"; +import { tap } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { UserSettings } from "@/models/settings"; @@ -107,8 +108,12 @@ export class SettingsDataProvider { ); } - public clearData(): void { - this._storageProvider.clear(); + public clearData() { + return this._storageProvider.clear().pipe( + tap(() => { + this._settings = undefined; + }), + ); } private load(): Observable { diff --git a/src/app/services/storage/storage.spec.ts b/src/app/services/storage/storage.spec.ts index d757d5053..7bf1ba0e2 100644 --- a/src/app/services/storage/storage.spec.ts +++ b/src/app/services/storage/storage.spec.ts @@ -1,9 +1,10 @@ import { Storage } from "@ionic/storage"; import { Observable } from "rxjs"; +import { switchMapTo } from "rxjs/operators"; import { StorageProvider } from "./storage"; -let storageProvider = null; +let storageProvider: StorageProvider; const OBJECT_TO_BE_STORED = { context: "I am been stored" }; const NONOBJECT_TO_BE_STORED = 123456; const TEST_STORAGE_KEY = "TEST_STORAGE_KEY"; @@ -41,10 +42,20 @@ describe("Storage service", () => { }); it("should clear the storage", done => { - storageProvider.clear(); - storageProvider.getObject("TEST_STORAGE_KEY").subscribe(storedValue => { - expect(storedValue).toEqual({}); + storageProvider + .clear() + .pipe(switchMapTo(storageProvider.getObject("TEST_STORAGE_KEY"))) + .subscribe(storedValue => { + expect(storedValue).toEqual({}); + done(); + }); + }); + + it("should emit notification when storage is cleaned", done => { + storageProvider.onClear$.subscribe(() => { + expect().nothing(); done(); }); + storageProvider.clear().subscribe(); }); }); diff --git a/src/app/services/storage/storage.ts b/src/app/services/storage/storage.ts index 69dce102c..3d1df3fc6 100644 --- a/src/app/services/storage/storage.ts +++ b/src/app/services/storage/storage.ts @@ -2,7 +2,7 @@ import { Injectable } from "@angular/core"; import { Storage } from "@ionic/storage"; import { isObject, isString, toString } from "lodash"; import { from, Subject } from "rxjs"; -import { map } from "rxjs/operators"; +import { map, tap } from "rxjs/operators"; @Injectable({ providedIn: "root" }) export class StorageProvider { @@ -33,7 +33,10 @@ export class StorageProvider { } public clear() { - from(this._storage.clear()); - return this.onClear$.next(); + return from(this._storage.clear()).pipe( + tap(() => { + this.onClear$.next(); + }), + ); } } From 2cb3a9aac81b42d481330ecbb6721ef2ef107c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 12 Mar 2020 11:36:02 -0300 Subject: [PATCH 25/46] refactor: input-fee component (#521) * chore: add eslint-plugin-html package * chore: update light colors * refactor: input-fee component * refactor: move logic to service * refactor: add hint texts * refactor: more checks * test: add input-fee specs * chore: remove forced describe * refactor: change props in the delegates screen * fix: readd prettier plugin --- .eslintrc.json | 100 ++++---- package-lock.json | 197 ++++++++++++++++ package.json | 3 + src/app/app.module.ts | 2 + .../input-currency.component.html | 4 +- .../input-currency.component.scss | 6 + .../input-currency.component.ts | 18 +- .../input-currency/input-currency.module.ts | 3 +- .../input-fee/input-fee.component.html | 157 ++++++------ .../input-fee/input-fee.component.pcss | 28 +++ .../input-fee/input-fee.component.scss | 30 --- .../input-fee/input-fee.component.spec.ts | 187 +++++++++++++++ .../input-fee/input-fee.component.ts | 223 ++++++------------ .../components/input-fee/input-fee.module.ts | 14 +- src/app/directives/directives.module.ts | 3 + .../paste-clipboard-value.ts | 17 ++ .../delegate-detail/delegate-detail.html | 8 +- .../delegate-detail/delegate-detail.ts | 28 ++- .../transaction-send/transaction-send.html | 9 +- .../transaction-send/transaction-send.ts | 13 +- src/app/services/ark-api/ark-api.ts | 65 ++++- src/app/utils/http-utils.ts | 21 -- src/assets/i18n/en.json | 1 + src/theme/variables.scss | 32 +-- 24 files changed, 790 insertions(+), 379 deletions(-) create mode 100644 src/app/components/input-currency/input-currency.component.scss create mode 100644 src/app/components/input-fee/input-fee.component.pcss delete mode 100644 src/app/components/input-fee/input-fee.component.scss create mode 100644 src/app/components/input-fee/input-fee.component.spec.ts create mode 100644 src/app/directives/paste-clipboard-value/paste-clipboard-value.ts delete mode 100644 src/app/utils/http-utils.ts diff --git a/.eslintrc.json b/.eslintrc.json index 3fafb98ad..97a57d5b7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,52 +1,52 @@ { - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "./tsconfig.eslint.json" - }, - "plugins": ["@typescript-eslint", "prettier", "simple-import-sort"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended", - "prettier/@typescript-eslint" - ], - "rules": { - "@typescript-eslint/prefer-string-starts-ends-with": "off", - "@typescript-eslint/no-this-alias": "off", - "@typescript-eslint/await-thenable": "off", - "@typescript-eslint/ban-ts-ignore": "off", - "@typescript-eslint/camelcase": "off", - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/explicit-member-accessibility": ["off"], - "@typescript-eslint/interface-name-prefix": "off", - "@typescript-eslint/member-ordering": ["error"], - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/no-misused-promises": "off", - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-unnecessary-condition": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/prefer-regexp-exec": "off", - "@typescript-eslint/require-await": "off", - "@typescript-eslint/unbound-method": "off", - "no-async-promise-executor": "off", - "no-empty": "off", - "no-inferrable-types": "off", - "no-prototype-builtins": "off", - "prefer-const": [ - "error", - { - "destructuring": "all" - } - ], - "prettier/prettier": "error", - "require-atomic-updates": "off", - "simple-import-sort/sort": "error" - } + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.eslint.json" + }, + "plugins": ["@typescript-eslint", "prettier", "simple-import-sort", "html"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended", + "prettier/@typescript-eslint" + ], + "rules": { + "@typescript-eslint/prefer-string-starts-ends-with": "off", + "@typescript-eslint/no-this-alias": "off", + "@typescript-eslint/await-thenable": "off", + "@typescript-eslint/ban-ts-ignore": "off", + "@typescript-eslint/camelcase": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-member-accessibility": ["off"], + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/member-ordering": ["error"], + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-unnecessary-condition": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/prefer-regexp-exec": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/unbound-method": "off", + "no-async-promise-executor": "off", + "no-empty": "off", + "no-inferrable-types": "off", + "no-prototype-builtins": "off", + "prefer-const": [ + "error", + { + "destructuring": "all" + } + ], + "prettier/prettier": "error", + "require-atomic-updates": "off", + "simple-import-sort/sort": "error" + } } diff --git a/package-lock.json b/package-lock.json index 8eec38e7e..8111f2d4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -462,6 +462,11 @@ } } }, + "@angular/animations": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.0.6.tgz", + "integrity": "sha512-LNtzUrrjqLTlZyhuAEV0sdEV0yi52Ih/p+ozCr/ivhTSSemcPbniTBbJlFZO4NJ2BuS2iEXkXwZs3mm8Fvx5Sg==" + }, "@angular/cli": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.5.tgz", @@ -3776,6 +3781,17 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, "@ngtools/webpack": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.5.tgz", @@ -3866,6 +3882,15 @@ "fastq": "^1.6.0" } }, + "@phenomnomnominal/tsquery": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-3.0.0.tgz", + "integrity": "sha512-SW8lKitBHWJ9fAYkJ9kJivuctwNYCh3BUxLdH0+XiR1GPBiu+7qiZzh8p8jqlj1LgVC1TbvfNFroaEsmYlL8Iw==", + "dev": true, + "requires": { + "esquery": "^1.0.1" + } + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -4017,6 +4042,37 @@ } } }, + "@sheerun/mutationobserver-shim": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", + "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==", + "dev": true + }, + "@testing-library/angular": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/angular/-/angular-8.2.0.tgz", + "integrity": "sha512-vOd4VdIW5x1dUfQyM93+916s9MWWXVg01BHsnMIizIvaQN0y+C79HXJJzTShamXNh3hTB6TnIFmLOx12Dh/PsA==", + "dev": true, + "requires": { + "@phenomnomnominal/tsquery": "^3.0.0", + "@testing-library/dom": "^5.1.0", + "tslib": "^1.9.0", + "tslint": "^5.16.0" + } + }, + "@testing-library/dom": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz", + "integrity": "sha512-Y1T2bjtvQMewffn1CJ28kpgnuvPYKsBcZMagEH0ppfEMZPDc8AkkEnTk4smrGZKw0cblNB3lhM2FMnpfLExlHg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@sheerun/mutationobserver-shim": "^0.3.2", + "aria-query": "3.0.0", + "pretty-format": "^24.8.0", + "wait-for-expect": "^1.2.0" + } + }, "@tootallnate/once": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", @@ -4108,6 +4164,31 @@ "integrity": "sha1-kU2r1QVG2bAUKAbkLHK8fCt+B4c=", "dev": true }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, "@types/jasmine": { "version": "3.5.8", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.8.tgz", @@ -4346,6 +4427,21 @@ "source-map": "^0.6.1" } }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, "@typescript-eslint/eslint-plugin": { "version": "2.22.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz", @@ -4920,6 +5016,16 @@ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, "ark-ts": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/ark-ts/-/ark-ts-0.4.1.tgz", @@ -5098,6 +5204,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -5741,6 +5853,12 @@ "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.6.tgz", "integrity": "sha512-mjYZFRHmI9bk3Oeexu0rWjHFY+w6hGLabdmwSFzq+EFr4MHHsNOYduDVdYl71NG5pTPL7GGzUCMk9cYuV34/Qw==" }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -8041,6 +8159,15 @@ "get-stdin": "^6.0.0" } }, + "eslint-plugin-html": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz", + "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.1" + } + }, "eslint-plugin-prettier": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", @@ -13757,6 +13884,26 @@ "fast-diff": "^1.1.2" } }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "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 + } + } + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -14273,6 +14420,12 @@ } } }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", + "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==", + "dev": true + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -16793,6 +16946,44 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -17325,6 +17516,12 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "wait-for-expect": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-1.3.0.tgz", + "integrity": "sha512-8fJU7jiA96HfGPt+P/UilelSAZfhMBJ52YhKzlmZQvKEZU2EcD1GQ0yqGB6liLdHjYtYAoGVigYwdxr5rktvzA==", + "dev": true + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", diff --git a/package.json b/package.json index cfa856c7f..855ecdc9b 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ }, "private": true, "dependencies": { + "@angular/animations": "^9.0.6", "@angular/common": "~9.0.5", "@angular/compiler": "^9.0.5", "@angular/core": "~9.0.5", @@ -103,6 +104,7 @@ "@angular/language-service": "~9.0.5", "@ionic/angular-toolkit": "^2.2.0", "@ionic/lab": "^3.1.1", + "@testing-library/angular": "^8.2.0", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", "@types/bytebuffer": "^5.0.40", @@ -118,6 +120,7 @@ "codecov": "^3.6.5", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.0", + "eslint-plugin-html": "^6.0.0", "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-simple-import-sort": "^5.0.1", "husky": "^4.2.3", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 846ce8fb3..8881ca903 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,6 +1,7 @@ import { HttpClient, HttpClientModule } from "@angular/common/http"; import { NgModule } from "@angular/core"; import { BrowserModule, HammerModule } from "@angular/platform-browser"; +import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { RouteReuseStrategy } from "@angular/router"; import { Keyboard } from "@ionic-native/keyboard/ngx"; import { Network } from "@ionic-native/network/ngx"; @@ -31,6 +32,7 @@ export function createTranslateLoader(http: HttpClient) { IonicModule.forRoot(), IonicStorageModule.forRoot(), BrowserModule, + BrowserAnimationsModule, HttpClientModule, TranslateModule.forRoot({ loader: { diff --git a/src/app/components/input-currency/input-currency.component.html b/src/app/components/input-currency/input-currency.component.html index 172a9734e..9afd20ff8 100644 --- a/src/app/components/input-currency/input-currency.component.html +++ b/src/app/components/input-currency/input-currency.component.html @@ -1,9 +1,11 @@ diff --git a/src/app/components/input-currency/input-currency.component.scss b/src/app/components/input-currency/input-currency.component.scss new file mode 100644 index 000000000..a07c63ee2 --- /dev/null +++ b/src/app/components/input-currency/input-currency.component.scss @@ -0,0 +1,6 @@ +:host { + .c-input-currency--relaxed { + --padding-top: 12px; + --padding-bottom: 12px; + } +} diff --git a/src/app/components/input-currency/input-currency.component.ts b/src/app/components/input-currency/input-currency.component.ts index ca8ac554a..5f2a35265 100644 --- a/src/app/components/input-currency/input-currency.component.ts +++ b/src/app/components/input-currency/input-currency.component.ts @@ -15,7 +15,7 @@ import { import { ARKTOSHI_DP } from "@/app/app.constants"; import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; -export interface IInputCurrencyOutput { +export interface InputCurrencyOutput { display: string; value: BigNumber; satoshi: BigNumber; @@ -24,6 +24,7 @@ export interface IInputCurrencyOutput { @Component({ selector: "input-currency", templateUrl: "input-currency.component.html", + styleUrls: ["input-currency.component.scss"], providers: [ { provide: NG_VALUE_ACCESSOR, @@ -34,10 +35,10 @@ export interface IInputCurrencyOutput { ], }) export class InputCurrencyComponent implements OnInit, ControlValueAccessor { - public formControl = new FormControl(""); + public formControl: FormControl; @Output() - public updated = new EventEmitter(); + public inputCurrencyUpdate = new EventEmitter(); @Input() public name: string; @@ -48,6 +49,9 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { @Input() public fractionDigits = ARKTOSHI_DP; + @Input() + public isRelaxed = false; + public isDisabled: boolean; public input: (value: BigNumber) => void; @@ -76,6 +80,10 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { } ngOnInit() { + this.formControl = new FormControl({ + value: 0, + disabled: this.isDisabled, + }); this.formControl.valueChanges.subscribe((value: string) => { const formatted = this.format(value); this.input(formatted.value); @@ -89,14 +97,14 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { private format(value: string) { const sanitized = this.sanitizeInput(value); this.formControl.setValue(sanitized.display, { emitEvent: false }); - this.updated.emit(sanitized); + this.inputCurrencyUpdate.emit(sanitized); return sanitized; } /** * Copied from https://github.com/LedgerHQ/ledger-live-desktop with changes */ - private sanitizeInput(input: string): IInputCurrencyOutput { + private sanitizeInput(input: string): InputCurrencyOutput { const numbers = "0123456789"; const separatos = ".,"; diff --git a/src/app/components/input-currency/input-currency.module.ts b/src/app/components/input-currency/input-currency.module.ts index 4f24611d9..510a1f494 100644 --- a/src/app/components/input-currency/input-currency.module.ts +++ b/src/app/components/input-currency/input-currency.module.ts @@ -3,12 +3,13 @@ import { ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { SharedModule } from "@/app/shared.module"; +import { DirectivesModule } from "@/directives/directives.module"; import { InputCurrencyComponent } from "./input-currency.component"; @NgModule({ declarations: [InputCurrencyComponent], - imports: [IonicModule, ReactiveFormsModule, SharedModule], + imports: [IonicModule, SharedModule, DirectivesModule], exports: [InputCurrencyComponent], }) export class InputCurrencyComponentModule {} diff --git a/src/app/components/input-fee/input-fee.component.html b/src/app/components/input-fee/input-fee.component.html index 68a634557..59bf93900 100644 --- a/src/app/components/input-fee/input-fee.component.html +++ b/src/app/components/input-fee/input-fee.component.html @@ -1,88 +1,81 @@ - - - Fee +
+ + {{ "INPUT_FEE.MIN" | translate }} + + - - {{ symbol }} - - - - - - - + {{ "INPUT_FEE.AVG" | translate }} + + + {{ "INPUT_FEE.MAX" | translate }} + +
- - {{ warningMessage }} + + {{ "TRANSACTIONS_PAGE.FEE" | translate }} - - {{ errorMessage }} - + - - INPUT_FEE.STATIC_FEE - + + + +

+ INPUT_FEE.STATIC_FEE +

+ +

+ {{ "INPUT_FEE.LOW_FEE_NOTICE" | translate }} +

- - - - - {{ "INPUT_FEE.MIN" | translate }} - - - - - {{ "INPUT_FEE.AVERAGE" | translate }} - - - - - {{ "INPUT_FEE.MAX" | translate }} - - - - -
+

+ {{ "INPUT_FEE.ADVANCED_NOTICE" | translate }} +

diff --git a/src/app/components/input-fee/input-fee.component.pcss b/src/app/components/input-fee/input-fee.component.pcss new file mode 100644 index 000000000..5651d2e3d --- /dev/null +++ b/src/app/components/input-fee/input-fee.component.pcss @@ -0,0 +1,28 @@ +:host { + @apply w-full; + + ion-range { + bottom: -0.5rem; + --bar-height: 3px; + --height: 1rem; + --knob-size: 1.5rem; + --knob-handle-size: 1.5rem; + --bar-background: var(--ion-color-light-shade); + } + + ion-item { + --padding-start: 0; + } + + .c-input-fee__hint { + @apply py-2 text-sm italic; + } + + .c-input-fee__hint--info { + color: var(--ion-color-medium-shade); + } + + .c-input-fee__hint--warn { + color: var(--ion-color-warning-shade); + } +} diff --git a/src/app/components/input-fee/input-fee.component.scss b/src/app/components/input-fee/input-fee.component.scss deleted file mode 100644 index d0258fbfb..000000000 --- a/src/app/components/input-fee/input-fee.component.scss +++ /dev/null @@ -1,30 +0,0 @@ -:host { - ion-item { - --padding-start: 0; - } - - .input-fee--warning .input-fee__label { - color: #de751f; - } - - .input-fee--danger .input-fee__label { - color: var(--ion-color-danger); - } - - .input-fee__helper { - padding-top: 2px; - padding-bottom: 5px; - white-space: normal !important; - overflow: visible !important; - } - - .input-fee__helper--warning { - @extend .input-fee__helper; - color: #de751f; - } - - .input-fee__helper--danger { - @extend .input-fee__helper; - color: var(--ion-color-danger); - } -} diff --git a/src/app/components/input-fee/input-fee.component.spec.ts b/src/app/components/input-fee/input-fee.component.spec.ts new file mode 100644 index 000000000..0a353fcb4 --- /dev/null +++ b/src/app/components/input-fee/input-fee.component.spec.ts @@ -0,0 +1,187 @@ +import { CommonModule } from "@angular/common"; +import { FormGroupDirective, ReactiveFormsModule } from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; +import { TranslateModule } from "@ngx-translate/core"; +import { render } from "@testing-library/angular"; +import { BigNumber } from "bignumber.js"; + +import { PipesModule } from "@/pipes/pipes.module"; + +import { InputCurrencyComponentModule } from "../input-currency/input-currency.module"; +import { InputFeeComponent } from "./input-fee.component"; + +function createComponent(props?: Partial) { + return render(InputFeeComponent, { + imports: [ + IonicModule, + TranslateModule.forRoot(), + InputCurrencyComponentModule, + PipesModule, + CommonModule, + ReactiveFormsModule, + ], + componentProperties: { + ...props, + }, + providers: [FormGroupDirective], + }); +} + +describe("Input Fee Component", () => { + it("should create", async () => { + const component = await createComponent(); + expect(component.fixture.componentInstance.isStatic).toBeTrue(); + }); + + describe("Initial value", () => { + it("should set last fee by default if specified", async () => { + const component = await createComponent({ + last: 15.2, + min: 5, + avg: 20, + max: 30, + }); + const inputControl = + component.fixture.componentInstance.inputControl; + expect(BigNumber.isBigNumber(inputControl.value)).toBeTrue(); + expect(inputControl.value.isEqualTo("0.000000152")).toBeTrue(); + }); + + it("should set avg fee by default if the last was not specified", async () => { + const component = await createComponent({ + min: 5, + avg: 20, + max: 30, + }); + const inputControl = + component.fixture.componentInstance.inputControl; + expect(BigNumber.isBigNumber(inputControl.value)).toBeTrue(); + expect(inputControl.value.isEqualTo("0.0000002")).toBeTrue(); + }); + + it("should set max fee by default if the last and avg was not specified", async () => { + const component = await createComponent({ + min: 5, + max: 30, + }); + const inputControl = + component.fixture.componentInstance.inputControl; + expect(BigNumber.isBigNumber(inputControl.value)).toBeTrue(); + expect(inputControl.value.isEqualTo("0.0000003")).toBeTrue(); + }); + }); + + describe("Controls", () => { + it("should hide the controls if max is equals to min", async () => { + const component = await createComponent({ + min: 1, + max: 1, + }); + expect(() => + component.getByTestId("c-input-fee__controls"), + ).toThrowError(); + }); + + it("should change value by clicking on the min button", async () => { + const component = await createComponent({ + min: 11.1, + max: 20, + }); + component.click( + component.getByTestId("c-input-fee__controls__min"), + ); + expect( + component.fixture.componentInstance.inputControl.value.isEqualTo( + "0.000000111", + ), + ); + }); + + it("should change value by clicking on the avg button", async () => { + const component = await createComponent({ + avg: 11.1, + max: 20, + }); + component.click( + component.getByTestId("c-input-fee__controls__avg"), + ); + expect( + component.fixture.componentInstance.inputControl.value.isEqualTo( + "0.000000111", + ), + ); + }); + + it("should change value by clicking on the max button", async () => { + const component = await createComponent({ + max: 11.1, + }); + component.click( + component.getByTestId("c-input-fee__controls__max"), + ); + expect( + component.fixture.componentInstance.inputControl.value.isEqualTo( + "0.000000111", + ), + ); + }); + }); + + describe("Range", () => { + it("should show the range if max is greater than min", async () => { + const component = await createComponent({ + min: 10, + max: 20, + }); + expect(component.fixture.componentInstance.hasRange).toBeTrue(); + }); + + it("should change value by updating the range", async () => { + const component = await createComponent({ + min: 10, + max: 20, + }); + const { + rangeControl, + inputControl, + min, + } = component.fixture.componentInstance; + rangeControl.setValue(min); + expect(inputControl.value.isEqualTo("0.0000001")).toBeTrue(); + }); + }); + + describe("Minimum limit", () => { + it("should set limitMin to min if it is different from avg", async () => { + const component = await createComponent({ + min: 100, + avg: 200, + }); + expect(component.fixture.componentInstance.limitMin).toBe(100); + }); + + it("should set limitMin to min if it is different from max", async () => { + const component = await createComponent({ + min: 100, + max: 200, + }); + expect(component.fixture.componentInstance.limitMin).toBe(100); + }); + + it("should set limitMin to 1 arktoshi if min is equal to avg", async () => { + const component = await createComponent({ + min: 100, + avg: 100, + }); + expect(component.fixture.componentInstance.limitMin).toBe(1); + }); + + it("should set limitMin to 1 arktoshi if min is equal to max", async () => { + const component = await createComponent({ + min: 100, + max: 100, + }); + expect(component.fixture.componentInstance.limitMin).toBe(1); + }); + }); +}); diff --git a/src/app/components/input-fee/input-fee.component.ts b/src/app/components/input-fee/input-fee.component.ts index 5ecdb8904..e5804a110 100644 --- a/src/app/components/input-fee/input-fee.component.ts +++ b/src/app/components/input-fee/input-fee.component.ts @@ -1,30 +1,20 @@ -import { - Component, - EventEmitter, - Input, - OnDestroy, - OnInit, - Output, -} from "@angular/core"; +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { ControlContainer, FormControl, + FormGroup, FormGroupDirective, } from "@angular/forms"; -import { TranslateService } from "@ngx-translate/core"; -import { TransactionType } from "ark-ts"; -import { Subscription } from "rxjs"; -import { switchMap } from "rxjs/operators"; -import { FeeStatistic } from "@/models/stored-network"; -import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { ARKTOSHI_DP } from "@/app/app.constants"; +import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; -import { ArkUtility } from "../../utils/ark-utility"; +import { InputCurrencyOutput } from "../input-currency/input-currency.component"; @Component({ selector: "input-fee", templateUrl: "input-fee.component.html", - styleUrls: ["input-fee.component.scss"], + styleUrls: ["input-fee.component.pcss"], viewProviders: [ { provide: ControlContainer, @@ -32,160 +22,89 @@ import { ArkUtility } from "../../utils/ark-utility"; }, ], }) -export class InputFeeComponent implements OnInit, OnDestroy { +export class InputFeeComponent implements OnInit { + @Output() + public inputFeeUpdate = new EventEmitter(); + @Input() - public transactionType: number; + public parent = new FormGroup({}); - @Output() - public change: EventEmitter = new EventEmitter(); + // Arktoshi + @Input() + public min = 1; - @Output() - public error: EventEmitter = new EventEmitter(); - - public step: number; - public v1Fee: number; - public v2Fee: FeeStatistic; - public rangeFee: number; - public min: number; - public max: number; + // Arktoshi + @Input() public avg: number; - public symbol: string; - public isStaticFee = false; - public warningMessage: string; - public errorMessage: string; - public limitFee: number; - public subscription: Subscription; - - constructor( - private arkApiProvider: ArkApiProvider, - private translateService: TranslateService, - private parentForm: FormGroupDirective, - ) { - this.step = 1; - this.min = this.step; - this.symbol = this.arkApiProvider.network.symbol; - } - ngOnInit() { - this.parentForm.form.addControl("fee", new FormControl("fee")); - this.parentForm.form.addControl( - "feeRange", - new FormControl("feeRange"), - ); - this.parentForm.form.controls.fee.valueChanges.subscribe(value => - this.onInputText(value), - ); - this.parentForm.form.controls.feeRange.valueChanges.subscribe(value => - this.onInputRange(value), - ); - this.prepareFeeStatistics(); - } + // Arktoshi + @Input() + public max = 1; - public get maxArktoshi() { - return ArkUtility.subToUnit(this.max); - } + // Arktoshi + @Input() + public last: number; - public prepareFeeStatistics() { - this.subscription = this.arkApiProvider.fees - .pipe( - switchMap(fees => { - switch (Number(this.transactionType)) { - case TransactionType.SendArk: - this.v1Fee = fees.send; - break; - case TransactionType.Vote: - this.v1Fee = fees.vote; - break; - case TransactionType.CreateDelegate: - this.v1Fee = fees.delegate; - break; - } - - this.max = this.v1Fee; - this.avg = this.v1Fee; - this.limitFee = this.max * 10; - this.setRangeFee(this.avg); - - return this.arkApiProvider.feeStatistics; - }), - ) - .subscribe(fees => { - this.v2Fee = fees.find( - fee => fee.type === Number(this.transactionType), - ); - if (!this.v2Fee || this.v2Fee.fees.avgFee > this.max) { - this.isStaticFee = true; - return; - } - if (this.v2Fee.fees.maxFee > this.max) { - this.max = this.v2Fee.fees.maxFee; - } - this.avg = this.v2Fee.fees.avgFee; - this.setRangeFee(this.avg); - }); - } + @Input() + public isStatic = true; - public setRangeFee(value: number) { - this.parentForm.form.controls.feeRange.setValue(value); - this.emitChange(); - } + public hasRange = false; + public rangeControl = new FormControl(0); + public inputControl = new FormControl(0); + public limitMin = 1; - public onInputRange(rangeFee?: number) { - this.rangeFee = rangeFee; - const fee = ArkUtility.subToUnit(rangeFee); + // Arktoshi + public currentFee: number; - this.parentForm.form.controls.fee.setValue(fee, { - emitEvent: false, - }); + constructor() {} - const translateParams = { - symbol: this.symbol, - fee: ArkUtility.subToUnit(this.limitFee), - }; - - this.translateService - .get( - [ - "INPUT_FEE.ERROR.MORE_THAN_MAXIMUM", - "INPUT_FEE.LOW_FEE_NOTICE", - "INPUT_FEE.ADVANCED_NOTICE", - ], - translateParams, - ) - .subscribe(translation => { - this.errorMessage = null; - this.warningMessage = null; - - if (this.avg > rangeFee) { - this.warningMessage = - translation["INPUT_FEE.LOW_FEE_NOTICE"]; - } else if (rangeFee > this.limitFee) { - this.errorMessage = - translation["INPUT_FEE.ERROR.MORE_THAN_MAXIMUM"]; - } else if (rangeFee > this.max) { - this.warningMessage = - translation["INPUT_FEE.ADVANCED_NOTICE"]; - } - this.error.next(!!this.errorMessage || !fee.length); + ngOnInit() { + this.parent.addControl("fee", this.inputControl); + this.inputControl.valueChanges.subscribe((value: BigNumber) => { + // The range value should be in arktoshi + this.currentFee = value.shiftedBy(ARKTOSHI_DP).toNumber(); + this.rangeControl.setValue(this.currentFee, { + emitEvent: false, }); - } - - public onInputText(fee?: string) { - const arktoshi = parseInt(ArkUtility.unitToSub(fee)); + }); - this.parentForm.form.controls.feeRange.setValue(arktoshi, { - emitEvent: false, + this.rangeControl.valueChanges.subscribe((value: number) => { + this.inputControl.markAsDirty(); + this.currentFee = value; + this.setInputValue(value, false); }); - this.emitChange(); + // Initial value + this.setInputValue(this.last || this.avg || this.max); + this.checkRange(); + } + + public handleClickButton(value: number) { + this.setInputValue(value); + this.inputControl.markAsDirty(); } - public emitChange() { - const rangeFee = this.parentForm.form.get("feeRange"); - this.change.next(rangeFee.value); + public emitUpdate(output: InputCurrencyOutput) { + this.inputFeeUpdate.emit(output); } - ngOnDestroy() { - this.subscription.unsubscribe(); + private checkRange() { + // If the minimum input value is equal to the maximum or average + // Set the minimum to 1 arktoshi + if (this.min === this.max || this.min === this.avg) { + this.limitMin = 1; + } else { + this.limitMin = this.min; + } + // Hide range if the minimum is equal to maximum + this.hasRange = this.max > this.limitMin; + } + + private setInputValue(value: number, emitEvent = true) { + // The input value should be in human + const satoshi = new SafeBigNumber(value).shiftedBy(ARKTOSHI_DP * -1); + this.inputControl.setValue(satoshi, { + emitEvent, + }); } } diff --git a/src/app/components/input-fee/input-fee.module.ts b/src/app/components/input-fee/input-fee.module.ts index 5ef57bee3..c62fc5c4c 100644 --- a/src/app/components/input-fee/input-fee.module.ts +++ b/src/app/components/input-fee/input-fee.module.ts @@ -1,8 +1,9 @@ -import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; -import { TranslateModule } from "@ngx-translate/core"; + +import { SharedModule } from "@/app/shared.module"; +import { DirectivesModule } from "@/directives/directives.module"; +import { PipesModule } from "@/pipes/pipes.module"; import { InputCurrencyComponentModule } from "../input-currency/input-currency.module"; import { InputFeeComponent } from "./input-fee.component"; @@ -11,11 +12,10 @@ import { InputFeeComponent } from "./input-fee.component"; declarations: [InputFeeComponent], imports: [ IonicModule, - FormsModule, - ReactiveFormsModule, + SharedModule, InputCurrencyComponentModule, - TranslateModule, - CommonModule, + DirectivesModule, + PipesModule, ], exports: [InputFeeComponent], }) diff --git a/src/app/directives/directives.module.ts b/src/app/directives/directives.module.ts index cab7455d5..ca4e6cd03 100644 --- a/src/app/directives/directives.module.ts +++ b/src/app/directives/directives.module.ts @@ -2,6 +2,7 @@ import { NgModule } from "@angular/core"; import { HeaderScrollerDirective } from "./header-scroller/header-scroller"; import { MarketNetOnlyDirective } from "./marketnet-only/marketnet-only"; +import { PasteClipboardValueDirective } from "./paste-clipboard-value/paste-clipboard-value"; import { ValueMaskOnBlurDirective } from "./value-mask-on-blur/value-mask-on-blur"; @NgModule({ @@ -9,12 +10,14 @@ import { ValueMaskOnBlurDirective } from "./value-mask-on-blur/value-mask-on-blu MarketNetOnlyDirective, HeaderScrollerDirective, ValueMaskOnBlurDirective, + PasteClipboardValueDirective, ], imports: [], exports: [ MarketNetOnlyDirective, HeaderScrollerDirective, ValueMaskOnBlurDirective, + PasteClipboardValueDirective, ], }) export class DirectivesModule {} diff --git a/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts b/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts new file mode 100644 index 000000000..55276d09b --- /dev/null +++ b/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts @@ -0,0 +1,17 @@ +import { Directive, HostListener, Input } from "@angular/core"; +import { NgControl } from "@angular/forms"; + +@Directive({ + selector: "[appPasteClipboardValue]", +}) +export class PasteClipboardValueDirective { + constructor(private model: NgControl) {} + + @HostListener("paste", ["$event"]) + onPaste(input: ClipboardEvent) { + const value = input?.clipboardData?.getData("text"); + if (value) { + this.model.control.setValue(value); + } + } +} diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.html b/src/app/pages/delegates/delegate-detail/delegate-detail.html index b5935ce19..45c5f0491 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.html +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.html @@ -64,9 +64,11 @@

diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.ts index 29f27b0c2..dd82a8c48 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.ts @@ -1,4 +1,4 @@ -import { Component } from "@angular/core"; +import { Component, OnDestroy, OnInit } from "@angular/core"; import { FormGroup } from "@angular/forms"; import { Clipboard } from "@ionic-native/clipboard/ngx"; import { @@ -10,7 +10,10 @@ import { import { TranslateService } from "@ngx-translate/core"; import { Delegate, Network, TransactionType } from "ark-ts"; import lodash from "lodash"; +import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; +import { InputCurrencyOutput } from "@/components/input-currency/input-currency.component"; import { Wallet } from "@/models/wallet"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; import { ToastProvider } from "@/services/toast/toast"; @@ -22,7 +25,7 @@ import { UserDataService } from "@/services/user-data/user-data.interface"; styleUrls: ["delegate-detail.pcss"], providers: [Clipboard], }) -export class DelegateDetailPage { +export class DelegateDetailPage implements OnInit, OnDestroy { public delegate: Delegate; public qraddress = '{a: ""}'; public currentNetwork: Network; @@ -31,6 +34,9 @@ export class DelegateDetailPage { public transactionType = TransactionType.Vote; public fee: number; public voteForm = new FormGroup({}); + public nodeFees: any; + + private unsubscriber$: Subject = new Subject(); constructor( public navCtrl: NavController, @@ -55,6 +61,20 @@ export class DelegateDetailPage { } } + ngOnInit() { + this.arkApiProvider + .prepareFeesByType(TransactionType.Vote) + .pipe(takeUntil(this.unsubscriber$)) + .subscribe(data => { + this.nodeFees = data; + }); + } + + ngOnDestroy() { + this.unsubscriber$.next(); + this.unsubscriber$.complete(); + } + isSameDelegate() { if ( this.currentWallet && @@ -125,8 +145,8 @@ export class DelegateDetailPage { } } - onInputFee(fee) { - this.fee = fee; + onInputFee(output: InputCurrencyOutput) { + this.fee = output.satoshi.toNumber(); } unvote() { diff --git a/src/app/pages/transaction/transaction-send/transaction-send.html b/src/app/pages/transaction/transaction-send/transaction-send.html index b1f89ea67..8b0018a32 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.html +++ b/src/app/pages/transaction/transaction-send/transaction-send.html @@ -45,9 +45,12 @@ diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index 87c0b0409..ee6e374af 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -14,6 +14,7 @@ import { takeUntil } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { ConfirmTransactionComponent } from "@/components/confirm-transaction/confirm-transaction"; +import { InputCurrencyOutput } from "@/components/input-currency/input-currency.component"; import { PinCodeComponent } from "@/components/pin-code/pin-code"; import { QRScannerComponent } from "@/components/qr-scanner/qr-scanner"; import { WalletPickerModal } from "@/components/wallet-picker/wallet-picker.modal"; @@ -65,6 +66,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { currentWallet: Wallet; currentNetwork: StoredNetwork; + nodeFees: any; fee: number; hasFeeError = false; hasSent = false; @@ -227,6 +229,13 @@ export class TransactionSendPage implements OnInit, OnDestroy { } ngOnInit(): void { + this.arkApiProvider + .prepareFeesByType(TransactionType.SendArk) + .pipe(takeUntil(this.unsubscriber$)) + .subscribe(data => { + this.nodeFees = data; + }); + this.hasNotSent(); this.pinCode.close.pipe(takeUntil(this.unsubscriber$)).subscribe(() => { @@ -260,8 +269,8 @@ export class TransactionSendPage implements OnInit, OnDestroy { this.unsubscriber$.complete(); } - public onFeeChange(newFee: number) { - this.fee = newFee; + public onFeeChange(output: InputCurrencyOutput) { + this.fee = output.satoshi.toNumber(); if (this.sendAllEnabled) { this.sendAll(); diff --git a/src/app/services/ark-api/ark-api.ts b/src/app/services/ark-api/ark-api.ts index b9c066b03..a574d2593 100644 --- a/src/app/services/ark-api/ark-api.ts +++ b/src/app/services/ark-api/ark-api.ts @@ -5,8 +5,25 @@ import * as arkts from "ark-ts"; import arktsConfig from "ark-ts/config"; import lodash from "lodash"; import moment from "moment"; -import { EMPTY, Observable, of, Subject, throwError } from "rxjs"; -import { catchError, expand, finalize, switchMap, tap } from "rxjs/operators"; +import { + EMPTY, + forkJoin, + Observable, + of, + Subject, + throwError, + zip, +} from "rxjs"; +import { + catchError, + expand, + finalize, + map, + mergeMap, + mergeMapTo, + switchMap, + tap, +} from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { @@ -401,6 +418,50 @@ export class ArkApiProvider { return this.client.getDelegateByPublicKey(publicKey); } + public prepareFeesByType( + type: number, + ): Observable { + return zip(this.fees, this.feeStatistics).pipe( + map(([respStatic, respDynamic]) => { + const feeNameMap = { + 0: "send", + 1: "secondsignature", + 2: "delegate", + 3: "vote", + }; + const feeStatic = Number(respStatic[feeNameMap[type]]); + + let max = feeStatic; + let avg = feeStatic; + let min = 1; + let isStatic = true; + + const feeDynamic = respDynamic.find(item => item.type === type); + + if (feeDynamic) { + isStatic = feeDynamic.fees.avgFee > max; + + if (!isStatic) { + if (feeDynamic.fees.maxFee > max) { + max = feeDynamic.fees.maxFee; + } + + avg = feeDynamic.fees.avgFee; + min = feeDynamic.fees.minFee; + } + } + + return { + type, + isStatic, + min, + avg, + max, + }; + }), + ); + } + private isSuccessfulResponse(response) { const { data, errors } = response; const anyDuplicate = diff --git a/src/app/utils/http-utils.ts b/src/app/utils/http-utils.ts deleted file mode 100644 index b6de2b92f..000000000 --- a/src/app/utils/http-utils.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { HttpParams } from "@angular/common/http"; -import { isNil, isPlainObject } from "lodash"; - -export class HttpUtils { - static buildQueryParams(source: object): HttpParams { - let target: HttpParams = new HttpParams(); - Object.keys(source).forEach((key: string) => { - let value: any = source[key]; - if (isNil(value)) { - return; - } - if (isPlainObject(value)) { - value = JSON.stringify(value); - } else { - value = value.toString(); - } - target = target.append(key, value); - }); - return target; - } -} diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 9bf8538f5..2cfd2a9c7 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -160,6 +160,7 @@ }, "INPUT_FEE": { "MIN": "Min", + "AVG": "Avg", "AVERAGE": "Average", "MAX": "Max", "LOW_FEE_NOTICE": "Transactions with low fees may never get confirmed", diff --git a/src/theme/variables.scss b/src/theme/variables.scss index aea973900..87a9b0ce4 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -37,28 +37,28 @@ --ion-color-tertiary-tint: #7e57ff; /** success **/ - --ion-color-success: #10dc60; - --ion-color-success-rgb: 16, 220, 96; + --ion-color-success: #48bb78; + --ion-color-success-rgb: 72, 187, 120; --ion-color-success-contrast: #ffffff; --ion-color-success-contrast-rgb: 255, 255, 255; - --ion-color-success-shade: #0ec254; - --ion-color-success-tint: #28e070; + --ion-color-success-shade: #3fa56a; + --ion-color-success-tint: #5ac286; /** warning **/ - --ion-color-warning: #ffce00; - --ion-color-warning-rgb: 255, 206, 0; - --ion-color-warning-contrast: #ffffff; - --ion-color-warning-contrast-rgb: 255, 255, 255; - --ion-color-warning-shade: #e0b500; - --ion-color-warning-tint: #ffd31a; + --ion-color-warning: #ecc94b; + --ion-color-warning-rgb: 236, 201, 75; + --ion-color-warning-contrast: #000000; + --ion-color-warning-contrast-rgb: 0, 0, 0; + --ion-color-warning-shade: #d0b142; + --ion-color-warning-tint: #eece5d; /** danger **/ - --ion-color-danger: #f04141; - --ion-color-danger-rgb: 245, 61, 61; - --ion-color-danger-contrast: #ffffff; - --ion-color-danger-contrast-rgb: 255, 255, 255; - --ion-color-danger-shade: #d33939; - --ion-color-danger-tint: #f25454; + --ion-color-danger: #f56565; + --ion-color-danger-rgb: 245, 101, 101; + --ion-color-danger-contrast: #000000; + --ion-color-danger-contrast-rgb: 0, 0, 0; + --ion-color-danger-shade: #d85959; + --ion-color-danger-tint: #f67474; /** dark **/ --ion-color-dark: #222428; From c78df7c00e8b6b9fda0cf9ed80e95032eca4089a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Thu, 12 Mar 2020 15:12:17 -0300 Subject: [PATCH 26/46] test: add auth service unit tests (#522) * test: add test test bed config * test: add login case * test: add logout case * test: add verify intro case * test: (wip) add set intro case * chore: modify auth module to return observables * test: Improve login test checking storage * test: add set intro case * chore: update save intro call * chore: Improve master password observable * test: add password cases * chore: Update clearAttempts to use switchMap * test: add attempts cases and improve master pwd * chore: remove single test run flag * fix: make github vm works again * test: get an error on master password validation Co-authored-by: Lucio Rubens <4539235+luciorubeens@users.noreply.github.com> --- src/app/components/pin-code/pin-code.ts | 7 +- src/app/modals/pin-code/pin-code.ts | 4 +- src/app/pages/intro/intro.ts | 2 +- src/app/services/auth/auth.spec.ts | 177 ++++++++++++++++++++++++ src/app/services/auth/auth.ts | 47 ++++--- 5 files changed, 214 insertions(+), 23 deletions(-) create mode 100644 src/app/services/auth/auth.spec.ts diff --git a/src/app/components/pin-code/pin-code.ts b/src/app/components/pin-code/pin-code.ts index 5782e5d6e..a53e51617 100644 --- a/src/app/components/pin-code/pin-code.ts +++ b/src/app/components/pin-code/pin-code.ts @@ -132,9 +132,10 @@ export class PinCodeComponent { }; if (status) { - this.authProvider.saveMasterPassword( - password, - ); + this.authProvider + .saveMasterPassword(password) + .subscribe(); + if (oldPassword) { this.translateService .get("PIN_CODE.UPDATING") diff --git a/src/app/modals/pin-code/pin-code.ts b/src/app/modals/pin-code/pin-code.ts index 0ba4f6e93..b8b92c6f8 100644 --- a/src/app/modals/pin-code/pin-code.ts +++ b/src/app/modals/pin-code/pin-code.ts @@ -179,7 +179,7 @@ export class PinCodeModal implements OnInit, OnDestroy { // When logged in, the attempts are restarted if (status) { - this.authProvider.clearAttempts(); + this.authProvider.clearAttempts().subscribe(); } if (this.outputPassword) { @@ -215,7 +215,7 @@ export class PinCodeModal implements OnInit, OnDestroy { const diff = moment(timestamp).diff(now, "seconds"); if (diff <= 0) { - this.authProvider.clearAttempts(); + this.authProvider.clearAttempts().subscribe(); this.attempts = 0; return this.loadUnlockTime(); } diff --git a/src/app/pages/intro/intro.ts b/src/app/pages/intro/intro.ts index d68552f73..eab54f604 100644 --- a/src/app/pages/intro/intro.ts +++ b/src/app/pages/intro/intro.ts @@ -56,7 +56,7 @@ export class IntroPage { } startApp() { - this.authProvider.saveIntro(); + this.authProvider.saveIntro().subscribe(); this.navCtrl.navigateForward("/login", { animated: true, diff --git a/src/app/services/auth/auth.spec.ts b/src/app/services/auth/auth.spec.ts new file mode 100644 index 000000000..3c7908b20 --- /dev/null +++ b/src/app/services/auth/auth.spec.ts @@ -0,0 +1,177 @@ +import { TestBed } from "@angular/core/testing"; +import { IonicStorageModule } from "@ionic/storage"; +import * as bcrypt from "bcryptjs"; +import { switchMap } from "rxjs/operators"; + +import * as constants from "@/app/app.constants"; +import { StorageProvider } from "@/services/storage/storage"; + +import { AuthProvider } from "./auth"; + +const MASTER_PASSWORD = "master_password_test"; + +describe("Auth Service", () => { + let authService: AuthProvider; + let storageService: StorageProvider; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [IonicStorageModule.forRoot()], + providers: [AuthProvider, StorageProvider], + }); + + authService = TestBed.inject(AuthProvider); + storageService = TestBed.inject(StorageProvider); + }); + + beforeEach(function() { + storageService.clear(); + }); + + it("should login an user", done => { + const USER_ID = "12341231212312312312312"; + authService + .login(USER_ID) + .pipe( + switchMap(() => + storageService.get(constants.STORAGE_ACTIVE_PROFILE), + ), + ) + .subscribe(id => { + expect(id).toBe(USER_ID); + done(); + }); + }); + + it("should logout an user", () => { + authService.logout(); + expect(authService.loggedProfileId).toEqual(undefined); + }); + + it("should logout an user without broadcast", () => { + authService.logout(false); + expect(authService.loggedProfileId).toEqual(undefined); + }); + + it("should verify if user has seen intro", done => { + authService.hasSeenIntro().subscribe(data => { + expect(data).toBe(false); + done(); + }); + }); + + it("should set intro as seen", done => { + authService + .saveIntro() + .pipe( + switchMap(() => + storageService.get(constants.STORAGE_INTROSEEN), + ), + ) + .subscribe(introSeen => { + expect(introSeen).toEqual("true"); + done(); + }); + }); + + it("should save and get the stored master password", done => { + authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { + authService.getMasterPassword().subscribe(masterPassword => { + expect(masterPassword).not.toEqual(null); + done(); + }); + }); + }); + + it("should get an error on master password validation", done => { + // @ts-ignore + spyOn(bcrypt, "compare").and.callFake((_, __, callback) => { + callback(new Error("Failed")); + }); + + authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { + authService + .validateMasterPassword(MASTER_PASSWORD) + .subscribe(null, (e: Error) => { + expect(e.message).toBe("Failed"); + done(); + }); + }); + }); + + it("should validate the master password", done => { + authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { + authService + .validateMasterPassword(MASTER_PASSWORD) + .subscribe(result => { + expect(result).toEqual(true); + done(); + }); + }); + }); + + it("should validate the master password with a wrong one", done => { + authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { + authService + .validateMasterPassword("asjdaidsa") + .subscribe(result => { + expect(result).toEqual(false); + done(); + }); + }); + }); + + it("should validate password as weak", () => { + const WEAK_PASSWORD = "000000"; + expect(authService.isWeakPassword(WEAK_PASSWORD)).toEqual(true); + }); + + it("should validate password as not weak", () => { + const WEAK_PASSWORD = "AB@#$5"; + expect(authService.isWeakPassword(WEAK_PASSWORD)).toEqual(false); + }); + + it("should rerturn the unlock timestamp", done => { + authService.getUnlockTimestamp().subscribe(unlockTime => { + expect(unlockTime).toEqual({}); + done(); + }); + }); + + it("should rerturn the attempts", done => { + authService.getAttempts().subscribe(attempts => { + expect(attempts).toEqual(null); + done(); + }); + }); + + it("should increase attemps", done => { + authService + .increaseAttempts() + .pipe( + switchMap(() => + storageService.get(constants.STORAGE_AUTH_ATTEMPTS), + ), + ) + .subscribe(attempts => { + expect(attempts).toBe("1"); + done(); + }); + }); + + it("should increase unlock timestamp", done => { + authService.increaseUnlockTimestamp().then(newTimestamp => { + expect(newTimestamp).not.toBe(null); + done(); + }); + }); + + it("should clear attempts", done => { + authService.clearAttempts().subscribe(() => { + authService.getAttempts().subscribe(attempts => { + expect(attempts).toEqual(0); + done(); + }); + }); + }); +}); diff --git a/src/app/services/auth/auth.ts b/src/app/services/auth/auth.ts index e2dacfe79..605f875f3 100644 --- a/src/app/services/auth/auth.ts +++ b/src/app/services/auth/auth.ts @@ -2,7 +2,14 @@ import { Injectable } from "@angular/core"; import * as bcrypt from "bcryptjs"; import * as moment from "moment"; import { Observable, Subject } from "rxjs"; -import { map, mergeMap } from "rxjs/operators"; +import { + map, + mapTo, + mergeMap, + mergeMapTo, + switchMapTo, + tap, +} from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { StorageProvider } from "@/services/storage/storage"; @@ -17,15 +24,16 @@ export class AuthProvider { constructor(private storage: StorageProvider) {} login(profileId: string): Observable { - return new Observable(observer => { - this.loggedProfileId = profileId; - this.storage.set(constants.STORAGE_ACTIVE_PROFILE, profileId); - - this.storage.set(constants.STORAGE_LOGIN, true); - - this.onLogin$.next(profileId); - observer.next(true); - }); + return this.storage + .set(constants.STORAGE_ACTIVE_PROFILE, profileId) + .pipe( + mergeMapTo(this.storage.set(constants.STORAGE_LOGIN, true)), + tap(() => { + this.loggedProfileId = profileId; + this.onLogin$.next(profileId); + }), + mapTo(true), + ); } logout(broadcast: boolean = true): void { @@ -49,18 +57,18 @@ export class AuthProvider { }); } - saveIntro(): void { - this.storage.set(constants.STORAGE_INTROSEEN, true); + saveIntro(): Observable { + return this.storage.set(constants.STORAGE_INTROSEEN, true); } getMasterPassword(): Observable { return this.storage.get(constants.STORAGE_MASTERPASSWORD); } - saveMasterPassword(password: string): void { + saveMasterPassword(password: string): Observable { const hash = bcrypt.hashSync(password, 8); - this.storage.set(constants.STORAGE_MASTERPASSWORD, hash); + return this.storage.set(constants.STORAGE_MASTERPASSWORD, hash); } validateMasterPassword(password: string): Observable { @@ -149,8 +157,13 @@ export class AuthProvider { }); } - clearAttempts() { - this.storage.set(constants.STORAGE_AUTH_UNLOCK_TIMESTAMP, null); - this.storage.set(constants.STORAGE_AUTH_ATTEMPTS, 0); + clearAttempts(): Observable { + return this.storage + .set(constants.STORAGE_AUTH_UNLOCK_TIMESTAMP, null) + .pipe( + switchMapTo( + this.storage.set(constants.STORAGE_AUTH_ATTEMPTS, 0), + ), + ); } } From 930c83c8d0bbbdd0a716481d1153218bc6203b52 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2020 06:46:20 -0300 Subject: [PATCH 27/46] fix(deps): update dependency cordova-sqlite-storage to v5 (#523) Co-authored-by: Renovate Bot --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8111f2d4f..3146c4dae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6942,9 +6942,9 @@ "integrity": "sha512-bBjWY9TgoH1CMK4P26zLT1D9rVcvI9LoIEGUjmwdLGiBP+IWo7RXu90RM1xHmVjG5hVLgmic5XyWc665ye8aRQ==" }, "cordova-sqlite-storage": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-4.0.0.tgz", - "integrity": "sha512-/n5KT3TyRAC7QRe9A4Sn7bMpdsBJ6aMmHat2PsMxFZBot45SOxbAEgfGmXtq0e7OEdVzk573sIn42bLS6lNLjQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-5.0.0.tgz", + "integrity": "sha512-AFb3t3yrdFZ0ZY16FKJupyx71bq+iKHSWHfHH1xmFjEuGK7VPbSHwGEf9hpypin42Z10OdkR1CgnTyvkWNtLlw==", "requires": { "cordova-sqlite-storage-dependencies": "2.1.1" } diff --git a/package.json b/package.json index 855ecdc9b..da131815a 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "cordova-plugin-vibration": "^3.1.1", "cordova-plugin-whitelist": "^1.3.4", "cordova-plugin-x-socialsharing": "^5.6.4", - "cordova-sqlite-storage": "^4.0.0", + "cordova-sqlite-storage": "^5.0.0", "core-js": "^3.6.4", "dequal": "^1.0.0", "es6-promise-plugin": "^4.2.2", From 2bde7e6157cfacc9b960373dd4d88e28db0e60ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 13 Mar 2020 14:12:45 -0300 Subject: [PATCH 28/46] test: refactor intro page (#524) * chore: exclude files from coverage * test: refactor intro page --- karma.conf.js | 11 ++-- src/app/pages/intro/intro.html | 23 +++++-- src/app/pages/intro/intro.spec.ts | 106 ++++++++++++++++++++++++------ src/app/pages/intro/intro.ts | 86 ++++++++++++------------ 4 files changed, 156 insertions(+), 70 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 820cc8642..e86d8fb9b 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -34,10 +34,13 @@ module.exports = function(config) { coverageReporter: { include: [ "src/**/*.ts", - "!src/main.(ts|js)", - "!src/**/*.spec.(ts|js)", - "!src/**/*.module.(ts|js)", - "!src/**/environment*.(ts|js)", + "!src/main.ts", + "!src/test.ts", + "!src/polyfills.ts", + "!src/app/app.constants.ts", + "!src/**/*.spec.ts", + "!src/**/*.module.ts", + "!src/**/environment*.ts", ], }, customLaunchers: { diff --git a/src/app/pages/intro/intro.html b/src/app/pages/intro/intro.html index 9431734ae..99ad94314 100644 --- a/src/app/pages/intro/intro.html +++ b/src/app/pages/intro/intro.html @@ -1,6 +1,13 @@ - - - + + +
@@ -23,6 +30,7 @@

{{ slide.title }}

{{ slide.title }}

> - + @@ -46,6 +59,7 @@

{{ slide.title }}

{{ slide.title }}

>{{ 'NEXT' | translate | uppercase }} { - let pageComponent: IntroPage; - let pageFixture: ComponentFixture; +const navCtrlSpy = jasmine.createSpyObj("NavController", ["navigateForward"]); +const authProviderSpy = jasmine.createSpyObj("AuthProvider", { + saveIntro: new Observable(), +}); - beforeEach(async () => { - const { fixture, component } = await TestHelpers.beforeEachCompiler([ - IntroPage, - ]); - pageFixture = fixture; - pageComponent = component; - fixture.detectChanges(); +function createComponent(props?: Partial) { + return render(IntroPage, { + imports: [ + IonicModule, + IonicStorageModule.forRoot(), + TranslateModule.forRoot(), + ], + providers: [ + { provide: NavController, useValue: navCtrlSpy }, + { provide: AuthProvider, useValue: authProviderSpy }, + ], }); +} - it("should create", () => { - expect(pageComponent).toBeTruthy(); +describe("Intro Page", () => { + it("should create", async () => { + const component = await createComponent(); + expect(component).toBeTruthy(); }); - it("should contain next button", () => { - const element: HTMLElement = pageFixture.debugElement.nativeElement; - const nextBtn = element.querySelector("#next"); + it("should be visible the skip button", async () => { + const component = await createComponent(); + const skipBtn = component.queryByTestId("c-intro__skip"); + expect(skipBtn).toBeTruthy(); + }); + it("should be visible the next button", async () => { + const component = await createComponent(); + const nextBtn = component.queryByTestId("c-intro__next"); expect(nextBtn).toBeTruthy(); }); - it("should contain skip button", () => { - const element: HTMLElement = pageFixture.debugElement.nativeElement; - const skipBtn = element.querySelector("#skip"); + it("should be hidden the done button", async () => { + const component = await createComponent(); - expect(skipBtn).toBeTruthy(); + expect(component.queryByTestId("c-intro__done")).toBeFalsy(); + }); + + it("should contain the slides", async () => { + const component = await createComponent(); + const elements = component.queryAllByTestId("c-intro__slides__slide"); + expect(elements.length).toBeGreaterThan(0); + expect(elements.length).toBe( + component.fixture.componentInstance.slides.length, + ); + }); + + /** + * NOTE: The Ionic Slides relies on Swiper methods + * but their instance is not available in the test environment + * then I faked the methods to mimic the behavior + */ + it("should activate the 2nd slide by clicking the next button", async done => { + const component = await createComponent(); + const instance = component.fixture.componentInstance; + const slider = instance.slider; + spyOn(slider, "slideNext").and.callFake(() => { + instance.onSlideChanged(); + return Promise.resolve(); + }); + spyOn(slider, "isEnd").and.returnValue(Promise.resolve(false)); + spyOn(slider, "getActiveIndex").and.returnValue(Promise.resolve(1)); + spyOn(slider, "length").and.returnValue( + Promise.resolve(instance.slides.length), + ); + + component.click(component.queryByTestId("c-intro__next")); + expect(slider.slideNext).toHaveBeenCalled(); + setTimeout(() => { + expect(instance.activeIndex).toBe(1); + done(); + }, 100); + }); + + it("should start the app", async () => { + const component = await createComponent(); + spyOn( + component.fixture.componentInstance, + "startApp", + ).and.callThrough(); + component.click(component.queryByTestId("c-intro__skip")); + expect(component.fixture.componentInstance.startApp).toHaveBeenCalled(); + expect(navCtrlSpy.navigateForward).toHaveBeenCalled(); + expect(authProviderSpy.saveIntro).toHaveBeenCalled(); }); }); diff --git a/src/app/pages/intro/intro.ts b/src/app/pages/intro/intro.ts index eab54f604..fc85218d6 100644 --- a/src/app/pages/intro/intro.ts +++ b/src/app/pages/intro/intro.ts @@ -1,5 +1,11 @@ -import { Component, ViewChild } from "@angular/core"; -import { IonSlides, NavController, Platform } from "@ionic/angular"; +import { + AfterViewInit, + Component, + OnInit, + ViewChild, + ViewEncapsulation, +} from "@angular/core"; +import { IonSlides, NavController } from "@ionic/angular"; import { TranslateService } from "@ngx-translate/core"; import { AuthProvider } from "@/services/auth/auth"; @@ -9,50 +15,49 @@ import { AuthProvider } from "@/services/auth/auth"; templateUrl: "intro.html", styleUrls: ["intro.pcss"], }) -export class IntroPage { - @ViewChild("slider", { read: IonSlides, static: true }) - slider: IonSlides; - +export class IntroPage implements OnInit { public showSkip = true; - public slides: any; + public slides: any[]; public activeIndex = 0; + @ViewChild(IonSlides) + public slider: IonSlides; + constructor( - platform: Platform, private navCtrl: NavController, private authProvider: AuthProvider, private translateService: TranslateService, - ) { - platform.ready().then(() => { - this.translateService - .get([ - "INTRO_PAGE.WELCOME", - "INTRO_PAGE.TEXT_1", - "INTRO_PAGE.SECURITY", - "INTRO_PAGE.TEXT_2", - "INTRO_PAGE.FAST_EASY", - "INTRO_PAGE.TEXT_3", - ]) - .subscribe(translation => { - this.slides = [ - { - title: translation["INTRO_PAGE.WELCOME"], - image: "anytime", - description: translation["INTRO_PAGE.TEXT_1"], - }, - { - title: translation["INTRO_PAGE.SECURITY"], - image: "pincode", - description: translation["INTRO_PAGE.TEXT_2"], - }, - { - title: translation["INTRO_PAGE.FAST_EASY"], - image: "fast-easy", - description: translation["INTRO_PAGE.TEXT_3"], - }, - ]; - }); - }); + ) {} + + ngOnInit() { + this.translateService + .get([ + "INTRO_PAGE.WELCOME", + "INTRO_PAGE.TEXT_1", + "INTRO_PAGE.SECURITY", + "INTRO_PAGE.TEXT_2", + "INTRO_PAGE.FAST_EASY", + "INTRO_PAGE.TEXT_3", + ]) + .subscribe(translation => { + this.slides = [ + { + title: translation["INTRO_PAGE.WELCOME"], + image: "anytime", + description: translation["INTRO_PAGE.TEXT_1"], + }, + { + title: translation["INTRO_PAGE.SECURITY"], + image: "pincode", + description: translation["INTRO_PAGE.TEXT_2"], + }, + { + title: translation["INTRO_PAGE.FAST_EASY"], + image: "fast-easy", + description: translation["INTRO_PAGE.TEXT_3"], + }, + ]; + }); } startApp() { @@ -65,7 +70,7 @@ export class IntroPage { } goNext() { - this.slider.slideNext(); + return this.slider.slideNext(); } async onSlideChanged() { @@ -75,7 +80,6 @@ export class IntroPage { if (activeIndex >= slideLength) { return; } - this.activeIndex = activeIndex; this.showSkip = !(await this.slider.isEnd()); } From b72308daf2a6f0eb790f6280f36203fabf54f98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Mon, 16 Mar 2020 15:11:30 -0300 Subject: [PATCH 29/46] fix: input-fee component tweaks (#526) --- src/app/components/input-fee/input-fee.component.pcss | 2 ++ src/global.scss | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/app/components/input-fee/input-fee.component.pcss b/src/app/components/input-fee/input-fee.component.pcss index 5651d2e3d..81ab83385 100644 --- a/src/app/components/input-fee/input-fee.component.pcss +++ b/src/app/components/input-fee/input-fee.component.pcss @@ -3,6 +3,8 @@ ion-range { bottom: -0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; --bar-height: 3px; --height: 1rem; --knob-size: 1.5rem; diff --git a/src/global.scss b/src/global.scss index b0b1474c7..7d72097ff 100644 --- a/src/global.scss +++ b/src/global.scss @@ -32,6 +32,10 @@ ion-toolbar * { box-sizing: border-box; } +ion-item { + --highlight-height: 0; +} + .text-selectable { user-select: auto !important; } From ad9295bd175e8b9f2f15795ebf5d768f150e288d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Tue, 17 Mar 2020 08:59:29 -0300 Subject: [PATCH 30/46] ci: fix connectivity for building in appflow (#527) --- config.xml | 4 +++- resources/android/xml/network_security_config.xml | 6 +----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/config.xml b/config.xml index f3147b55b..84a56fff2 100644 --- a/config.xml +++ b/config.xml @@ -29,9 +29,11 @@ + - + + diff --git a/resources/android/xml/network_security_config.xml b/resources/android/xml/network_security_config.xml index dc9ced979..eb6250304 100644 --- a/resources/android/xml/network_security_config.xml +++ b/resources/android/xml/network_security_config.xml @@ -1,8 +1,4 @@ - - - - - + From 78d4e78f6ea4aa0719cc2826a4273f976f0d39df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Tue, 17 Mar 2020 16:45:28 -0300 Subject: [PATCH 31/46] chore: update deps and speed up the workflow (#529) * wip * chore: remove puppeteer * chore: update @angular/core * chore: update @angular/cli * chore: update deps * chore: downgrade @typescript-eslint * chore: npm audit fix * fix: explicitly define the compiler type --- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 10 +- e2e/protractor.conf.js | 4 +- karma.conf.js | 6 +- package-lock.json | 958 +++++++++++++++++----------------- package.json | 49 +- src/app/app.component.spec.ts | 6 +- 7 files changed, 517 insertions(+), 518 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0863ddcb9..93dde4d42 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,6 +22,6 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Install - run: npm install + run: npm install --ignore-scripts - name: Lint run: npm run lint diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c82149116..390644625 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Install - run: npm install + run: npm install --ignore-scripts - name: Test run: npm run test:coverage - name: Build @@ -43,11 +43,7 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - name: Install pre dependencies - run: npm i -g ionic cordova - name: Install - run: npm rebuild node-sass && npm install + run: npm install --ignore-scripts - name: Test - run: npm run test:e2e - - name: Build - run: npm run build -- --prod + run: npm run test:e2e -- --prod diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js index 7dbf504c4..f9c707888 100644 --- a/e2e/protractor.conf.js +++ b/e2e/protractor.conf.js @@ -2,7 +2,6 @@ // https://github.com/angular/protractor/blob/master/lib/config.ts const { SpecReporter } = require("jasmine-spec-reporter"); -const puppeteer = require("puppeteer"); exports.config = { allScriptsTimeout: 11000, @@ -10,8 +9,7 @@ exports.config = { capabilities: { browserName: "chrome", chromeOptions: { - args: ["--headless"], - binary: puppeteer.executablePath(), + args: ["--headless", "--no-sandbox"], }, }, directConnect: true, diff --git a/karma.conf.js b/karma.conf.js index e86d8fb9b..edd796d94 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,8 +1,6 @@ // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html -process.env.CHROME_BIN = require("puppeteer").executablePath(); - module.exports = function(config) { const isCoverageEnabled = config.buildWebpack.options.codeCoverage; @@ -44,7 +42,7 @@ module.exports = function(config) { ], }, customLaunchers: { - ChromeHeadlessNoSandbox: { + ChromeHeadlessCI: { base: "ChromeHeadless", flags: [ "--no-sandbox", @@ -57,7 +55,7 @@ module.exports = function(config) { colors: true, logLevel: config.LOG_INFO, autoWatch: true, - browsers: ["ChromeHeadlessNoSandbox"], + browsers: ["ChromeHeadlessCI"], singleRun: false, }); }; diff --git a/package-lock.json b/package-lock.json index 3146c4dae..6f6ab9d5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,19 +19,19 @@ } }, "@angular-devkit/architect": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.5.tgz", - "integrity": "sha512-4du29cYI5awsZ34xoS9WWSbEv7HazIlsQWaee/fRdvv4WmyB1w6geLMLHveGT2cYL/lhxsMUdYyDMa6sXcYeFA==", + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.6.tgz", + "integrity": "sha512-WK8e09DgNP1NHP1gqVQ9w+9rlRMVDJxAh4qZGJRjZBXd3LY7y84WWRmTpfuhOSu+82fR3/n76+urxraU3ZVphw==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.5", + "@angular-devkit/core": "9.0.6", "rxjs": "6.5.3" }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -68,25 +68,25 @@ } }, "@angular-devkit/build-angular": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.5.tgz", - "integrity": "sha512-WCfmQNTzQNgdh8baeNJm5uIhXbWp62e+upsZzh6eJ1ZrIeJSPJxE5mI1VvqBoAQH3hKjuAaAW3axpWGar4kJjw==", + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.6.tgz", + "integrity": "sha512-EQ4K4i7FBQyy+qY+kTBxJkxaHzYAf+qSC5ktK1rzXCe17+FK/sf2k4YtHwxB9mbBLB1ZXj0JnysssgzeoG0s+w==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.5", - "@angular-devkit/build-optimizer": "0.900.5", - "@angular-devkit/build-webpack": "0.900.5", - "@angular-devkit/core": "9.0.5", + "@angular-devkit/architect": "0.900.6", + "@angular-devkit/build-optimizer": "0.900.6", + "@angular-devkit/build-webpack": "0.900.6", + "@angular-devkit/core": "9.0.6", "@babel/core": "7.7.7", "@babel/generator": "7.7.7", "@babel/preset-env": "7.7.7", - "@ngtools/webpack": "9.0.5", + "@ngtools/webpack": "9.0.6", "ajv": "6.10.2", "autoprefixer": "9.7.1", "babel-loader": "8.0.6", - "browserslist": "4.8.3", + "browserslist": "^4.9.1", "cacache": "13.0.1", - "caniuse-lite": "1.0.30001020", + "caniuse-lite": "^1.0.30001032", "circular-dependency-plugin": "5.2.0", "copy-webpack-plugin": "5.1.1", "core-js": "3.6.4", @@ -136,10 +136,20 @@ "worker-plugin": "3.2.0" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.6.tgz", + "integrity": "sha512-WK8e09DgNP1NHP1gqVQ9w+9rlRMVDJxAh4qZGJRjZBXd3LY7y84WWRmTpfuhOSu+82fR3/n76+urxraU3ZVphw==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.6", + "rxjs": "6.5.3" + } + }, "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -185,20 +195,26 @@ } }, "browserslist": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz", - "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", + "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001017", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.44" + "caniuse-lite": "^1.0.30001030", + "electron-to-chromium": "^1.3.363", + "node-releases": "^1.1.50" } }, "caniuse-lite": { - "version": "1.0.30001020", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001020.tgz", - "integrity": "sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA==", + "version": "1.0.30001035", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz", + "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.377", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", + "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "glob": { @@ -224,6 +240,15 @@ "sourcemap-codec": "^1.4.4" } }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", + "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, "postcss": { "version": "7.0.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", @@ -291,9 +316,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.5.tgz", - "integrity": "sha512-BdmvD58DnAAf6/o/fRzU2l+2g4IwuIJf8x/rd9AGWd7fHrcwgJDhB9rYetB7JqYR8uOWk+AFElDpvNOj8YUy0w==", + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.6.tgz", + "integrity": "sha512-K8BDga/E1tUCuUnpnCCAR5yh8lfJqHSBvk1K9P5LgqQNxPvSedghyQ4LYNaeRRVIVmsh4RdsJ7hvmquFrFnTZg==", "dev": true, "requires": { "loader-utils": "1.2.3", @@ -324,20 +349,30 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.5.tgz", - "integrity": "sha512-4fYZNg8X73wTjlXV37m0BRVMa27GSwhAupgv5cb9Q3Vys9sYxEUL+GJetXDxypA5YbMj5xX/xqyU9TPtvXhgRg==", + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.6.tgz", + "integrity": "sha512-45YiOhR425599Ln4xLr8F+T0QJUEo8TeJMnq30J+2hux+XdklN2P4+0Ju0902IL0r4xD57Hibmi+fQEbDDe5sQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.5", - "@angular-devkit/core": "9.0.5", + "@angular-devkit/architect": "0.900.6", + "@angular-devkit/core": "9.0.6", "rxjs": "6.5.3" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.6.tgz", + "integrity": "sha512-WK8e09DgNP1NHP1gqVQ9w+9rlRMVDJxAh4qZGJRjZBXd3LY7y84WWRmTpfuhOSu+82fR3/n76+urxraU3ZVphw==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.6", + "rxjs": "6.5.3" + } + }, "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -413,20 +448,20 @@ } }, "@angular-devkit/schematics": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.5.tgz", - "integrity": "sha512-PbOYoy4YyEbR6f1jO18Rt3fJuyaaTJ3bFmws5qWGGNK2yZiP/hnSaM3VffOwoL4sgyKkI2FNKSPiQZgTl8b0Tg==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.6.tgz", + "integrity": "sha512-X7qZDJVrFcPUn+jNUeOH7Bx1D7YTpTFr0d3DBIsQzseReSGu7ugWziQPS4gc5Xm5K0nb8vx6DYtyW0FaIvX0ZA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.5", + "@angular-devkit/core": "9.0.6", "ora": "4.0.2", "rxjs": "6.5.3" }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -468,16 +503,16 @@ "integrity": "sha512-LNtzUrrjqLTlZyhuAEV0sdEV0yi52Ih/p+ozCr/ivhTSSemcPbniTBbJlFZO4NJ2BuS2iEXkXwZs3mm8Fvx5Sg==" }, "@angular/cli": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.5.tgz", - "integrity": "sha512-hRGpmIwnm908eW5sA4zrVkCGaIUHYLSNu5koaLulK0jj5Iy+vkieDiBuAkD2uVvG7M59s4s4u+L0DMetIpvZQg==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.6.tgz", + "integrity": "sha512-uDXhkPcHhE4G4FlY7+LJWhXErHnkn63V8lqkKD7juivs+Epmx8oXCOVObEQTbbtw7sF6s0dM8uTzHKgoefTlaA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.5", - "@angular-devkit/core": "9.0.5", - "@angular-devkit/schematics": "9.0.5", - "@schematics/angular": "9.0.5", - "@schematics/update": "0.900.5", + "@angular-devkit/architect": "0.900.6", + "@angular-devkit/core": "9.0.6", + "@angular-devkit/schematics": "9.0.6", + "@schematics/angular": "9.0.6", + "@schematics/update": "0.900.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "^4.1.1", @@ -495,10 +530,20 @@ "uuid": "^3.3.2" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.6.tgz", + "integrity": "sha512-WK8e09DgNP1NHP1gqVQ9w+9rlRMVDJxAh4qZGJRjZBXd3LY7y84WWRmTpfuhOSu+82fR3/n76+urxraU3ZVphw==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.6", + "rxjs": "6.5.3" + } + }, "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -509,13 +554,13 @@ } }, "@schematics/angular": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.5.tgz", - "integrity": "sha512-OUCC5J5+9v2tc3O/GL+2E9LfIXeqYCo/gdOTgb+jSos0aQQ7wnXOmufuoOsgt0KrWpAt34MIBktLNUF1n+RgcQ==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.6.tgz", + "integrity": "sha512-oYIfSJF9ISAJWJjIiUnj8Rp1m4t9T3oqKl1FzkMWXvUmR1BfkO2S2/Moi2RQ0aHG6D9Oz4CJjrsQRmjaqBpEZw==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.5", - "@angular-devkit/schematics": "9.0.5" + "@angular-devkit/core": "9.0.6", + "@angular-devkit/schematics": "9.0.6" } }, "ansi-colors": { @@ -593,19 +638,19 @@ } }, "@angular/common": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.5.tgz", - "integrity": "sha512-AwZKYK5M/3762woK+3290JnBdlBvZXqxX5vVze6wk23IiBlwIV+l79+Lyfjo/4s031kibq47taaZdC7qkkBkNA==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.6.tgz", + "integrity": "sha512-z+c+zmoZTOQ2fT2sFQpHhpUbIYtjerxYmdOVpukprZCuv9WT2SGJfu4QVGSkeqejYnMp6VtXMdQ1CeAQojj0sw==" }, "@angular/compiler": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.5.tgz", - "integrity": "sha512-TeyhRGefTOtA9N3udMrvheafoXcz/dvTTdZLcieeZQxm1SSeaQDUQ/rUH6QTOiHVNMtjOCrZ9J5rk1A4mPYuag==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.6.tgz", + "integrity": "sha512-jGTGNs8l3zwTnVEQH2v3HwWVvpz0bQY7B6rPkfHNP2bVwrhz7L6fYyJY1HtWM0S95b09NuSwianhabnEzQeTfQ==" }, "@angular/compiler-cli": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.5.tgz", - "integrity": "sha512-lFlasm8UBApTq4/MkxnYrRAMfpOvvg3YYBEMibuEGlaJjW/Xd1JcisUuFiooCxCIKF5phyORHmxjywGPhHqQgQ==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.6.tgz", + "integrity": "sha512-chzlImvinNigQ9JzehC7BRxct62OGkkru6jIMg3J2gr1r+sQlOn2ybvADloYkKnEP5hu2Izr2aSmEfMm4xobvg==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -709,9 +754,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "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", @@ -721,25 +766,25 @@ } }, "@angular/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.5.tgz", - "integrity": "sha512-7VznrYjaAIzeq/zQ7v6tbeoOI7JJKgChKwG7s8jRoEpENu+w2pRlRdyQul88iJLsXgObR+/TfBNm/K+G4cqAFw==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.6.tgz", + "integrity": "sha512-egpVGqqI+L1QQFn9ziHIElXb0bCzY1l8vzyQGfm2KnxHpmx2TJp2uaaHh5LRcqYR7TLeGMpqmzhRxir6Up7AAQ==" }, "@angular/forms": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.5.tgz", - "integrity": "sha512-579PXAfT92J4mghjWKiZ3Zj3xee4h3RP70YHSlsfbi94MONvryWDrnXxvUZ0zJJCVnEJQ7x+nGEp3wwWqR12Jw==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.6.tgz", + "integrity": "sha512-mxUEqQny3scxQM/21QLKgtq5EcOm1Tn5cU3rStY1L8J6Mg+Rd2Rz4SY0WXQpaRKPj+WNd+PDgdGiRs3cAjfLFQ==" }, "@angular/language-service": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.5.tgz", - "integrity": "sha512-9ykFNYZpWdoggFPK3LuTJobBZjoCEQP6kKt88ZZV7GTMIXoE7iY413KfhINoXdMwxIAbba0xlPMR/4p6jFAa4Q==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.6.tgz", + "integrity": "sha512-lyEYYsBXFhXKu3aT6XkKBmmf4c59lb/C6C15q4Dl8BW/wIuA/mNLosDKLnd/jCS0VpcY4v0HJRKg9SCopa8BhQ==", "dev": true }, "@angular/localize": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.0.5.tgz", - "integrity": "sha512-BABEY9UeFPOFZcLxLXPnQnJwSHbIQKTtjYv7pHqB9O30wZ8XeExhTzb/7GXxweudlOk0w2QGRxUVMSpqR+3Txw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.0.6.tgz", + "integrity": "sha512-0X+PmJrK+geovvJxVUFAM305OspeutbihCLoD7puT9XWY+emcRQ4UZAuVQTIAO1yugVUfdB2ZNw8SgsB4hPmXg==", "requires": { "@babel/core": "7.8.3", "glob": "7.1.2", @@ -777,9 +822,9 @@ } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", - "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "requires": { "@babel/types": "^7.8.7", "jsesc": "^2.5.1", @@ -824,9 +869,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==" + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==" }, "@babel/template": { "version": "7.8.6", @@ -901,13 +946,18 @@ } }, "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -965,9 +1015,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -976,24 +1026,24 @@ } }, "@angular/platform-browser": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.5.tgz", - "integrity": "sha512-24QGcQXthYXB/wT8okJjxqss/JOk4A6O1/Fmva79k0AvwtYkl2tikcyEc5T3xZtjoi8g32AN9nbZAobtkxlqTA==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.6.tgz", + "integrity": "sha512-CA7dW+j1mVh3OUo3C2vIn05NxNgrDPK4vpfRIwBIn1gErpnIXCa2vgnRzn3H9zKizKt0iuwSIukEnWG280Q0xg==" }, "@angular/platform-browser-dynamic": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.5.tgz", - "integrity": "sha512-NRfsAwbgxOvEcpqlERDAG0wap5xJa0wKwnudTCnyvf4B0D6kLkT1Idjqv22NDW5rfM2oDWaZ/qpgpDnAo6/ZBQ==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.6.tgz", + "integrity": "sha512-Z0/qHciqbR+c2fwGxrkr77tQkEKhZpAPljGva/VNoS3Ms1OikqZB9Ev7xmZOM9656khPBU38m3aLsTXAAnQ4YA==" }, "@angular/router": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.5.tgz", - "integrity": "sha512-Sz3DQUxlzAk9aZ9eVtZRh6xF5SMg/Gb3rc5I7dL1M+mycSNoFJ4HPTXleZkKM69mMkKQ5fEtza4x26MSlF+O9w==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.6.tgz", + "integrity": "sha512-Ki1uk3jWPsoFh27SnyXatPSFK3ghF25pjiwWw9/inPvlS/HshSWgS2FbYf49LD5xVFF3Ni2Z5GRKxSEqxL8vQw==" }, "@arkecosystem/crypto": { - "version": "2.6.24", - "resolved": "https://registry.npmjs.org/@arkecosystem/crypto/-/crypto-2.6.24.tgz", - "integrity": "sha512-3XohO9G5DWAiKmCLDkjJAD5jFzphhUvtR3nYsEROTPgaZ33m0qTh+CrI6yZhVZrWRYgDT2Efqax02pt6Fkl4XQ==", + "version": "2.6.29", + "resolved": "https://registry.npmjs.org/@arkecosystem/crypto/-/crypto-2.6.29.tgz", + "integrity": "sha512-vHZNecV4mxdq9QOnobsbdlu25HISUquWMKSQPZlBzeYlRE7p/d+cjOL8EMTIhvNPwpJM6sz4hBfJKtcW84iCsA==", "requires": { "@arkecosystem/utils": "0.8.3", "@types/bytebuffer": "^5.0.40", @@ -1214,9 +1264,9 @@ } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", - "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "dev": true, "requires": { "@babel/types": "^7.8.7", @@ -1266,9 +1316,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -1334,14 +1384,14 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz", - "integrity": "sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.6.0" + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { @@ -1396,9 +1446,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -1445,9 +1495,9 @@ } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", - "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "dev": true, "requires": { "@babel/types": "^7.8.7", @@ -1497,9 +1547,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -1695,9 +1745,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -1784,9 +1834,9 @@ } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", - "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "dev": true, "requires": { "@babel/types": "^7.8.7", @@ -1836,9 +1886,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -1925,9 +1975,9 @@ } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", - "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "dev": true, "requires": { "@babel/types": "^7.8.7", @@ -1977,9 +2027,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -2075,9 +2125,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -2135,9 +2185,9 @@ } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", - "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "dev": true, "requires": { "@babel/types": "^7.8.7", @@ -2187,9 +2237,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -2449,12 +2499,12 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", - "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-create-regexp-features-plugin": "^7.8.8", "@babel/helper-plugin-utils": "^7.8.3" } }, @@ -2617,9 +2667,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -2656,9 +2706,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", - "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -2753,9 +2803,9 @@ } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", - "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, "@babel/template": { @@ -2874,9 +2924,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz", - "integrity": "sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz", + "integrity": "sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA==", "dev": true, "requires": { "@babel/helper-call-delegate": "^7.8.7", @@ -3240,11 +3290,11 @@ } }, "@ionic/angular": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.0.4.tgz", - "integrity": "sha512-LzVxQhR9CqXKLVgz6YYtJEg7drRoDw3YGBk6Q1Wlpxqos9HCfjX/AevN90Sxus5f3PZUz47i0JkPZJFJmPb8zg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.0.5.tgz", + "integrity": "sha512-6M1NINlQGu8ZAiYSoixZf01a82i/6NzHwoCdR3mbqcIMzslbzREg4h6fRF70MnLfDJ4as3Qe2o8RQsv3I9cFDw==", "requires": { - "@ionic/core": "5.0.4", + "@ionic/core": "5.0.5", "tslib": "^1.9.3" } }, @@ -3441,18 +3491,18 @@ } }, "@ionic/core": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.0.4.tgz", - "integrity": "sha512-WP0jnG9FB/hNIvLaCKYZArvynnnlHZxaBzZXxQqyHvtQL8eVb1UYxDlr2hE8g8Sz+vd39Cr7oB5RZID7mV56aA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.0.5.tgz", + "integrity": "sha512-k0O5V/3sFB55E+hKSqio1iDfwibZdlI97PuaI4PcGQDytzUCyGTlGAZn6iLi82NZqBRWWLOpwy+8N/cySiTWKg==", "requires": { - "ionicons": "^5.0.0", + "ionicons": "^5.0.1", "tslib": "^1.10.0" } }, "@ionic/lab": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.1.1.tgz", - "integrity": "sha512-7Njl/2GtIdbLQhAHk32NSKNtgmeHaubGhWh6+oDNEwyjzczUmbBV63mM2lkJiI1bEolZ+f+kg0tAiEAS6vLtpg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.1.2.tgz", + "integrity": "sha512-hHhbgrSERgHgU7l/6DMvZ98Xday0wV2jfxRdmV+CH/n/JBeWisCThLfZTNKpfwrj6nGANHlykRGAXM0pQnc4Rw==", "dev": true, "requires": { "@ionic/cli-framework": "4.1.1", @@ -3793,21 +3843,21 @@ } }, "@ngtools/webpack": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.5.tgz", - "integrity": "sha512-xe0rGpme04MNRK/PpPOx8cza9k8F/XuAOmxC3Tk4dIgigqIzYsP6v6N/At8vPRDrf88X4ZyR94lL5RrUYf/KNQ==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.6.tgz", + "integrity": "sha512-1R6xuQKBlVdf1lPsjN9S/BRCxPTRPPDN3E3unX2Nw4wK8XBWwm5CuSeEgp33PCwMpyWPaa7bg25Nz3Zt+DIlSQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.5", + "@angular-devkit/core": "9.0.6", "enhanced-resolve": "4.1.1", "rxjs": "6.5.3", "webpack-sources": "1.4.3" }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -3961,13 +4011,13 @@ } }, "@schematics/update": { - "version": "0.900.5", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.5.tgz", - "integrity": "sha512-Nte+9DfQHQkrgqZPX1viccs6UXL+FDGHkTIB/KTisJAvC4s+o9hjKAoCldWBsPi9/p5rXPNZ+EWmXx7vSLGSNQ==", + "version": "0.900.6", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.6.tgz", + "integrity": "sha512-54Xi3FIJQWFBM91vxD9ciKkTlNWaIV7wsjKSImg53h2m2/l2VPPHyIZWI4j79dWXlfJVTNeaqPNYGzJlRvaEmA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.5", - "@angular-devkit/schematics": "9.0.5", + "@angular-devkit/core": "9.0.6", + "@angular-devkit/schematics": "9.0.6", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^7.0.0", @@ -3978,9 +4028,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.5.tgz", - "integrity": "sha512-9TPQPzfSRbV5wVEnfo1d1CS+oVXROfE7VnBRuRMilFnNhuc29wX3zvBQRTreDVyxJetLBEb9sRlcKYGaJzpKPw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.6.tgz", + "integrity": "sha512-hCZJbnqLEm1F5Bx+ILcdd3LPgQTn4WFWpfUqMEGGj7UirRInWcz+6UpYotKGTJw85/mV01LrIbtWIkAUXbkkhg==", "dev": true, "requires": { "ajv": "6.10.2", @@ -4190,9 +4240,9 @@ } }, "@types/jasmine": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.8.tgz", - "integrity": "sha512-q/L59BjgE6VJtuIM4iDEEwT7xdSWVHMqC+td9sft5RfgHpDZ4Gdn0vLV59wKZ7PjGuVLCL7aNCdoiw5u6ZKSgA==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.9.tgz", + "integrity": "sha512-KNL2Fq6GRmty2j6+ZmueT/Z/dkctLNH+5DFoGHNDtcgt7yME9NZd8x2p81Yuea1Xux/qAryDd3zVLUoKpDz1TA==", "dev": true }, "@types/jasminewd2": { @@ -4221,12 +4271,6 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, - "@types/mime-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true - }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -4234,9 +4278,9 @@ "dev": true }, "@types/node": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.7.tgz", - "integrity": "sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg==" + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" }, "@types/node-forge": { "version": "0.9.2", @@ -4443,12 +4487,12 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz", - "integrity": "sha512-BvxRLaTDVQ3N+Qq8BivLiE9akQLAOUfxNHIEhedOcg8B2+jY8Rc4/D+iVprvuMX1AdezFYautuGDwr9QxqSxBQ==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz", + "integrity": "sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.22.0", + "@typescript-eslint/experimental-utils": "2.23.0", "eslint-utils": "^1.4.3", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -4467,13 +4511,13 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz", - "integrity": "sha512-sJt1GYBe6yC0dWOQzXlp+tiuGglNhJC9eXZeC8GBVH98Zv9jtatccuhz0OF5kC/DwChqsNfghHx7OlIDQjNYAQ==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz", + "integrity": "sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.22.0", + "@typescript-eslint/typescript-estree": "2.23.0", "eslint-scope": "^5.0.0" }, "dependencies": { @@ -4490,21 +4534,21 @@ } }, "@typescript-eslint/parser": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.22.0.tgz", - "integrity": "sha512-FaZKC1X+nvD7qMPqKFUYHz3H0TAioSVFGvG29f796Nc5tBluoqfHgLbSFKsh7mKjRoeTm8J9WX2Wo9EyZWjG7w==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.23.0.tgz", + "integrity": "sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.22.0", - "@typescript-eslint/typescript-estree": "2.22.0", + "@typescript-eslint/experimental-utils": "2.23.0", + "@typescript-eslint/typescript-estree": "2.23.0", "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz", - "integrity": "sha512-2HFZW2FQc4MhIBB8WhDm9lVFaBDy6h9jGrJ4V2Uzxe/ON29HCHBTj3GkgcsgMWfsl2U5as+pTOr30Nibaw7qRQ==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz", + "integrity": "sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -4782,9 +4826,9 @@ } }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-jsx": { @@ -4805,9 +4849,9 @@ }, "dependencies": { "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true } } @@ -7008,13 +7052,31 @@ "schema-utils": "^2.6.1" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -7290,9 +7352,9 @@ "dev": true }, "dayjs": { - "version": "1.8.21", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.21.tgz", - "integrity": "sha512-1kbWK0hziklUHkGgiKr7xm59KwAg/K3Tp7H/8X+f58DnNCwY3pKYjOCJpIlVs125FRBukGVZdKZojC073D0IeQ==" + "version": "1.8.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", + "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ==" }, "debug": { "version": "3.1.0", @@ -8178,9 +8240,9 @@ } }, "eslint-plugin-simple-import-sort": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.1.tgz", - "integrity": "sha512-s6Hjp9rcIDYT1h7tuTulblbY7+XQNZK+014uUkNJSKRXEHZO2i7CTr16HOpfgD9HDnUOpl0fwphPsr0oxZqgGg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.2.tgz", + "integrity": "sha512-YPEGo7DbMANQ01d2OXlREcaHRszsW8LoUQ9mIjI7gXSdwpnWKfogtzL6FiBfDf1teCBx+AdcjcfDXSKpmhTWeA==", "dev": true }, "eslint-scope": { @@ -8524,29 +8586,6 @@ } } }, - "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.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" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -8554,9 +8593,9 @@ "dev": true }, "fast-copy": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.0.4.tgz", - "integrity": "sha512-KCJlUfEnzC66TUsoQtreImd/W11I52pXHp404uSzvPsU68WT/XJi3EmkqeGtPsKzJ1AXkVqqtyI4q3LiPtityw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.0.5.tgz", + "integrity": "sha512-KVLihIS41LzwuXJFdUm5NstoBfAmhCPCzhn362CX2IklaPrzQRtCedzrpPa7Ff/OVbNMUSJJFqx5+4yp07NmbQ==" }, "fast-deep-equal": { "version": "2.0.1", @@ -8654,15 +8693,6 @@ "websocket-driver": ">=0.5.1" } }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -8697,13 +8727,31 @@ "schema-utils": "^2.0.0" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -9147,18 +9195,6 @@ "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "dev": true }, - "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -9362,6 +9398,12 @@ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "dev": true + }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -10298,9 +10340,9 @@ "dev": true }, "istanbul-api": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", - "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.7.tgz", + "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==", "dev": true, "requires": { "async": "^2.6.2", @@ -10311,7 +10353,7 @@ "istanbul-lib-instrument": "^3.3.0", "istanbul-lib-report": "^2.0.8", "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", + "istanbul-reports": "^2.2.5", "js-yaml": "^3.13.1", "make-dir": "^2.1.0", "minimatch": "^3.0.4", @@ -10337,15 +10379,13 @@ "@babel/types": "^7.4.0", "istanbul-lib-coverage": "^2.0.5", "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -10452,12 +10492,12 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "html-escaper": "^2.0.0" } }, "jasmine": { @@ -10706,15 +10746,15 @@ } }, "karma-sabarivka-reporter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/karma-sabarivka-reporter/-/karma-sabarivka-reporter-3.0.2.tgz", - "integrity": "sha512-pN6+CwKLUCSGP2nHfjeaoWKi7ex1uosWr5z9D9O0/7O2gxLlx39UzV/ru2YQeHKiTzozlakFV6lAGgy36oiAWw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-sabarivka-reporter/-/karma-sabarivka-reporter-3.1.0.tgz", + "integrity": "sha512-hn53lbVObUEHOveyaz69SswBd40MTm7VrkY7McimQzhr0HjA0vdTVIP5cfssUg7g6aunusKNyhe8+G1RqcrtOA==", "dev": true, "requires": { "globby": "^11.0.0", "istanbul-lib-instrument": "^4.0.1", "predicates": "^2.0.3", - "typescript": "^3.8.2" + "typescript": "^3.8.3" }, "dependencies": { "array-union": { @@ -11503,9 +11543,9 @@ } }, "magic-string": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz", - "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -11882,9 +11922,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.1", @@ -12148,9 +12188,9 @@ "dev": true }, "node-fetch-npm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", - "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.3.tgz", + "integrity": "sha512-DgwoKEsqLnFZtk3ap7GWBHcHwnUhsNmQqEDcdjfQ8GofLEFJ081NAd4Uin3R7RFZBWVJCwHISw1oaEqPgSLloA==", "dev": true, "requires": { "encoding": "^0.1.11", @@ -13164,12 +13204,6 @@ "sha.js": "^2.4.8" } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -14152,12 +14186,6 @@ } } }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "dev": true - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -14227,78 +14255,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "puppeteer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.1.1.tgz", - "integrity": "sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg==", - "dev": true, - "requires": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" - }, - "dependencies": { - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "dev": true, - "requires": { - "agent-base": "5", - "debug": "4" - } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", - "dev": true, - "requires": { - "mime-db": "1.43.0" - } - }, - "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 - } - } - }, "q": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", @@ -14408,13 +14364,31 @@ "schema-utils": "^2.0.1" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -14541,9 +14515,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" @@ -14556,9 +14530,9 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.2.tgz", - "integrity": "sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.3.tgz", + "integrity": "sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw==", "dev": true, "requires": { "@babel/runtime": "^7.8.4", @@ -14671,17 +14645,17 @@ "dev": true }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { @@ -14691,9 +14665,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", - "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -14980,13 +14954,31 @@ "semver": "^6.3.0" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, @@ -16184,13 +16176,31 @@ "schema-utils": "^2.0.1" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } } @@ -16642,10 +16652,28 @@ "webpack-sources": "^1.4.3" }, "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, "find-cache-dir": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.0.tgz", - "integrity": "sha512-PtXtQb7IrD8O+h6Cq1dbpJH5NzD8+9keN1zZ0YlpDzl1PwXEJEBj6u1Xa92t1Hwluoozd9TNKul5Hi2iqpsWwg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -16731,12 +16759,12 @@ } }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, @@ -17051,20 +17079,9 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==" - }, - "uglify-js": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", - "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - } + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" }, "ultron": { "version": "1.1.1", @@ -17094,15 +17111,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { @@ -18293,9 +18310,9 @@ }, "dependencies": { "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "cacache": { @@ -19494,15 +19511,6 @@ "decamelize": "^1.2.0" } }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "requires": { - "fd-slicer": "~1.0.1" - } - }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", @@ -19516,9 +19524,9 @@ "dev": true }, "zone.js": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.2.tgz", - "integrity": "sha512-UAYfiuvxLN4oyuqhJwd21Uxb4CNawrq6fPS/05Su5L4G+1TN+HVDJMUHNMobVQDFJRir2cLAODXwluaOKB7HFg==" + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" } } } diff --git a/package.json b/package.json index da131815a..3bcb412bf 100644 --- a/package.json +++ b/package.json @@ -23,15 +23,15 @@ "private": true, "dependencies": { "@angular/animations": "^9.0.6", - "@angular/common": "~9.0.5", - "@angular/compiler": "^9.0.5", - "@angular/core": "~9.0.5", - "@angular/forms": "~9.0.5", - "@angular/localize": "^9.0.5", - "@angular/platform-browser": "~9.0.5", - "@angular/platform-browser-dynamic": "~9.0.5", - "@angular/router": "~9.0.5", - "@arkecosystem/crypto": "^2.6.24", + "@angular/common": "~9.0.6", + "@angular/compiler": "^9.0.6", + "@angular/core": "~9.0.6", + "@angular/forms": "~9.0.6", + "@angular/localize": "^9.0.6", + "@angular/platform-browser": "~9.0.6", + "@angular/platform-browser-dynamic": "~9.0.6", + "@angular/router": "~9.0.6", + "@arkecosystem/crypto": "^2.6.29", "@ionic-native/background-mode": "^5.22.0", "@ionic-native/clipboard": "^5.22.0", "@ionic-native/core": "^5.22.0", @@ -45,7 +45,7 @@ "@ionic-native/splash-screen": "^5.22.0", "@ionic-native/status-bar": "^5.22.0", "@ionic-native/vibration": "^5.22.0", - "@ionic/angular": "^5.0.4", + "@ionic/angular": "^5.0.5", "@ionic/storage": "^2.2.0", "@ngx-translate/core": "^12.1.2", "@ngx-translate/http-loader": "^4.0.0", @@ -93,36 +93,36 @@ "string-hash": "^1.1.3", "tslib": "^1.11.1", "uuid": "^7.0.2", - "zone.js": "~0.10.2" + "zone.js": "^0.10.3" }, "devDependencies": { "@angular-builders/custom-webpack": "^9.0.0", - "@angular-devkit/architect": "~0.900.5", - "@angular-devkit/build-angular": "~0.900.5", - "@angular/cli": "^9.0.5", - "@angular/compiler-cli": "^9.0.5", - "@angular/language-service": "~9.0.5", + "@angular-devkit/architect": "^0.900.6", + "@angular-devkit/build-angular": "~0.900.6", + "@angular/cli": "^9.0.6", + "@angular/compiler-cli": "^9.0.6", + "@angular/language-service": "~9.0.6", "@ionic/angular-toolkit": "^2.2.0", - "@ionic/lab": "^3.1.1", + "@ionic/lab": "^3.1.2", "@testing-library/angular": "^8.2.0", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", "@types/bytebuffer": "^5.0.40", "@types/is-url": "^1.2.28", - "@types/jasmine": "~3.5.7", + "@types/jasmine": "^3.5.9", "@types/jasminewd2": "~2.0.8", "@types/lodash": "^4.14.149", - "@types/node": "^13.7.7", + "@types/node": "^13.9.1", "@types/node-forge": "^0.9.2", "@types/semver": "^7.1.0", - "@typescript-eslint/eslint-plugin": "^2.22.0", - "@typescript-eslint/parser": "^2.22.0", + "@typescript-eslint/eslint-plugin": "^2.23.0", + "@typescript-eslint/parser": "^2.23.0", "codecov": "^3.6.5", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.0", "eslint-plugin-html": "^6.0.0", "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-simple-import-sort": "^5.0.1", + "eslint-plugin-simple-import-sort": "^5.0.2", "husky": "^4.2.3", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", @@ -130,7 +130,7 @@ "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~2.1.1", "karma-jasmine": "~3.1.1", - "karma-sabarivka-reporter": "^3.0.2", + "karma-sabarivka-reporter": "^3.1.0", "karma-spec-reporter": "0.0.32", "lint-staged": "^10.0.8", "ng-lint-staged": "^0.1.6", @@ -140,10 +140,9 @@ "postcss-scss": "^2.0.0", "prettier": "^1.19.1", "protractor": "~5.4.3", - "puppeteer": "^2.1.1", "tailwindcss": "^1.2.0", "ts-node": "~8.6.2", - "typescript": "^3.7.5" + "typescript": "^3.8.3" }, "description": "A Wallet for Everyone", "cordova": { diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 3e615e2b1..862d2b56f 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -9,9 +9,9 @@ describe("AppComponent", () => { let pageFixture: ComponentFixture; beforeEach(async () => { - const { fixture, component } = await TestHelpers.beforeEachCompiler([ - AppComponent, - ]); + const { fixture, component } = await TestHelpers.beforeEachCompiler< + AppComponent + >([AppComponent]); pageFixture = fixture; pageComponent = component; pageFixture.detectChanges(); From 94c44a8068260752ab8d703a9234dd0bc4deab18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Thu, 19 Mar 2020 07:16:24 -0300 Subject: [PATCH 32/46] test: add contacts unit tests (#530) * test: add contacts service unit suite * test: add empty name case * test: use invalid address constant * test: mocking user data methods for contacts service tests * fix: mock saveProfiles method from user-data * test: add add and edit contact test cases * fix: adjust conditional order * test: add by address and by name cases * test: remove single test run * chore: add empty address translation Co-authored-by: Lucio Rubens <4539235+luciorubeens@users.noreply.github.com> --- src/app/services/contacts/contacts.spec.ts | 244 +++++++++++++++++++++ src/app/services/contacts/contacts.ts | 22 +- src/assets/i18n/en.json | 1 + test/mocks.ts | 33 ++- 4 files changed, 289 insertions(+), 11 deletions(-) create mode 100644 src/app/services/contacts/contacts.spec.ts diff --git a/src/app/services/contacts/contacts.spec.ts b/src/app/services/contacts/contacts.spec.ts new file mode 100644 index 000000000..9d8ac0a8c --- /dev/null +++ b/src/app/services/contacts/contacts.spec.ts @@ -0,0 +1,244 @@ +import { TestBed } from "@angular/core/testing"; +import { IonicStorageModule } from "@ionic/storage"; +import { switchMapTo } from "rxjs/operators"; + +import { UserDataProviderMock } from "@@/test/mocks"; +import { Profile, StoredNetwork } from "@/models/model"; +import { NetworkProvider } from "@/services/network/network"; +import { UserDataService } from "@/services/user-data/user-data.interface"; + +import { ContactsProvider } from "./contacts"; + +const VALID_ADDRESS = "D8x2Rno1CxrE5kRoVHS1EooQnfTL3v5ZyM"; +const VALID_ADDRESS_2 = "DBk4cPYpqp7EBcvkstVDpyX7RQJNHxpMg8"; +const INVALID_ADDRESS = "D8x2Rno1CxrE5kRoVHS1EooQnfTL3v5z12"; + +describe("Contacts service", () => { + let contactsService: ContactsProvider; + let userDataService: UserDataService; + let userProfile: Profile; + + beforeEach(function() { + TestBed.configureTestingModule({ + imports: [IonicStorageModule.forRoot()], + providers: [ + ContactsProvider, + NetworkProvider, + { provide: UserDataService, useClass: UserDataProviderMock }, + ], + }); + contactsService = TestBed.inject(ContactsProvider); + userDataService = TestBed.inject(UserDataService); + // Mock network + const network = new StoredNetwork(); + network.version = 30; + userDataService.currentNetwork = network; + contactsService.removeContactByAddress(VALID_ADDRESS); + contactsService.removeContactByAddress(VALID_ADDRESS_2); + }); + + describe("Add contact", () => { + it("should add a contact", done => { + contactsService.addContact(VALID_ADDRESS, "Caio").subscribe(() => { + const contact = contactsService.getContactByName("Caio"); + expect(contact).toEqual({ + address: VALID_ADDRESS, + name: "Caio", + }); + done(); + }); + }); + + it("should throw invalid address error", done => { + contactsService.addContact(INVALID_ADDRESS, "b").subscribe( + () => {}, + error => { + expect(error.key).toEqual("CONTACTS_PAGE.INVALID_ADDRESS"); + done(); + }, + ); + }); + + it("should throw invalid name empty error", done => { + contactsService.addContact(VALID_ADDRESS, null).subscribe( + () => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_NAME_EMPTY", + ); + done(); + }, + ); + }); + + it("should throw existent address error", done => { + contactsService + .addContact(VALID_ADDRESS, "Caio") + .pipe( + switchMapTo( + contactsService.addContact(VALID_ADDRESS, "Caio"), + ), + ) + .subscribe( + data => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_EXISTS_ADDRESS", + ); + done(); + }, + ); + }); + + it("should throw existent name error", done => { + contactsService + .addContact(VALID_ADDRESS, "Caio") + .pipe( + switchMapTo( + contactsService.addContact(VALID_ADDRESS_2, "Caio"), + ), + ) + .subscribe( + data => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_EXISTS_NAME", + ); + done(); + }, + ); + }); + }); + + describe("Edit contact", () => { + it("should edit a contact name", done => { + contactsService.addContact(VALID_ADDRESS, "Caio"); + contactsService + .editContact(VALID_ADDRESS, "Katy") + .subscribe(data => { + const contact = contactsService.getContactByAddress( + VALID_ADDRESS, + ); + expect(contact).toEqual({ + address: VALID_ADDRESS, + name: "Katy", + }); + done(); + }); + }); + + it("should throw inexistent address error", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + contactsService.editContact(VALID_ADDRESS_2, "Stich").subscribe( + () => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_NOT_EXISTS_ADDRESS", + ); + done(); + }, + ); + }); + }); + + it("should throw existent name error", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + contactsService.editContact(VALID_ADDRESS_2, "Lilo").subscribe( + () => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_EXISTS_NAME", + ); + }, + ); + done(); + }); + }); + + it("should throw empty contact name error", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + contactsService.editContact(VALID_ADDRESS, null).subscribe( + () => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_NAME_EMPTY", + ); + }, + ); + done(); + }); + }); + + it("should throw empty contact address error", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + contactsService.editContact(null, "Lilo").subscribe( + () => {}, + error => { + expect(error.key).toEqual( + "CONTACTS_PAGE.CONTACT_ADDRESS_EMPTY", + ); + }, + ); + done(); + }); + }); + }); + + describe("By address", () => { + it("should remove a contact by address", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + contactsService + .removeContactByAddress(VALID_ADDRESS) + .subscribe(() => { + const contact = contactsService.getContactByName( + "Lilo", + ); + expect(contact).toEqual(undefined); + }); + done(); + }); + }); + + it("should get a contact by address", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + const contact = contactsService.getContactByAddress( + VALID_ADDRESS, + ); + expect(contact).toEqual({ + address: VALID_ADDRESS, + name: "Lilo", + }); + done(); + }); + }); + + it("should return null if no address provided", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + const contact = contactsService.getContactByAddress(null); + expect(contact).toEqual(null); + done(); + }); + }); + }); + + describe("By name", () => { + it("should get a contact by name", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + const contact = contactsService.getContactByName("Lilo"); + expect(contact).toEqual({ + address: VALID_ADDRESS, + name: "Lilo", + }); + done(); + }); + }); + + it("should return null if no name provided", done => { + contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { + const contact = contactsService.getContactByName(null); + expect(contact).toEqual(null); + done(); + }); + }); + }); +}); diff --git a/src/app/services/contacts/contacts.ts b/src/app/services/contacts/contacts.ts index 7da6fb7f5..2a9afd402 100644 --- a/src/app/services/contacts/contacts.ts +++ b/src/app/services/contacts/contacts.ts @@ -53,27 +53,33 @@ export class ContactsProvider { } public editContact(address: string, name: string): Observable { - const contact = this.getContactByAddress(address); - if (!contact) { + if (!name) { return throwError({ - key: "CONTACTS_PAGE.CONTACT_NOT_EXISTS_ADDRESS", - parameters: { address }, + key: "CONTACTS_PAGE.CONTACT_NAME_EMPTY", } as TranslatableObject); } - if (!name) { + if (!address) { return throwError({ - key: "CONTACTS_PAGE.CONTACT_NAME_EMPTY", + key: "CONTACTS_PAGE.CONTACT_ADDRESS_EMPTY", } as TranslatableObject); } - const existingContact = this.getContactByName(name); - if (existingContact && existingContact.address !== address) { + const contactByName = this.getContactByName(name); + if (contactByName && contactByName.address !== address) { return throwError({ key: "CONTACTS_PAGE.CONTACT_EXISTS_NAME", parameters: { name }, } as TranslatableObject); } + const contact = this.getContactByAddress(address); + + if (!contact) { + return throwError({ + key: "CONTACTS_PAGE.CONTACT_NOT_EXISTS_ADDRESS", + parameters: { address }, + } as TranslatableObject); + } contact.name = name; const profile = this.getProfile(); diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 2cfd2a9c7..9f246c692 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -17,6 +17,7 @@ "CONTACTS": "Contacts", "INVALID_ADDRESS": "The address '{{ address }}' is invalid!", "CONTACT_NAME_EMPTY": "The contact name is empty!", + "CONTACT_ADDRESS_EMPTY": "The contact address is empty!", "CONTACT_EXISTS_ADDRESS": "There is already a contact with the address '{{ address }}'!", "CONTACT_NOT_EXISTS_ADDRESS": "A contact with the address '{{ address }}' doesn't exist!", "CONTACT_EXISTS_NAME": "There is already a contact with the name '{{ name }}'!", diff --git a/test/mocks.ts b/test/mocks.ts index b19789a3e..99210e8b4 100644 --- a/test/mocks.ts +++ b/test/mocks.ts @@ -7,7 +7,7 @@ import { SocialSharing } from "@ionic-native/social-sharing/ngx"; import { SplashScreen } from "@ionic-native/splash-screen/ngx"; import { StatusBar } from "@ionic-native/status-bar/ngx"; import { Delegate, Network as ArkNetwork } from "ark-ts"; -import { Observable, Subject } from "rxjs"; +import { Observable, of, Subject } from "rxjs"; import { Profile, StoredNetwork, Wallet, WalletKeys } from "@/models/model"; import { UserDataService } from "@/services/user-data/user-data.interface"; @@ -137,6 +137,16 @@ export class ScreenOrientationMock extends ScreenOrientation { unlock(): void {} } +const generateMockProfile = () => { + const userProfile = new Profile(); + userProfile.contacts = []; + userProfile.name = "Test profile"; + userProfile.networkId = "30"; + userProfile.wallets = []; + + return userProfile; +}; + @Injectable() export class UserDataProviderMock implements UserDataService { public currentNetwork: StoredNetwork; @@ -150,6 +160,12 @@ export class UserDataProviderMock implements UserDataService { public onUpdateWallet$: Subject; public onSelectProfile$: Subject; + constructor() { + const mockProfile = generateMockProfile(); + this.profiles = { ["test_profile_id"]: mockProfile }; + this.currentProfile = mockProfile; + } + public get isDevNet(): boolean { throw new Error("Method not implemented."); } @@ -184,8 +200,19 @@ export class UserDataProviderMock implements UserDataService { throw new Error("Method not implemented."); } public saveProfiles(profiles?: { [key: string]: any }) { - throw new Error("Method not implemented."); + if (profiles) { + this.profiles = profiles; + } + + return of(true); } + public setCurrentProfile( + profileId: string, + broadcast: boolean = true, + ): void { + this.currentProfile = this.profiles[profileId]; + } + public encryptSecondPassphrase( wallet: Wallet, pinCode: string, @@ -247,7 +274,7 @@ export class UserDataProviderMock implements UserDataService { throw new Error("Method not implemented."); } public getCurrentProfile(): Profile { - throw new Error("Method not implemented."); + return this.currentProfile; } public loadProfiles() { throw new Error("Method not implemented."); From aa2791342c7e14e938038a1ee588123e65a33b34 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2020 07:28:38 -0300 Subject: [PATCH 33/46] chore(deps): update dependency ts-node to ~8.7.0 (#531) Co-authored-by: Renovate Bot --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f6ab9d5f..bea3785cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5040,9 +5040,9 @@ "dev": true }, "arg": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz", - "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "argparse": { @@ -11570,9 +11570,9 @@ } }, "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "make-fetch-happen": { @@ -16957,9 +16957,9 @@ "dev": true }, "ts-node": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz", - "integrity": "sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz", + "integrity": "sha512-s659CsHrsxaRVDEleuOkGvbsA0rWHtszUNEt1r0CgAFN5ZZTQtDzpsluS7W5pOGJIa1xZE8R/zK4dEs+ldFezg==", "dev": true, "requires": { "arg": "^4.1.0", diff --git a/package.json b/package.json index 3bcb412bf..b2962a2af 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "prettier": "^1.19.1", "protractor": "~5.4.3", "tailwindcss": "^1.2.0", - "ts-node": "~8.6.2", + "ts-node": "~8.7.0", "typescript": "^3.8.3" }, "description": "A Wallet for Everyone", From 8867fd9394cb4de66efc3b5ca44b26c9c8a38eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 19 Mar 2020 12:31:49 -0300 Subject: [PATCH 34/46] test: add user data service specs (#532) --- .eslintrc.json | 11 +- package-lock.json | 1502 +++++++++++++++-- package.json | 2 + src/app/app.component.ts | 15 +- .../input-currency/input-currency.module.ts | 1 - .../paste-clipboard-value.ts | 2 +- src/app/pages/intro/intro.ts | 8 +- .../wallet-dashboard/wallet-dashboard.ts | 25 +- src/app/services/ark-api/ark-api.ts | 12 +- src/app/services/contacts/contacts.ts | 2 +- .../services/user-data/user-data.interface.ts | 17 +- src/app/services/user-data/user-data.spec.ts | 577 +++++++ src/app/services/user-data/user-data.ts | 47 +- test/fixture/networks.fixture.ts | 13 + test/fixture/profiles.fixture.ts | 9 + test/fixture/wallets.fixture.ts | 14 + test/helpers.ts | 1 - test/mocks.ts | 22 +- 18 files changed, 2044 insertions(+), 236 deletions(-) create mode 100644 src/app/services/user-data/user-data.spec.ts create mode 100644 test/fixture/networks.fixture.ts create mode 100644 test/fixture/profiles.fixture.ts create mode 100644 test/fixture/wallets.fixture.ts diff --git a/.eslintrc.json b/.eslintrc.json index 97a57d5b7..2c26281f0 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,7 +3,13 @@ "parserOptions": { "project": "./tsconfig.eslint.json" }, - "plugins": ["@typescript-eslint", "prettier", "simple-import-sort", "html"], + "plugins": [ + "@typescript-eslint", + "prettier", + "simple-import-sort", + "html", + "unused-imports" + ], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", @@ -47,6 +53,7 @@ ], "prettier/prettier": "error", "require-atomic-updates": "off", - "simple-import-sort/sort": "error" + "simple-import-sort/sort": "error", + "unused-imports/no-unused-imports-ts": "error" } } diff --git a/package-lock.json b/package-lock.json index bea3785cc..0f86a2244 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3842,6 +3842,34 @@ "@types/yargs": "^13.0.0" } }, + "@ngneat/spectator": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@ngneat/spectator/-/spectator-5.3.1.tgz", + "integrity": "sha512-EY+rHp+7yBsiKSMDjrwTV4aeoGtMdLc3YwA1b7dGkt268VwCg6/mPJstlfnT9rbSLCtAqf5jfPkjHEfXylux8Q==", + "dev": true, + "requires": { + "@testing-library/dom": "6.1.0", + "jquery": "3.4.1", + "replace-in-file": "^4.1.3", + "schematics-utilities": "^1.1.1" + }, + "dependencies": { + "@testing-library/dom": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.1.0.tgz", + "integrity": "sha512-qivqFvnbVIH3DyArFofEU/jlOhkGIioIemOy9A9M/NQTpPyDDQmtVkAfoB18RKN581f0s/RJMRBbq9WfMIhFTw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@sheerun/mutationobserver-shim": "^0.3.2", + "@types/testing-library__dom": "^6.0.0", + "aria-query": "3.0.0", + "pretty-format": "^24.8.0", + "wait-for-expect": "^1.3.0" + } + } + } + }, "@ngtools/webpack": { "version": "9.0.6", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.6.tgz", @@ -4455,6 +4483,15 @@ "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", "dev": true }, + "@types/testing-library__dom": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", + "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", + "dev": true, + "requires": { + "pretty-format": "^24.3.0" + } + }, "@types/tough-cookie": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", @@ -5039,6 +5076,17 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -6597,6 +6645,13 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -7544,6 +7599,13 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -8245,6 +8307,25 @@ "integrity": "sha512-YPEGo7DbMANQ01d2OXlREcaHRszsW8LoUQ9mIjI7gXSdwpnWKfogtzL6FiBfDf1teCBx+AdcjcfDXSKpmhTWeA==", "dev": true }, + "eslint-plugin-unused-imports": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-0.1.2.tgz", + "integrity": "sha512-uribBu/L3/+XFGY3ticZTcWxkcrhISphjrfiKkZ/gxFa3u0EIPfc4MNtwrk6gcg7Mhs+InDxXoUxd5HEZtaw3w==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^2.3.0", + "eslint": "^6.3.0", + "eslint-rule-composer": "^0.3.0", + "requireindex": "~1.1.0", + "typescript": "^3.6.3" + } + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -9056,6 +9137,47 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, "genfun": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", @@ -9261,6 +9383,13 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -10561,6 +10690,12 @@ } } }, + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", + "dev": true + }, "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -11363,6 +11498,12 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "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.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -12389,6 +12530,49 @@ } } }, + "npm-registry-client": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", + "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "dev": true, + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, "npm-registry-fetch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", @@ -12412,6 +12596,19 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -14699,131 +14896,318 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "replace-in-file": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-4.3.1.tgz", + "integrity": "sha512-FqVvfmpqGTD2JRGI1JjJ86b24P17x/WWwGdxExeyJxnh/2rVQz2+jXfD1507UnnhEQw092X0u0DPCBf1WC4ooQ==", "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.0", - "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.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "chalk": "^2.4.2", + "glob": "^7.1.6", + "yargs": "^15.0.2" }, "dependencies": { - "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==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "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" + } + }, + "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" + } + }, + "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==", "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "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.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "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-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" - } - }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "requires": { - "through": "~2.3.4" - } - }, - "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 - }, - "reusify": { - "version": "1.0.4", + }, + "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" + } + }, + "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 + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + } + }, + "yargs-parser": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz", + "integrity": "sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "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.0", + "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.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "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" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requireindex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", + "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", + "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.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "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-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" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "requires": { + "through": "~2.3.4" + } + }, + "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 + }, + "reusify": { + "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true @@ -14960,62 +15344,844 @@ "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "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" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "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": "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" + } + }, + "schematics-utilities": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/schematics-utilities/-/schematics-utilities-1.1.3.tgz", + "integrity": "sha512-5HnrH+MJkUmK7KfRpA457FY0BZatX2oxNts54P1347xlICCC7KjAh0r2Tue20Xfruw1mS3X5woTxa8od+JsqUA==", + "dev": true, + "requires": { + "@angular-devkit/core": "^7.3.6", + "@angular-devkit/schematics": "^7.3.6", + "npm-registry-client": "^8.5.1", + "parse5": "^5.0.0", + "rxjs": "^6.4.0", + "typescript": "^3.3.3333" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz", + "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.3.9.tgz", + "integrity": "sha512-xzROGCYp7aQbeJ3V6YC0MND7wKEAdWqmm/GaCufEk0dDS8ZGe0sQhcM2oBRa2nQqGQNeThFIH51kx+FayrJP0w==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "rxjs": "6.3.3" + }, + "dependencies": { + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "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" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "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" + } + }, + "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" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": 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" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "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 }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "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": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "kind-of": "^3.0.2" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "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 + }, + "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" + } } } }, - "saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - } - }, - "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": "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" - } - }, "sdp": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/sdp/-/sdp-1.5.4.tgz", @@ -15382,6 +16548,12 @@ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", "dev": true }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", @@ -19297,6 +20469,16 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "wif": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", diff --git a/package.json b/package.json index b2962a2af..5b3e07725 100644 --- a/package.json +++ b/package.json @@ -104,6 +104,7 @@ "@angular/language-service": "~9.0.6", "@ionic/angular-toolkit": "^2.2.0", "@ionic/lab": "^3.1.2", + "@ngneat/spectator": "^5.3.1", "@testing-library/angular": "^8.2.0", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", @@ -123,6 +124,7 @@ "eslint-plugin-html": "^6.0.0", "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-simple-import-sort": "^5.0.2", + "eslint-plugin-unused-imports": "^0.1.2", "husky": "^4.2.3", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 559e25b61..fe6d12a14 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -30,7 +30,7 @@ import { import { TranslateService } from "@ngx-translate/core"; import moment from "moment"; import { Subject } from "rxjs"; -import { debounceTime, takeUntil } from "rxjs/operators"; +import { debounceTime, switchMap, takeUntil } from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { Wallet } from "@/models/model"; @@ -335,12 +335,15 @@ export class AppComponent implements OnDestroy, OnInit { .subscribe((wallet: Wallet) => { this.arkApiProvider .getDelegateByPublicKey(wallet.publicKey) - .subscribe(delegate => - this.userDataService.ensureWalletDelegateProperties( - wallet, - delegate, + .pipe( + switchMap(delegate => + this.userDataService.ensureWalletDelegateProperties( + wallet, + delegate, + ), ), - ); + ) + .subscribe(); }); } diff --git a/src/app/components/input-currency/input-currency.module.ts b/src/app/components/input-currency/input-currency.module.ts index 510a1f494..800b44a63 100644 --- a/src/app/components/input-currency/input-currency.module.ts +++ b/src/app/components/input-currency/input-currency.module.ts @@ -1,5 +1,4 @@ import { NgModule } from "@angular/core"; -import { ReactiveFormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { SharedModule } from "@/app/shared.module"; diff --git a/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts b/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts index 55276d09b..80af34560 100644 --- a/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts +++ b/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts @@ -1,4 +1,4 @@ -import { Directive, HostListener, Input } from "@angular/core"; +import { Directive, HostListener } from "@angular/core"; import { NgControl } from "@angular/forms"; @Directive({ diff --git a/src/app/pages/intro/intro.ts b/src/app/pages/intro/intro.ts index fc85218d6..1d0370112 100644 --- a/src/app/pages/intro/intro.ts +++ b/src/app/pages/intro/intro.ts @@ -1,10 +1,4 @@ -import { - AfterViewInit, - Component, - OnInit, - ViewChild, - ViewEncapsulation, -} from "@angular/core"; +import { Component, OnInit, ViewChild } from "@angular/core"; import { IonSlides, NavController } from "@ionic/angular"; import { TranslateService } from "@ngx-translate/core"; diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts index 30c55a343..ca746d252 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts @@ -14,7 +14,13 @@ import { TranslateService } from "@ngx-translate/core"; import { Fees } from "ark-ts"; import lodash from "lodash"; import { Subject, throwError } from "rxjs"; -import { catchError, debounceTime, finalize, takeUntil } from "rxjs/operators"; +import { + catchError, + debounceTime, + finalize, + switchMap, + takeUntil, +} from "rxjs/operators"; import * as constants from "@/app/app.constants"; import { WalletBackupModal } from "@/app/modals/wallet-backup/wallet-backup"; @@ -400,7 +406,9 @@ export class WalletDashboardPage implements OnInit, OnDestroy { } private deleteWallet() { - this.userDataService.removeWalletByAddress(this.wallet.address); + this.userDataService + .removeWalletByAddress(this.wallet.address) + .subscribe(); this.navCtrl.navigateRoot("/wallets"); } @@ -452,12 +460,15 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.arkApiProvider .getDelegateByPublicKey(this.wallet.publicKey) - .subscribe(delegate => - this.userDataService.ensureWalletDelegateProperties( - this.wallet, - delegate, + .pipe( + switchMap(delegate => + this.userDataService.ensureWalletDelegateProperties( + this.wallet, + delegate, + ), ), - ); + ) + .subscribe(); }); } diff --git a/src/app/services/ark-api/ark-api.ts b/src/app/services/ark-api/ark-api.ts index a574d2593..eb3ec38d7 100644 --- a/src/app/services/ark-api/ark-api.ts +++ b/src/app/services/ark-api/ark-api.ts @@ -5,22 +5,12 @@ import * as arkts from "ark-ts"; import arktsConfig from "ark-ts/config"; import lodash from "lodash"; import moment from "moment"; -import { - EMPTY, - forkJoin, - Observable, - of, - Subject, - throwError, - zip, -} from "rxjs"; +import { EMPTY, Observable, of, Subject, throwError, zip } from "rxjs"; import { catchError, expand, finalize, map, - mergeMap, - mergeMapTo, switchMap, tap, } from "rxjs/operators"; diff --git a/src/app/services/contacts/contacts.ts b/src/app/services/contacts/contacts.ts index 2a9afd402..6e77f5852 100644 --- a/src/app/services/contacts/contacts.ts +++ b/src/app/services/contacts/contacts.ts @@ -124,7 +124,7 @@ export class ContactsProvider { return this.userDataService.getProfileById(profileId); } - const profile: Profile = this.userDataService.getCurrentProfile(); + const profile: Profile = this.userDataService.currentProfile; if (!profile) { throw new Error( "This service can only be used if a current profile is set!", diff --git a/src/app/services/user-data/user-data.interface.ts b/src/app/services/user-data/user-data.interface.ts index a291dc274..1fc041f63 100644 --- a/src/app/services/user-data/user-data.interface.ts +++ b/src/app/services/user-data/user-data.interface.ts @@ -31,11 +31,11 @@ export abstract class UserDataService { id: string; }>; public abstract getNetworkById(networkId: string): StoredNetwork; - public abstract removeNetworkById(networkId: string): any; - public abstract addProfile(profile: Profile): any; - public abstract getProfileByName(name: string): any; - public abstract getProfileById(profileId: string): any; - public abstract removeProfileById(profileId: string): any; + public abstract removeNetworkById(networkId: string): Observable; + public abstract addProfile(profile: Profile): Observable; + public abstract getProfileByName(name: string): Profile; + public abstract getProfileById(profileId: string): Profile; + public abstract removeProfileById(profileId: string): Observable; public abstract saveProfiles(profiles?: { [key: string]: any }): any; public abstract encryptSecondPassphrase( wallet: Wallet, @@ -56,11 +56,11 @@ export abstract class UserDataService { public abstract removeWalletByAddress( address: string, profileId?: string, - ): void; + ): Observable; public abstract ensureWalletDelegateProperties( wallet: Wallet, delegateOrUserName: string | Delegate, - ): void; + ): Observable; public abstract getWalletByAddress( address: string, profileId?: string, @@ -85,8 +85,7 @@ export abstract class UserDataService { ): string; public abstract setCurrentWallet(wallet: Wallet): void; public abstract clearCurrentWallet(): void; - public abstract getCurrentProfile(): Profile; - public abstract loadProfiles(): any; + public abstract loadProfiles(): Observable>; public abstract loadNetworks(): Observable>; public abstract getKeysByWallet( wallet: Wallet, diff --git a/src/app/services/user-data/user-data.spec.ts b/src/app/services/user-data/user-data.spec.ts new file mode 100644 index 000000000..09d9904f8 --- /dev/null +++ b/src/app/services/user-data/user-data.spec.ts @@ -0,0 +1,577 @@ +import { fakeAsync, tick } from "@angular/core/testing"; +import { + createServiceFactory, + mockProvider, + SpectatorService, + SpyObject, +} from "@ngneat/spectator"; +import { of, Subject } from "rxjs"; +import { catchError, map, mapTo, switchMap } from "rxjs/operators"; + +import * as networksFixtures from "@@/test/fixture/networks.fixture"; +import * as profilesFixtures from "@@/test/fixture/profiles.fixture"; +import * as walletsFixtures from "@@/test/fixture/wallets.fixture"; +import { STORAGE_NETWORKS, STORAGE_PROFILES } from "@/app/app.constants"; +import { Profile, StoredNetwork, Wallet } from "@/models/model"; + +import { AuthProvider } from "../auth/auth"; +import { ForgeProvider } from "../forge/forge"; +import { StorageProvider } from "../storage/storage"; +import { UserDataServiceImpl } from "./user-data"; +import { UserDataService } from "./user-data.interface"; + +describe("User Data Service", () => { + let userDataService: UserDataService; + let spectator: SpectatorService; + + const createService = createServiceFactory({ + service: UserDataServiceImpl, + mocks: [ForgeProvider], + providers: [ + mockProvider(StorageProvider, { + set: () => of(true), + onClear$: new Subject(), + getObject: (prop: string) => { + switch (prop) { + case STORAGE_PROFILES: + return of(profilesFixtures); + case STORAGE_NETWORKS: + return of(networksFixtures); + } + }, + }), + mockProvider(AuthProvider, { + onLogin$: new Subject(), + }), + ], + }); + + beforeEach(() => { + spectator = createService(); + userDataService = spectator.service; + }); + + it("should load profiles and networks on init", () => { + expect(Object.keys(userDataService.profiles)).toEqual( + Object.keys(profilesFixtures), + ); + expect(Object.keys(userDataService.networks)).toEqual( + Object.keys(networksFixtures), + ); + }); + + describe("Profile", () => { + it("should add profile", done => { + const newProfile = new Profile().deserialize({ + name: "Profile 3", + networkId: "mainnet", + }); + userDataService.addProfile(newProfile).subscribe(() => { + expect( + userDataService.getProfileByName(newProfile.name), + ).toBeTruthy(); + done(); + }); + }); + + it("should get profile by name", () => { + const { profile1 } = profilesFixtures; + expect(userDataService.getProfileByName(profile1.name)).toEqual( + jasmine.objectContaining({ + name: profile1.name, + networkId: profile1.networkId, + }), + ); + }); + + it("should get profile by id", () => { + const { profile1 } = profilesFixtures; + expect(userDataService.getProfileById("profile1")).toEqual( + jasmine.objectContaining({ + name: profile1.name, + networkId: profile1.networkId, + }), + ); + }); + + it("should remove profile by id", done => { + userDataService + .removeProfileById("profile1") + .pipe(mapTo(userDataService.getProfileById("profile1"))) + .subscribe(profile => { + expect(profile).toBeUndefined(); + done(); + }); + }); + }); + + describe("Network", () => { + it("should get the network by id", () => { + expect(userDataService.getNetworkById("mainnet")).toEqual( + jasmine.objectContaining({ + name: "mainnet", + }), + ); + }); + + it("should remove the network by id", done => { + userDataService.removeNetworkById("mainnet").subscribe(() => { + expect( + userDataService.getNetworkById("mainnet"), + ).toBeUndefined(); + done(); + }); + }); + + it("should add network", done => { + const customNetwork = new StoredNetwork(); + customNetwork.name = "testnet"; + userDataService + .addOrUpdateNetwork(customNetwork) + .subscribe(result => { + expect(result).toEqual( + jasmine.objectContaining({ + id: jasmine.any(String), + network: jasmine.objectContaining({ + name: customNetwork.name, + }), + }), + ); + done(); + }); + }); + + it("should update network", done => { + const id = "mainnet"; + const network = new StoredNetwork(); + network.name = "Custom Mainnet"; + + userDataService + .addOrUpdateNetwork(network, id) + .pipe(mapTo(userDataService.getNetworkById(id))) + .subscribe(result => { + expect(result).toEqual( + jasmine.objectContaining({ + name: network.name, + }), + ); + done(); + }); + }); + }); + + describe("Wallet", () => { + it("should set the current wallet", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + userDataService.setCurrentWallet(wallet); + expect(userDataService.currentWallet).toEqual(wallet); + }); + + it("should clear the current wallet", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + userDataService.setCurrentWallet(wallet); + expect(userDataService.currentWallet).toEqual(wallet); + userDataService.clearCurrentWallet(); + expect(userDataService.currentWallet).toBeUndefined(); + }); + + it("should fail if the profile is not specified", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + userDataService + .addWallet(wallet, null, null) + .subscribe(null, error => { + expect(error).toBe("EMPTY_PROFILE_ID"); + done(); + }); + }); + + it("should fail if the profile is not found", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + userDataService + .addWallet(wallet, null, null, "custom") + .subscribe(null, error => { + expect(error).toBe("PROFILE_NOT_FOUND"); + done(); + }); + }); + + it("should add wallet with encryption", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const profileId = "profile1"; + const passphrase = "ark"; + const pinCode = "123"; + const forgeProvider = spectator.get(ForgeProvider); + forgeProvider.generateIv.and.returnValue("iv"); + forgeProvider.encrypt.and.returnValue("secret"); + userDataService + .addWallet(wallet, passphrase, pinCode, profileId) + .pipe(mapTo(userDataService.getProfileById(profileId))) + .subscribe(profile => { + expect(Object.keys(profile.wallets).length).toBe(1); + expect(profile.wallets[wallet.address]).toEqual( + jasmine.objectContaining({ + iv: "iv", + cipherKey: "secret", + }), + ); + done(); + }); + }); + + it("should add wallet and skip encryption if no passphrase is specified", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const profileId = "profile1"; + + userDataService + .addWallet(wallet, null, null, profileId) + .pipe(mapTo(userDataService.getProfileById(profileId))) + .subscribe(profile => { + expect(profile.wallets[wallet.address]).toEqual( + jasmine.objectContaining(walletsFixtures.wallet1), + ); + }); + }); + + it("should not add wallet if the address already exists", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const profileId = "profile1"; + + userDataService + .addWallet(wallet, null, null, profileId) + .pipe( + switchMap(() => { + const otherWallet = new Wallet().deserialize( + walletsFixtures.wallet1, + ); + otherWallet.label = "test"; + return userDataService.addWallet( + otherWallet, + null, + null, + profileId, + ); + }), + mapTo(userDataService.getProfileById(profileId)), + ) + .subscribe(profile => { + expect(profile.wallets[wallet.address].label).not.toBe( + "test", + ); + }); + }); + + it("should get the wallet label", () => { + const walletWithLabel = new Wallet().deserialize({ + ...walletsFixtures.wallet1, + label: "My Label", + }); + const walletWithUsername = new Wallet().deserialize( + walletsFixtures.wallet2, + ); + expect(userDataService.getWalletLabel(walletWithUsername)).toBe( + walletWithUsername.username, + ); + expect(userDataService.getWalletLabel(walletWithLabel)).toBe( + walletWithLabel.label, + ); + }); + + it("should get the wallet label by address", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + wallet.label = "test"; + const profileId = "profile1"; + userDataService + .addWallet(wallet, null, null, profileId) + .pipe( + mapTo( + userDataService.getWalletLabel( + wallet.address, + profileId, + ), + ), + ) + .subscribe(label => { + expect(label).toEqual(wallet.label); + done(); + }); + }); + + it("should update the wallet", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const profileId = "profile1"; + userDataService + .addWallet(wallet, null, null, profileId) + .pipe( + switchMap(() => { + wallet.label = "test"; + return userDataService.updateWallet(wallet, profileId); + }), + mapTo( + userDataService.getWalletByAddress( + wallet.address, + profileId, + ), + ), + ) + .subscribe(wallet => { + expect(wallet.label).toEqual(wallet.label); + done(); + }); + }); + + it("should fail to update the wallet if no profileId is specified", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + userDataService + .updateWallet(wallet, undefined) + .subscribe(null, error => { + expect(error).toBe("EMPTY_PROFILE_ID"); + done(); + }); + }); + + it("should remove wallet by address", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const profileId = "profile1"; + userDataService + .addWallet(wallet, null, null, profileId) + .pipe( + switchMap(() => { + return userDataService.removeWalletByAddress( + wallet.address, + profileId, + ); + }), + map(() => + userDataService.getWalletByAddress( + wallet.address, + profileId, + ), + ), + ) + .subscribe(wallet => { + expect(wallet).toBeNull(); + done(); + }); + }); + + it("should not get the wallet keys if there is no encripted key", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + expect( + userDataService.getKeysByWallet(wallet, "secret"), + ).toBeUndefined(); + }); + + it("should fail to get the decrypted keys if there is no encripted key", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + expect( + userDataService.getKeysByWallet(wallet, "123"), + ).toBeUndefined(); + }); + + it("should get the decrypted keys", () => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + wallet.cipherKey = "terces"; + const forgeProvider = spectator.get(ForgeProvider); + forgeProvider.decrypt.and.returnValue("secret"); + expect(userDataService.getKeysByWallet(wallet, "123")).toEqual( + jasmine.objectContaining({ + key: "secret", + }), + ); + }); + }); + + describe("Logged in", () => { + let authService: SpyObject; + + beforeEach(() => { + authService = spectator.get(AuthProvider); + }); + + it("should assign the current profile", done => { + userDataService.onSelectProfile$.subscribe(profile => { + expect(profile).toBeTruthy(); + done(); + }); + authService.onLogin$.next("profile1"); + expect(userDataService.currentProfile).toEqual( + jasmine.objectContaining(profilesFixtures.profile1), + ); + }); + + it("should assign the current network", () => { + authService.onLogin$.next("profile1"); + expect(userDataService.currentNetwork.name).toBe( + networksFixtures[profilesFixtures.profile1.networkId].name, + ); + }); + + it("should update the current network", () => { + authService.onLogin$.next("profile1"); + const network = new StoredNetwork(); + network.token = "test"; + userDataService.onUpdateNetwork$.next(network); + expect(userDataService.currentNetwork.token).toBe("test"); + }); + + it("should not fail when logging in an empty user", () => { + authService.onLogin$.next(null); + expect(userDataService.currentProfile).toBeNull(); + }); + + it("should return true if the current network is mainnet", () => { + authService.onLogin$.next("profile1"); + expect(userDataService.isMainNet).toBe(true); + }); + + it("should return true if the current network is devnet", () => { + authService.onLogin$.next("profile2"); + expect(userDataService.isDevNet).toBe(true); + }); + + it("should set the wallet label", done => { + const profileId = "profile1"; + authService.onLogin$.next(profileId); + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const label = "test"; + + userDataService + .addWallet(wallet, null, null, profileId) + .pipe( + switchMap(() => { + return userDataService.setWalletLabel(wallet, label); + }), + map(() => + userDataService.getWalletByAddress( + wallet.address, + profileId, + ), + ), + ) + .subscribe(wallet => { + expect(wallet.label).toEqual(label); + done(); + }); + }); + + it("should fail to set the wallet label if the wallet is not specified", done => { + userDataService + .setWalletLabel(undefined, "test") + .subscribe(null, error => { + expect(error).toEqual( + jasmine.objectContaining({ + key: "VALIDATION.INVALID_WALLET", + }), + ); + done(); + }); + }); + + it("should fail to set the wallet label if it already exists", done => { + const profileId = "profile1"; + authService.onLogin$.next(profileId); + authService.loggedProfileId = profileId; + const wallet1 = new Wallet().deserialize(walletsFixtures.wallet1); + wallet1.label = "one"; + const wallet2 = new Wallet().deserialize(walletsFixtures.wallet2); + userDataService + .addWallet(wallet1, null, null, profileId) + .pipe( + switchMap(() => + userDataService.addWallet( + wallet2, + null, + null, + profileId, + ), + ), + switchMap(() => + userDataService.setWalletLabel(wallet2, "one"), + ), + ) + .subscribe(null, error => { + expect(error).toEqual( + jasmine.objectContaining({ + key: "VALIDATION.LABEL_EXISTS", + }), + ); + done(); + }); + }); + + it("should convert wallet into delegate", done => { + const profileId = "profile1"; + authService.onLogin$.next(profileId); + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const username = "delegate"; + userDataService + .addWallet(wallet, null, null, profileId) + .pipe( + switchMap(() => { + return userDataService.ensureWalletDelegateProperties( + wallet, + username, + ); + }), + map(() => + userDataService.getWalletByAddress( + wallet.address, + profileId, + ), + ), + ) + .subscribe(wallet => { + expect(wallet).toEqual( + jasmine.objectContaining({ + isDelegate: true, + username, + }), + ); + done(); + }); + }); + + it("should fail to convert wallet into delegate", done => { + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + + userDataService + .ensureWalletDelegateProperties(undefined, "delegate") + .pipe( + catchError(error => { + expect(error).toBe("WALLET_EMPTY"); + return userDataService.ensureWalletDelegateProperties( + wallet, + undefined, + ); + }), + ) + .subscribe(null, error => { + expect(error).toBe("USERNAME_EMPTY"); + done(); + }); + }); + }); + + describe("Clear storage", () => { + let storageProvider: SpyObject; + + beforeEach(() => { + storageProvider = spectator.get(StorageProvider); + spyOn(storageProvider, "getObject").and.returnValue(of(undefined)); + }); + + it("should reset profiles list and the current profile", fakeAsync(() => { + storageProvider.onClear$.next(); + tick(100); + expect(userDataService.profiles).toEqual(jasmine.empty()); + expect(userDataService.currentProfile).toBeNull(); + })); + + it("should assign defaults networks", fakeAsync(() => { + storageProvider.onClear$.next(); + tick(100); + expect(userDataService.networks).toEqual(jasmine.any(Object)); + expect(Object.keys(userDataService.networks).length).toBe(2); + })); + }); +}); diff --git a/src/app/services/user-data/user-data.ts b/src/app/services/user-data/user-data.ts index 3ed2f12bd..c635937e6 100644 --- a/src/app/services/user-data/user-data.ts +++ b/src/app/services/user-data/user-data.ts @@ -87,7 +87,9 @@ export class UserDataServiceImpl implements UserDataService { networkId = this.generateUniqueId(); } - this.networks[networkId] = network; + const { [networkId]: _, ...networks } = this.networks; + networks[networkId] = network; + this.networks = networks; return this.storageProvider .set(constants.STORAGE_NETWORKS, this.networks) @@ -106,7 +108,8 @@ export class UserDataServiceImpl implements UserDataService { } removeNetworkById(networkId: string) { - delete this.networks[networkId]; + const { [networkId]: _, ...networks } = this.networks; + this.networks = networks; return this.storageProvider.set( constants.STORAGE_NETWORKS, this.networks, @@ -130,11 +133,14 @@ export class UserDataServiceImpl implements UserDataService { } getProfileById(profileId: string) { - return new Profile().deserialize(this.profiles[profileId]); + if (this.profiles[profileId]) { + return new Profile().deserialize(this.profiles[profileId]); + } } removeProfileById(profileId: string) { - delete this.profiles[profileId]; + const { [profileId]: _, ...profiles } = this.profiles; + this.profiles = profiles; return this.saveProfiles(); } @@ -179,14 +185,17 @@ export class UserDataServiceImpl implements UserDataService { profileId: string = this.authProvider.loggedProfileId, ) { if (lodash.isUndefined(profileId)) { - return; + return throwError("EMPTY_PROFILE_ID"); } const profile = this.getProfileById(profileId); - const iv = this.forgeProvider.generateIv(); + if (!profile) { + return throwError("PROFILE_NOT_FOUND"); + } if (passphrase) { + const iv = this.forgeProvider.generateIv(); wallet.iv = iv; const cipherKey = this.forgeProvider.encrypt( passphrase, @@ -261,18 +270,18 @@ export class UserDataServiceImpl implements UserDataService { removeWalletByAddress( address: string, profileId: string = this.authProvider.loggedProfileId, - ): void { + ): Observable { delete this.profiles[profileId].wallets[address]; - this.saveProfiles(); + return this.saveProfiles(); } ensureWalletDelegateProperties( wallet: Wallet, delegateOrUserName: string | Delegate, - ): void { + ): Observable { if (!wallet) { - return; + return throwError("WALLET_EMPTY"); } const userName: string = @@ -280,13 +289,17 @@ export class UserDataServiceImpl implements UserDataService { ? (delegateOrUserName as string) : delegateOrUserName.username; - if (!userName || (wallet.isDelegate && wallet.username === userName)) { - return; + if (!userName) { + return throwError("USERNAME_EMPTY"); + } + + if (wallet.isDelegate && wallet.username === userName) { + return EMPTY; } wallet.isDelegate = true; wallet.username = userName; - this.updateWallet(wallet, this.currentProfile.profileId, true); + return this.updateWallet(wallet, this.currentProfile.profileId, true); } getWalletByAddress( @@ -316,7 +329,7 @@ export class UserDataServiceImpl implements UserDataService { notificate: boolean = false, ): Observable { if (lodash.isUndefined(profileId)) { - return EMPTY; + return throwError("EMPTY_PROFILE_ID"); } const profile = this.getProfileById(profileId); @@ -333,7 +346,7 @@ export class UserDataServiceImpl implements UserDataService { notificate: boolean = false, ) { if (lodash.isUndefined(profileId)) { - return; + return throwError("EMPTY_PROFILE_ID"); } const profile = this.getProfileById(profileId); @@ -404,10 +417,6 @@ export class UserDataServiceImpl implements UserDataService { this.currentWallet = undefined; } - public getCurrentProfile(): Profile { - return this.profiles[this.authProvider.loggedProfileId]; - } - loadProfiles() { return this.storageProvider.getObject(constants.STORAGE_PROFILES).pipe( map(profiles => { diff --git a/test/fixture/networks.fixture.ts b/test/fixture/networks.fixture.ts new file mode 100644 index 000000000..90f6270ca --- /dev/null +++ b/test/fixture/networks.fixture.ts @@ -0,0 +1,13 @@ +export const mainnet = { + type: 0, + name: "mainnet", + token: "ARK", + version: 21, +}; + +export const devnet = { + type: 1, + name: "devnet", + token: "DARK", + version: 30, +}; diff --git a/test/fixture/profiles.fixture.ts b/test/fixture/profiles.fixture.ts new file mode 100644 index 000000000..a182988a1 --- /dev/null +++ b/test/fixture/profiles.fixture.ts @@ -0,0 +1,9 @@ +export const profile1 = { + name: "Profile 1", + networkId: "mainnet", +}; + +export const profile2 = { + name: "Profile 1", + networkId: "devnet", +}; diff --git a/test/fixture/wallets.fixture.ts b/test/fixture/wallets.fixture.ts new file mode 100644 index 000000000..157e3350d --- /dev/null +++ b/test/fixture/wallets.fixture.ts @@ -0,0 +1,14 @@ +export const wallet1 = { + address: "AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + balance: "1924099747398565", + nonce: "1", +}; + +export const wallet2 = { + address: "AHJJ29sCdR5UNZjdz3BYeDpvvkZCGBjde9", + publicKey: + "02d29ba7ebe8823137f31ed8e71288274a1cefa23a98a94fa62d4124817d58b777", + nonce: "2", + balance: "874989914806052", + username: "test", +}; diff --git a/test/helpers.ts b/test/helpers.ts index 0880d5517..f7517cb2a 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -30,7 +30,6 @@ import { SocialSharingMock, SplashScreenMock, StatusBarMock, - UserDataProviderMock, } from "./mocks"; interface Compilation { diff --git a/test/mocks.ts b/test/mocks.ts index 99210e8b4..ada3c5fa9 100644 --- a/test/mocks.ts +++ b/test/mocks.ts @@ -184,19 +184,19 @@ export class UserDataProviderMock implements UserDataService { public getNetworkById(networkId: string): StoredNetwork { throw new Error("Method not implemented."); } - public removeNetworkById(networkId: string) { + public removeNetworkById(networkId: string): Observable { throw new Error("Method not implemented."); } - public addProfile(profile: Profile) { + public addProfile(profile: Profile): Observable { throw new Error("Method not implemented."); } - public getProfileByName(name: string) { + public getProfileByName(name: string): Profile { throw new Error("Method not implemented."); } - public getProfileById(profileId: string) { + public getProfileById(profileId: string): Profile { throw new Error("Method not implemented."); } - public removeProfileById(profileId: string) { + public removeProfileById(profileId: string): Observable { throw new Error("Method not implemented."); } public saveProfiles(profiles?: { [key: string]: any }) { @@ -232,13 +232,16 @@ export class UserDataProviderMock implements UserDataService { public updateWalletEncryption(oldPassword: string, newPassword: string) { throw new Error("Method not implemented."); } - public removeWalletByAddress(address: string, profileId?: string): void { + public removeWalletByAddress( + address: string, + profileId?: string, + ): Observable { throw new Error("Method not implemented."); } public ensureWalletDelegateProperties( wallet: Wallet, delegateOrUserName: string | Delegate, - ): void { + ): Observable { throw new Error("Method not implemented."); } public getWalletByAddress(address: string, profileId?: string): Wallet { @@ -273,10 +276,7 @@ export class UserDataProviderMock implements UserDataService { public clearCurrentWallet(): void { throw new Error("Method not implemented."); } - public getCurrentProfile(): Profile { - return this.currentProfile; - } - public loadProfiles() { + public loadProfiles(): Observable> { throw new Error("Method not implemented."); } public loadNetworks(): Observable> { From 9aded16b24e695a9a7d10bf93d09c5e29d6ea230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 19 Mar 2020 17:02:38 -0300 Subject: [PATCH 35/46] feat: add component stories (#533) * feat: add component stories * fix: remove stories files from coverage --- .storybook/main.js | 21 + .storybook/preview.ts | 25 + .storybook/tsconfig.json | 8 + karma.conf.js | 1 + package-lock.json | 22430 ++++++++++------ package.json | 4 +- src/app/app.module.ts | 2 - .../input-currency.component.ts | 4 +- .../input-currency/input-currency.stories.ts | 23 + .../components/input-fee/input-fee.stories.ts | 33 + .../wallet-picker/wallet-picker.stories.ts | 34 + 11 files changed, 14233 insertions(+), 8352 deletions(-) create mode 100644 .storybook/main.js create mode 100644 .storybook/preview.ts create mode 100644 .storybook/tsconfig.json create mode 100644 src/app/components/input-currency/input-currency.stories.ts create mode 100644 src/app/components/input-fee/input-fee.stories.ts create mode 100644 src/app/components/wallet-picker/wallet-picker.stories.ts diff --git a/.storybook/main.js b/.storybook/main.js new file mode 100644 index 000000000..9cf907d34 --- /dev/null +++ b/.storybook/main.js @@ -0,0 +1,21 @@ +module.exports = { + stories: ["../src/**/*.stories.[tj]s"], + webpackFinal: config => { + config.module.rules.push({ + test: /\.(scss|pcss)$/, + loader: "postcss-loader", + options: { + ident: "postcss", + syntax: "postcss-scss", + plugins: () => [ + require("postcss-import"), + require("tailwindcss"), + require("postcss-nested"), + require("autoprefixer"), + ], + }, + }); + + return config; + }, +}; diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 000000000..2134f696a --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,25 @@ +import { addDecorator } from "@storybook/angular"; +import { IonicModule } from "@ionic/angular"; +import { moduleMetadata } from "@storybook/angular"; +import { TranslateModule, TranslateLoader } from "@ngx-translate/core"; +import { of } from "rxjs"; +// @ts-ignore +import enLocale from "../src/assets/i18n/en.json"; + +class CustomLoader implements TranslateLoader { + getTranslation(lang: string) { + return of(enLocale); + } +} + +addDecorator( + moduleMetadata({ + imports: [ + IonicModule.forRoot(), + TranslateModule.forRoot({ + loader: { provide: TranslateLoader, useClass: CustomLoader }, + defaultLanguage: "en", + }), + ], + }), +); diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json new file mode 100644 index 000000000..b1150b99f --- /dev/null +++ b/.storybook/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "resolveJsonModule": true + }, + "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], + "include": ["../src/**/*"] +} diff --git a/karma.conf.js b/karma.conf.js index edd796d94..23f7b515b 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -36,6 +36,7 @@ module.exports = function(config) { "!src/test.ts", "!src/polyfills.ts", "!src/app/app.constants.ts", + "!src/**/*.stories.ts", "!src/**/*.spec.ts", "!src/**/*.module.ts", "!src/**/environment*.ts", diff --git a/package-lock.json b/package-lock.json index 0f86a2244..e4eea43df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1383,6 +1383,99 @@ } } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", + "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-create-regexp-features-plugin": { "version": "7.8.8", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", @@ -2458,6 +2551,16 @@ "@babel/plugin-syntax-async-generators": "^7.8.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-proposal-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", @@ -2965,6 +3068,16 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz", + "integrity": "sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-transform-regenerator": { "version": "7.8.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", @@ -3180,6 +3293,129 @@ "to-fast-properties": "^2.0.0" } }, + "@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "requires": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "@emotion/core": { + "version": "10.0.28", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz", + "integrity": "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "requires": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "requires": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "@emotion/styled": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", + "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.0.27", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/styled-base": { + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", + "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, "@hapi/bourne": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", @@ -3842,6 +4078,16 @@ "@types/yargs": "^13.0.0" } }, + "@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" + } + }, "@ngneat/spectator": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@ngneat/spectator/-/spectator-5.3.1.tgz", @@ -3969,6 +4215,18 @@ "esquery": "^1.0.1" } }, + "@reach/router": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz", + "integrity": "sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw==", + "dev": true, + "requires": { + "create-react-context": "0.3.0", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4" + } + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -4126,2456 +4384,3171 @@ "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==", "dev": true }, - "@testing-library/angular": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/angular/-/angular-8.2.0.tgz", - "integrity": "sha512-vOd4VdIW5x1dUfQyM93+916s9MWWXVg01BHsnMIizIvaQN0y+C79HXJJzTShamXNh3hTB6TnIFmLOx12Dh/PsA==", + "@storybook/addons": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.17.tgz", + "integrity": "sha512-zg6O1bmffRsHXJOWAnSD2O3tPnVMoD8Yfu+a5zBVXDiUP1E/TGzgjjjYBUUCU3yQg1Ted5rIn4o6ql/rZNNlgA==", "dev": true, "requires": { - "@phenomnomnominal/tsquery": "^3.0.0", - "@testing-library/dom": "^5.1.0", - "tslib": "^1.9.0", - "tslint": "^5.16.0" + "@storybook/api": "5.3.17", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", + "core-js": "^3.0.1", + "global": "^4.3.2", + "util-deprecate": "^1.0.2" } }, - "@testing-library/dom": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz", - "integrity": "sha512-Y1T2bjtvQMewffn1CJ28kpgnuvPYKsBcZMagEH0ppfEMZPDc8AkkEnTk4smrGZKw0cblNB3lhM2FMnpfLExlHg==", + "@storybook/angular": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-5.3.17.tgz", + "integrity": "sha512-QnX6WnZIhspAXxXfvDipE2lluyQoto1g2WfC/bBw5weT/5rKZWu4fJ+TyJ3gHgyWSKgOHTAFQMUkn18wSbBRXQ==", "dev": true, "requires": { - "@babel/runtime": "^7.5.5", - "@sheerun/mutationobserver-shim": "^0.3.2", - "aria-query": "3.0.0", - "pretty-format": "^24.8.0", - "wait-for-expect": "^1.2.0" + "@storybook/addons": "5.3.17", + "@storybook/core": "5.3.17", + "@storybook/node-logger": "5.3.17", + "@types/webpack-env": "^1.15.0", + "core-js": "^3.0.1", + "fork-ts-checker-webpack-plugin": "^3.0.1", + "global": "^4.3.2", + "regenerator-runtime": "^0.13.3", + "sass-loader": "^8.0.0", + "strip-json-comments": "^3.0.1", + "ts-loader": "^6.0.1", + "tsconfig-paths-webpack-plugin": "^3.2.0" } }, - "@tootallnate/once": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", - "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", - "dev": true - }, - "@types/bcryptjs": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", - "integrity": "sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==", - "dev": true - }, - "@types/bigi": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/bigi/-/bigi-1.4.2.tgz", - "integrity": "sha512-St8Vm0x1ApYlU9yNaFx3jBis5JVU6oR/5Xtgvn8+N8Ts8f3ze6kOvAAg0aNkbGMGhhG6PrP0nMOgDI9NMFETkA==" - }, - "@types/bip39": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/bip39/-/bip39-3.0.0.tgz", - "integrity": "sha512-6CqBtChR2JHspepOd8Y2x2BYyq8GBN8hfrbBrbaj7s7j07kMaghvUPnsVTIYbr2c1yV0Pu50wBbVD56KSdalKQ==", + "@storybook/api": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.17.tgz", + "integrity": "sha512-G40jtXFY10hQo6GSw5JeFYt41loD4+7s0uU18Rm6lfa/twOgp6vqqyDCWDvpRRxRBB5uDIKKHLt13X9gWe8tQQ==", "dev": true, "requires": { - "bip39": "*" + "@reach/router": "^1.2.1", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/csf": "0.0.1", + "@storybook/router": "5.3.17", + "@storybook/theming": "5.3.17", + "@types/reach__router": "^1.2.3", + "core-js": "^3.0.1", + "fast-deep-equal": "^2.0.1", + "global": "^4.3.2", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3", + "prop-types": "^15.6.2", + "react": "^16.8.3", + "semver": "^6.0.0", + "shallow-equal": "^1.1.0", + "store2": "^2.7.1", + "telejson": "^3.2.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "@types/bytebuffer": { - "version": "5.0.40", - "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz", - "integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==", + "@storybook/channel-postmessage": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.17.tgz", + "integrity": "sha512-1aSQNeO2+roPRgMFjW3AWTO3uS93lbCMUTYCBdi20md4bQ9SutJy33rynCQcWuMj1prCQ2Ekz4BGhdcIQVKlzg==", + "dev": true, "requires": { - "@types/long": "*", - "@types/node": "*" + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "core-js": "^3.0.1", + "global": "^4.3.2", + "telejson": "^3.2.0" } }, - "@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + "@storybook/channels": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.17.tgz", + "integrity": "sha512-5hlBRbyk+YxC4KgecYG8wWwB2v1BzRJXhSlemFDOQk9wx37gVpne+rBydEtNFO4InmaZf6tKbBcpH0wBFLdWYA==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } }, - "@types/chart.js": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.8.7.tgz", - "integrity": "sha512-g17rcS5R5PaxRWPJlGlL1ob1mQRSpkybtmNZTS/4dmhkNNXl0Xo0CQsjFfut0Fu5MNz4iKWKr02XI7ieeBSDtQ==" + "@storybook/client-api": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.17.tgz", + "integrity": "sha512-oe55FPTGVL2k+j45eCN3oE7ePkE4VpgUQ/dhJbjU0R2L+HyRyBhd0wnMYj1f5E8uVNbtjFYAtbjjgcf1R1imeg==", + "dev": true, + "requires": { + "@storybook/addons": "5.3.17", + "@storybook/channel-postmessage": "5.3.17", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/csf": "0.0.1", + "@types/webpack-env": "^1.15.0", + "core-js": "^3.0.1", + "eventemitter3": "^4.0.0", + "global": "^4.3.2", + "is-plain-object": "^3.0.0", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3", + "qs": "^6.6.0", + "stable": "^0.1.8", + "ts-dedent": "^1.1.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, + "qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "dev": true + } + } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true + "@storybook/client-logger": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.17.tgz", + "integrity": "sha512-GYYvVGIOs+fq11LXXy7x2sr3hhC9LMI1jtIckjKV1dsY9MJ5g22M+Wl5Iw4nf6VMWsqcN9LSlYE+u/H+Q2uCHw==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } }, - "@types/cordova": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", - "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/estree": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz", - "integrity": "sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@storybook/components": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.17.tgz", + "integrity": "sha512-M5oqbzcqFX4VDNI8siT3phT7rmFwChQ/xPwX9ygByBsZCoNuLMzafavfTOhZvxCPiliFbBxmxtK/ibCsSzuKZg==", "dev": true, "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "@storybook/client-logger": "5.3.17", + "@storybook/theming": "5.3.17", + "@types/react-syntax-highlighter": "11.0.4", + "@types/react-textarea-autosize": "^4.3.3", + "core-js": "^3.0.1", + "global": "^4.3.2", + "lodash": "^4.17.15", + "markdown-to-jsx": "^6.9.1", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "popper.js": "^1.14.7", + "prop-types": "^15.7.2", + "react": "^16.8.3", + "react-dom": "^16.8.3", + "react-focus-lock": "^2.1.0", + "react-helmet-async": "^1.0.2", + "react-popper-tooltip": "^2.8.3", + "react-syntax-highlighter": "^11.0.2", + "react-textarea-autosize": "^7.1.0", + "simplebar-react": "^1.0.0-alpha.6", + "ts-dedent": "^1.1.0" + } + }, + "@storybook/core": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.17.tgz", + "integrity": "sha512-H6G8ygjb4RSVSKPdWz6su3Nvzxm8CfrHuCyUo4DLC46mirXfYRrJV1HiwXriViqoZV4gFbpaNKTDzTl/QKFDAg==", + "dev": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.7.0", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-react-constant-elements": "^7.2.0", + "@babel/preset-env": "^7.4.5", + "@storybook/addons": "5.3.17", + "@storybook/channel-postmessage": "5.3.17", + "@storybook/client-api": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/csf": "0.0.1", + "@storybook/node-logger": "5.3.17", + "@storybook/router": "5.3.17", + "@storybook/theming": "5.3.17", + "@storybook/ui": "5.3.17", + "airbnb-js-shims": "^2.2.1", + "ansi-to-html": "^0.6.11", + "autoprefixer": "^9.7.2", + "babel-plugin-add-react-displayname": "^0.0.5", + "babel-plugin-emotion": "^10.0.20", + "babel-plugin-macros": "^2.7.0", + "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5", + "boxen": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^3.0.0", + "cli-table3": "0.5.1", + "commander": "^4.0.1", + "core-js": "^3.0.1", + "corejs-upgrade-webpack-plugin": "^2.2.0", + "css-loader": "^3.0.0", + "detect-port": "^1.3.0", + "dotenv-webpack": "^1.7.0", + "ejs": "^2.7.4", + "express": "^4.17.0", + "file-loader": "^4.2.0", + "file-system-cache": "^1.0.5", + "find-cache-dir": "^3.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.0.1", + "glob-base": "^0.3.0", + "global": "^4.3.2", + "html-webpack-plugin": "^4.0.0-beta.2", + "inquirer": "^7.0.0", + "interpret": "^2.0.0", + "ip": "^1.1.5", + "json5": "^2.1.1", + "lazy-universal-dotenv": "^3.0.1", + "micromatch": "^4.0.2", + "node-fetch": "^2.6.0", + "open": "^7.0.0", + "pnp-webpack-plugin": "1.5.0", + "postcss-flexbugs-fixes": "^4.1.0", + "postcss-loader": "^3.0.0", + "pretty-hrtime": "^1.0.3", + "qs": "^6.6.0", + "raw-loader": "^3.1.0", + "react-dev-utils": "^9.0.0", + "regenerator-runtime": "^0.13.3", + "resolve": "^1.11.0", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "serve-favicon": "^2.5.0", + "shelljs": "^0.8.3", + "style-loader": "^1.0.0", + "terser-webpack-plugin": "^2.1.2", + "ts-dedent": "^1.1.0", + "unfetch": "^4.1.0", + "url-loader": "^2.0.1", + "util-deprecate": "^1.0.2", + "webpack": "^4.33.0", + "webpack-dev-middleware": "^3.7.0", + "webpack-hot-middleware": "^2.25.0", + "webpack-virtual-modules": "^0.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.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" + } + }, + "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==", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "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" + } + }, + "interpret": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.0.0.tgz", + "integrity": "sha512-e0/LknJ8wpMMhTiWcjivB+ESwIuvHnBSlBbmP/pSb8CQJldoj1p2qv7xGZ/+BtbTziYRFSz8OsvdbiX45LtYQA==", + "dev": true + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "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" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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" + } + }, + "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 + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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" + }, + "dependencies": { + "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-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" + } + } + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "dependencies": { + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + } + } + } } }, - "@types/is-url": { - "version": "1.2.28", - "resolved": "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.28.tgz", - "integrity": "sha1-kU2r1QVG2bAUKAbkLHK8fCt+B4c=", - "dev": true - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "@storybook/core-events": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.17.tgz", + "integrity": "sha512-DOeX9fpeGW4o9Gocxa4VW9wAlAyfIVNDTzq0wVvvMBthTTo9u58NmndglEMDgDa2Cq6iAIPh7vz2bRJCNexzLw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*" + "core-js": "^3.0.1" } }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "@storybook/csf": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "lodash": "^4.17.15" } }, - "@types/jasmine": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.9.tgz", - "integrity": "sha512-KNL2Fq6GRmty2j6+ZmueT/Z/dkctLNH+5DFoGHNDtcgt7yME9NZd8x2p81Yuea1Xux/qAryDd3zVLUoKpDz1TA==", - "dev": true - }, - "@types/jasminewd2": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", - "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "@storybook/node-logger": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.17.tgz", + "integrity": "sha512-onfcxl37BYZI1HGuPI9MelkyUWjn7NpfN8RUYdqG9P6WKiIY5xbpG0V6qod5jvIKIypK0NmfJTtneOu46L/oDg==", "dev": true, "requires": { - "@types/jasmine": "*" - } - }, - "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", - "dev": true - }, - "@types/lodash": { - "version": "4.14.149", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", - "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", - "dev": true - }, - "@types/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "13.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", - "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" + "@types/npmlog": "^4.1.2", + "chalk": "^3.0.0", + "core-js": "^3.0.1", + "npmlog": "^4.1.2", + "pretty-hrtime": "^1.0.3", + "regenerator-runtime": "^0.13.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "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" + } + }, + "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==", + "dev": true + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, - "@types/node-forge": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-0.9.2.tgz", - "integrity": "sha512-YL4VDQTk5jqeyJiMN+Zxwjk8Z1SQMAohUFY6+a8CyJODJpy2/Zbi5SECqqRMwbnUuDHbv2Ersg2Y+U4mHhat6A==", + "@storybook/router": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.17.tgz", + "integrity": "sha512-ANsiehGRTVSremgTW0Vt47dQ4JA86a4/w/4G6QqHU8Cm4jO3cw/wAcCxlzfcgCXOUiq+SuyPTU43+0O5uBx33g==", "dev": true, "requires": { - "@types/node": "*" + "@reach/router": "^1.2.1", + "@storybook/csf": "0.0.1", + "@types/reach__router": "^1.2.3", + "core-js": "^3.0.1", + "global": "^4.3.2", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3", + "qs": "^6.6.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "dev": true + } } }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", - "dev": true - }, - "@types/request": { - "version": "2.48.3", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.3.tgz", - "integrity": "sha512-3Wo2jNYwqgXcIz/rrq18AdOZUQB8cQ34CXZo+LUwPJNpvRAL86+Kc2wwI8mqpz9Cr1V+enIox5v+WZhy/p3h8w==", - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" + "@storybook/theming": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.17.tgz", + "integrity": "sha512-4JeOZnDDHtb4LOt5sXe/s1Jhbb2UPsr8zL9NWmKJmTsgnyTvBipNHOmFYDUsIacB5K4GXSqm+cZ7Z4AkUgWCDw==", + "dev": true, + "requires": { + "@emotion/core": "^10.0.20", + "@emotion/styled": "^10.0.17", + "@storybook/client-logger": "5.3.17", + "core-js": "^3.0.1", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.19", + "global": "^4.3.2", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "resolve-from": "^5.0.0", + "ts-dedent": "^1.1.0" }, "dependencies": { - "@types/node": { - "version": "12.7.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz", - "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==" + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, - "@types/rx": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@types/rx/-/rx-4.1.1.tgz", - "integrity": "sha1-WY/JSla67ZdfGUV04PVy/Y5iekg=", - "requires": { - "@types/rx-core": "*", - "@types/rx-core-binding": "*", - "@types/rx-lite": "*", - "@types/rx-lite-aggregates": "*", - "@types/rx-lite-async": "*", - "@types/rx-lite-backpressure": "*", - "@types/rx-lite-coincidence": "*", - "@types/rx-lite-experimental": "*", - "@types/rx-lite-joinpatterns": "*", - "@types/rx-lite-testing": "*", - "@types/rx-lite-time": "*", - "@types/rx-lite-virtualtime": "*" + "@storybook/ui": { + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.17.tgz", + "integrity": "sha512-5S9r70QbtNKu8loa5pfO5lLX9coF/ZqesEKcanfvuSwqCSg/Z51UwFCuO6eNhVlpXzyZXi5d8qKbZlbf+uvDAA==", + "dev": true, + "requires": { + "@emotion/core": "^10.0.20", + "@storybook/addons": "5.3.17", + "@storybook/api": "5.3.17", + "@storybook/channels": "5.3.17", + "@storybook/client-logger": "5.3.17", + "@storybook/components": "5.3.17", + "@storybook/core-events": "5.3.17", + "@storybook/router": "5.3.17", + "@storybook/theming": "5.3.17", + "copy-to-clipboard": "^3.0.8", + "core-js": "^3.0.1", + "core-js-pure": "^3.0.1", + "emotion-theming": "^10.0.19", + "fast-deep-equal": "^2.0.1", + "fuse.js": "^3.4.6", + "global": "^4.3.2", + "lodash": "^4.17.15", + "markdown-to-jsx": "^6.9.3", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "qs": "^6.6.0", + "react": "^16.8.3", + "react-dom": "^16.8.3", + "react-draggable": "^4.0.3", + "react-helmet-async": "^1.0.2", + "react-hotkeys": "2.0.0", + "react-sizeme": "^2.6.7", + "regenerator-runtime": "^0.13.2", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "store2": "^2.7.1", + "telejson": "^3.2.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "@types/rx-core": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/rx-core/-/rx-core-4.0.3.tgz", - "integrity": "sha1-CzNUsSOM7b4rdPYybxOdvHpZHWA=" - }, - "@types/rx-core-binding": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/rx-core-binding/-/rx-core-binding-4.0.4.tgz", - "integrity": "sha512-5pkfxnC4w810LqBPUwP5bg7SFR/USwhMSaAeZQQbEHeBp57pjKXRlXmqpMrLJB4y1oglR/c2502853uN0I+DAQ==", + "@testing-library/angular": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/angular/-/angular-8.2.0.tgz", + "integrity": "sha512-vOd4VdIW5x1dUfQyM93+916s9MWWXVg01BHsnMIizIvaQN0y+C79HXJJzTShamXNh3hTB6TnIFmLOx12Dh/PsA==", + "dev": true, "requires": { - "@types/rx-core": "*" + "@phenomnomnominal/tsquery": "^3.0.0", + "@testing-library/dom": "^5.1.0", + "tslib": "^1.9.0", + "tslint": "^5.16.0" } }, - "@types/rx-lite": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/rx-lite/-/rx-lite-4.0.6.tgz", - "integrity": "sha512-oYiDrFIcor9zDm0VDUca1UbROiMYBxMLMaM6qzz4ADAfOmA9r1dYEcAFH+2fsPI5BCCjPvV9pWC3X3flbrvs7w==", + "@testing-library/dom": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz", + "integrity": "sha512-Y1T2bjtvQMewffn1CJ28kpgnuvPYKsBcZMagEH0ppfEMZPDc8AkkEnTk4smrGZKw0cblNB3lhM2FMnpfLExlHg==", + "dev": true, "requires": { - "@types/rx-core": "*", - "@types/rx-core-binding": "*" + "@babel/runtime": "^7.5.5", + "@sheerun/mutationobserver-shim": "^0.3.2", + "aria-query": "3.0.0", + "pretty-format": "^24.8.0", + "wait-for-expect": "^1.2.0" } }, - "@types/rx-lite-aggregates": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/rx-lite-aggregates/-/rx-lite-aggregates-4.0.3.tgz", - "integrity": "sha512-MAGDAHy8cRatm94FDduhJF+iNS5//jrZ/PIfm+QYw9OCeDgbymFHChM8YVIvN2zArwsRftKgE33QfRWvQk4DPg==", - "requires": { - "@types/rx-lite": "*" - } + "@tootallnate/once": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", + "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", + "dev": true }, - "@types/rx-lite-async": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/rx-lite-async/-/rx-lite-async-4.0.2.tgz", - "integrity": "sha512-vTEv5o8l6702ZwfAM5aOeVDfUwBSDOs+ARoGmWAKQ6LOInQ8J4/zjM7ov12fuTpktUKdMQjkeCp07Vd73mPkxw==", - "requires": { - "@types/rx-lite": "*" - } + "@types/bcryptjs": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", + "integrity": "sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==", + "dev": true }, - "@types/rx-lite-backpressure": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/rx-lite-backpressure/-/rx-lite-backpressure-4.0.3.tgz", - "integrity": "sha512-Y6aIeQCtNban5XSAF4B8dffhIKu6aAy/TXFlScHzSxh6ivfQBQw6UjxyEJxIOt3IT49YkS+siuayM2H/Q0cmgA==", - "requires": { - "@types/rx-lite": "*" - } + "@types/bigi": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/bigi/-/bigi-1.4.2.tgz", + "integrity": "sha512-St8Vm0x1ApYlU9yNaFx3jBis5JVU6oR/5Xtgvn8+N8Ts8f3ze6kOvAAg0aNkbGMGhhG6PrP0nMOgDI9NMFETkA==" }, - "@types/rx-lite-coincidence": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/rx-lite-coincidence/-/rx-lite-coincidence-4.0.3.tgz", - "integrity": "sha512-1VNJqzE9gALUyMGypDXZZXzR0Tt7LC9DdAZQ3Ou/Q0MubNU35agVUNXKGHKpNTba+fr8GdIdkC26bRDqtCQBeQ==", + "@types/bip39": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/bip39/-/bip39-3.0.0.tgz", + "integrity": "sha512-6CqBtChR2JHspepOd8Y2x2BYyq8GBN8hfrbBrbaj7s7j07kMaghvUPnsVTIYbr2c1yV0Pu50wBbVD56KSdalKQ==", + "dev": true, "requires": { - "@types/rx-lite": "*" + "bip39": "*" } }, - "@types/rx-lite-experimental": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/rx-lite-experimental/-/rx-lite-experimental-4.0.1.tgz", - "integrity": "sha1-xTL1y98/LBXaFt7Ykw0bKYQCPL0=", + "@types/bytebuffer": { + "version": "5.0.40", + "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz", + "integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==", "requires": { - "@types/rx-lite": "*" + "@types/long": "*", + "@types/node": "*" } }, - "@types/rx-lite-joinpatterns": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/rx-lite-joinpatterns/-/rx-lite-joinpatterns-4.0.1.tgz", - "integrity": "sha1-9w/jcFGKhDLykVjMkv+1a05K/D4=", - "requires": { - "@types/rx-lite": "*" - } + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" }, - "@types/rx-lite-testing": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/rx-lite-testing/-/rx-lite-testing-4.0.1.tgz", - "integrity": "sha1-IbGdEfTf1v/vWp0WSOnIh5v+Iek=", - "requires": { - "@types/rx-lite-virtualtime": "*" - } + "@types/chart.js": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.8.7.tgz", + "integrity": "sha512-g17rcS5R5PaxRWPJlGlL1ob1mQRSpkybtmNZTS/4dmhkNNXl0Xo0CQsjFfut0Fu5MNz4iKWKr02XI7ieeBSDtQ==" }, - "@types/rx-lite-time": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/rx-lite-time/-/rx-lite-time-4.0.3.tgz", - "integrity": "sha512-ukO5sPKDRwCGWRZRqPlaAU0SKVxmWwSjiOrLhoQDoWxZWg6vyB9XLEZViKOzIO6LnTIQBlk4UylYV0rnhJLxQw==", - "requires": { - "@types/rx-lite": "*" - } + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true }, - "@types/rx-lite-virtualtime": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/rx-lite-virtualtime/-/rx-lite-virtualtime-4.0.3.tgz", - "integrity": "sha512-3uC6sGmjpOKatZSVHI2xB1+dedgml669ZRvqxy+WqmGJDVusOdyxcKfyzjW0P3/GrCiN4nmRkLVMhPwHCc5QLg==", - "requires": { - "@types/rx-lite": "*" - } + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" }, - "@types/selenium-webdriver": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", - "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, - "@types/semver": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.1.0.tgz", - "integrity": "sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==", + "@types/estree": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz", + "integrity": "sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { + "@types/events": "*", + "@types/minimatch": "*", "@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==", + "@types/history": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.5.tgz", + "integrity": "sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw==", "dev": true }, - "@types/testing-library__dom": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", - "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", + "@types/is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.0.tgz", + "integrity": "sha512-iTs9HReBu7evG77Q4EC8hZnqRt57irBDkK9nvmHroiOIVwYMQc4IvYvdRgwKfYepunIY7Oh/dBuuld+Gj9uo6w==", + "dev": true + }, + "@types/is-url": { + "version": "1.2.28", + "resolved": "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.28.tgz", + "integrity": "sha1-kU2r1QVG2bAUKAbkLHK8fCt+B4c=", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { - "pretty-format": "^24.3.0" + "@types/istanbul-lib-coverage": "*" } }, - "@types/tough-cookie": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", - "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==" + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } }, - "@types/webpack-sources": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz", - "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==", + "@types/jasmine": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.9.tgz", + "integrity": "sha512-KNL2Fq6GRmty2j6+ZmueT/Z/dkctLNH+5DFoGHNDtcgt7yME9NZd8x2p81Yuea1Xux/qAryDd3zVLUoKpDz1TA==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", "dev": true, "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.6.1" + "@types/jasmine": "*" } }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/lodash": { + "version": "4.14.149", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", + "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", + "dev": true + }, + "@types/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" + }, + "@types/node-forge": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-0.9.2.tgz", + "integrity": "sha512-YL4VDQTk5jqeyJiMN+Zxwjk8Z1SQMAohUFY6+a8CyJODJpy2/Zbi5SECqqRMwbnUuDHbv2Ersg2Y+U4mHhat6A==", "dev": true, "requires": { - "@types/yargs-parser": "*" + "@types/node": "*" } }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "@types/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA==", "dev": true }, - "@typescript-eslint/eslint-plugin": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz", - "integrity": "sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw==", + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/reach__router": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.0.tgz", + "integrity": "sha512-0aL79bFPJzJOJOOMZm2301ErQVaveBdpW88uuavXymUlcYIAOCmI1ujJ2XLH6Mzn76O94eQCHIl1FDzNNKJCYA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.23.0", - "eslint-utils": "^1.4.3", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - }, - "dependencies": { - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } + "@types/history": "*", + "@types/react": "*" } }, - "@typescript-eslint/experimental-utils": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz", - "integrity": "sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ==", + "@types/react": { + "version": "16.9.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.23.tgz", + "integrity": "sha512-SsGVT4E7L2wLN3tPYLiF20hmZTPGuzaayVunfgXzUn1x4uHVsKH6QDJQ/TdpHqwsTLd4CwrmQ2vOgxN7gE24gw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.23.0", - "eslint-scope": "^5.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } + "@types/prop-types": "*", + "csstype": "^2.2.0" } }, - "@typescript-eslint/parser": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.23.0.tgz", - "integrity": "sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg==", + "@types/react-syntax-highlighter": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz", + "integrity": "sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.23.0", - "@typescript-eslint/typescript-estree": "2.23.0", - "eslint-visitor-keys": "^1.1.0" + "@types/react": "*" } }, - "@typescript-eslint/typescript-estree": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz", - "integrity": "sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw==", + "@types/react-textarea-autosize": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz", + "integrity": "sha512-PiDL83kPMTolyZAWW3lyzO6ktooTb9tFTntVy7CA83/qFLWKLJ5bLeRboy6J6j3b1e8h2Eec6gBTEOOJRjV14A==", "dev": true, "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" + "@types/react": "*" + } + }, + "@types/request": { + "version": "2.48.3", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.3.tgz", + "integrity": "sha512-3Wo2jNYwqgXcIz/rrq18AdOZUQB8cQ34CXZo+LUwPJNpvRAL86+Kc2wwI8mqpz9Cr1V+enIox5v+WZhy/p3h8w==", + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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" - } - }, - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } + "@types/node": { + "version": "12.7.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz", + "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==" } } }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "dev": true, + "@types/rx": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@types/rx/-/rx-4.1.1.tgz", + "integrity": "sha1-WY/JSla67ZdfGUV04PVy/Y5iekg=", "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@types/rx-core": "*", + "@types/rx-core-binding": "*", + "@types/rx-lite": "*", + "@types/rx-lite-aggregates": "*", + "@types/rx-lite-async": "*", + "@types/rx-lite-backpressure": "*", + "@types/rx-lite-coincidence": "*", + "@types/rx-lite-experimental": "*", + "@types/rx-lite-joinpatterns": "*", + "@types/rx-lite-testing": "*", + "@types/rx-lite-time": "*", + "@types/rx-lite-virtualtime": "*" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true + "@types/rx-core": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/rx-core/-/rx-core-4.0.3.tgz", + "integrity": "sha1-CzNUsSOM7b4rdPYybxOdvHpZHWA=" }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, + "@types/rx-core-binding": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/rx-core-binding/-/rx-core-binding-4.0.4.tgz", + "integrity": "sha512-5pkfxnC4w810LqBPUwP5bg7SFR/USwhMSaAeZQQbEHeBp57pjKXRlXmqpMrLJB4y1oglR/c2502853uN0I+DAQ==", "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@types/rx-core": "*" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "dev": true, + "@types/rx-lite": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/rx-lite/-/rx-lite-4.0.6.tgz", + "integrity": "sha512-oYiDrFIcor9zDm0VDUca1UbROiMYBxMLMaM6qzz4ADAfOmA9r1dYEcAFH+2fsPI5BCCjPvV9pWC3X3flbrvs7w==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@types/rx-core": "*", + "@types/rx-core-binding": "*" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "dev": true, + "@types/rx-lite-aggregates": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/rx-lite-aggregates/-/rx-lite-aggregates-4.0.3.tgz", + "integrity": "sha512-MAGDAHy8cRatm94FDduhJF+iNS5//jrZ/PIfm+QYw9OCeDgbymFHChM8YVIvN2zArwsRftKgE33QfRWvQk4DPg==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@types/rx-lite": "*" } }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "dev": true, + "@types/rx-lite-async": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/rx-lite-async/-/rx-lite-async-4.0.2.tgz", + "integrity": "sha512-vTEv5o8l6702ZwfAM5aOeVDfUwBSDOs+ARoGmWAKQ6LOInQ8J4/zjM7ov12fuTpktUKdMQjkeCp07Vd73mPkxw==", "requires": { - "@xtuc/ieee754": "^1.2.0" + "@types/rx-lite": "*" } }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "dev": true, + "@types/rx-lite-backpressure": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/rx-lite-backpressure/-/rx-lite-backpressure-4.0.3.tgz", + "integrity": "sha512-Y6aIeQCtNban5XSAF4B8dffhIKu6aAy/TXFlScHzSxh6ivfQBQw6UjxyEJxIOt3IT49YkS+siuayM2H/Q0cmgA==", "requires": { - "@xtuc/long": "4.2.2" + "@types/rx-lite": "*" } }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "dev": true, + "@types/rx-lite-coincidence": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/rx-lite-coincidence/-/rx-lite-coincidence-4.0.3.tgz", + "integrity": "sha512-1VNJqzE9gALUyMGypDXZZXzR0Tt7LC9DdAZQ3Ou/Q0MubNU35agVUNXKGHKpNTba+fr8GdIdkC26bRDqtCQBeQ==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@types/rx-lite": "*" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, + "@types/rx-lite-experimental": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rx-lite-experimental/-/rx-lite-experimental-4.0.1.tgz", + "integrity": "sha1-xTL1y98/LBXaFt7Ykw0bKYQCPL0=", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@types/rx-lite": "*" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, + "@types/rx-lite-joinpatterns": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rx-lite-joinpatterns/-/rx-lite-joinpatterns-4.0.1.tgz", + "integrity": "sha1-9w/jcFGKhDLykVjMkv+1a05K/D4=", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@types/rx-lite": "*" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, + "@types/rx-lite-testing": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rx-lite-testing/-/rx-lite-testing-4.0.1.tgz", + "integrity": "sha1-IbGdEfTf1v/vWp0WSOnIh5v+Iek=", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@types/rx-lite-virtualtime": "*" } }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, + "@types/rx-lite-time": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/rx-lite-time/-/rx-lite-time-4.0.3.tgz", + "integrity": "sha512-ukO5sPKDRwCGWRZRqPlaAU0SKVxmWwSjiOrLhoQDoWxZWg6vyB9XLEZViKOzIO6LnTIQBlk4UylYV0rnhJLxQw==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" + "@types/rx-lite": "*" } }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "dev": true, + "@types/rx-lite-virtualtime": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/rx-lite-virtualtime/-/rx-lite-virtualtime-4.0.3.tgz", + "integrity": "sha512-3uC6sGmjpOKatZSVHI2xB1+dedgml669ZRvqxy+WqmGJDVusOdyxcKfyzjW0P3/GrCiN4nmRkLVMhPwHCc5QLg==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" + "@types/rx-lite": "*" } }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "@types/selenium-webdriver": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", + "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", "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 + "@types/semver": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.1.0.tgz", + "integrity": "sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==", + "dev": true, + "requires": { + "@types/node": "*" + } }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "@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 }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "@types/testing-library__dom": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", + "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", "dev": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "pretty-format": "^24.3.0" } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "@types/tough-cookie": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", + "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==" }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "@types/webpack-env": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.1.tgz", + "integrity": "sha512-eWN5ElDTeBc5lRDh95SqA8x18D0ll2pWudU3uWiyfsRmIZcmUXpEsxPU+7+BsdCrO2vfLRC629u/MmjbmF+2tA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz", + "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" } }, - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "@typescript-eslint/eslint-plugin": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz", + "integrity": "sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw==", "dev": true, "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" + "@typescript-eslint/experimental-utils": "2.23.0", + "eslint-utils": "^1.4.3", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" }, "dependencies": { - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } } } }, - "acorn-walk": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz", - "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==", - "dev": true - }, - "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "@typescript-eslint/experimental-utils": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz", + "integrity": "sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.23.0", + "eslint-scope": "^5.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } } }, - "agentkeepalive": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", - "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "@typescript-eslint/parser": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.23.0.tgz", + "integrity": "sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg==", "dev": true, "requires": { - "humanize-ms": "^1.2.1" + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.23.0", + "@typescript-eslint/typescript-estree": "2.23.0", + "eslint-visitor-keys": "^1.1.0" } }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "@typescript-eslint/typescript-estree": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz", + "integrity": "sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw==", "dev": true, "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^6.3.0", + "tsutils": "^3.17.1" }, "dependencies": { - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } } } }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" } }, - "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==", + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", "dev": true }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", "dev": true }, - "android-versions": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.5.0.tgz", - "integrity": "sha512-/GWUAqa2OJNlDF5VGSe3SR1QMHEPXxx54Ur56r0qQC0H9FlBr7kyBF2SgVEhzFCPbrW4UcYgVuWrq/2Ty3QvXg==", + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, "requires": { - "semver": "^5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "@webassemblyjs/wast-printer": "1.8.5" } }, - "angular-html-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/angular-html-parser/-/angular-html-parser-1.4.0.tgz", - "integrity": "sha512-5KyzzYOeZV9g9ahXw4rbi8IIbMjUdXoarXJ0CfbWue5U1YsvMnjMZJ3oadpU8ZtnIx1zR/dsyt+FLJx2U65d2Q==", - "requires": { - "tslib": "^1.9.3" - } + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true }, - "angular2-qrcode": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/angular2-qrcode/-/angular2-qrcode-2.0.3.tgz", - "integrity": "sha512-blXNY7VGSuxxfyAg0aa7urWFkoIT2YrygMzyWNRhzPY7UN1ddM4MWAZSzCEFVTzIIu9x4bZcpYDKG7JnmM9IFg==", + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, "requires": { - "qrious": "^4.0.2" + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" } }, - "ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", "dev": true }, - "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } }, - "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==", + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, "requires": { - "color-convert": "^1.9.0" + "@xtuc/long": "4.2.2" } }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", "dev": true }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" } }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", "dev": true, "requires": { - "default-require-extensions": "^2.0.0" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", "dev": true, - "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" } }, - "argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "@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 }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "@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 + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, - "ark-ts": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/ark-ts/-/ark-ts-0.4.1.tgz", - "integrity": "sha512-cNaVwxucv6bGzXKx8GEGdv6KFIzS7HZH2kNsLVbb/z69w/KUpqkjF0WuZRVoEsmFg4OXaWFaVlqOMYcObc+2pA==", - "requires": { - "@types/bigi": "^1.4.0", - "@types/node": "^8.0.12", - "@types/request": "^2.0.0", - "@types/rx": "^4.1.1", - "axios": "^0.18.0", - "bigi": "^1.4.2", - "bs58check": "^2.0.2", - "bytebuffer": "^5.0.1", - "create-hash": "^1.1.3", - "create-hmac": "^1.1.6", - "ecurve": "^1.0.5", - "json-typescript-mapper": "^1.1.3", - "randombytes": "^2.0.5", - "rxjs": "^5.5.12", - "secp256k1": "^3.3.0", - "wif": "^2.0.6" - }, - "dependencies": { - "@types/node": { - "version": "8.10.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz", - "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg==" - }, - "json-typescript-mapper": { - "version": "1.3.1", - "resolved": "github:luciorubeens/json-typescript-mapper#master", - "requires": { - "reflect-metadata": "^0.1.3" - } - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "requires": { - "symbol-observable": "1.0.1" - } - } - } - }, - "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 + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "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 + "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" + } }, - "array-find": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", - "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + } } }, - "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=", + "acorn-walk": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz", + "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==", "dev": true }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", "dev": true }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { - "safer-buffer": "~2.1.0" + "es6-promisify": "^5.0.0" } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "humanize-ms": "^1.2.1" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", "dev": true, "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "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 + "airbnb-js-shims": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz", + "integrity": "sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "array.prototype.flatmap": "^1.2.1", + "es5-shim": "^4.5.13", + "es6-shim": "^0.35.5", + "function.prototype.name": "^1.1.0", + "globalthis": "^1.0.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0 || ^1.0.0", + "object.getownpropertydescriptors": "^2.0.3", + "object.values": "^1.1.0", + "promise.allsettled": "^1.0.0", + "promise.prototype.finally": "^3.1.0", + "string.prototype.matchall": "^4.0.0 || ^3.0.1", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", + "symbol.prototype.description": "^1.0.0" + } }, - "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 + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "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 }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "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, + "android-versions": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.5.0.tgz", + "integrity": "sha512-/GWUAqa2OJNlDF5VGSe3SR1QMHEPXxx54Ur56r0qQC0H9FlBr7kyBF2SgVEhzFCPbrW4UcYgVuWrq/2Ty3QvXg==", "requires": { - "lodash": "^4.17.14" + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, - "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 + "angular-html-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/angular-html-parser/-/angular-html-parser-1.4.0.tgz", + "integrity": "sha512-5KyzzYOeZV9g9ahXw4rbi8IIbMjUdXoarXJ0CfbWue5U1YsvMnjMZJ3oadpU8ZtnIx1zR/dsyt+FLJx2U65d2Q==", + "requires": { + "tslib": "^1.9.3" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "angular2-qrcode": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/angular2-qrcode/-/angular2-qrcode-2.0.3.tgz", + "integrity": "sha512-blXNY7VGSuxxfyAg0aa7urWFkoIT2YrygMzyWNRhzPY7UN1ddM4MWAZSzCEFVTzIIu9x4bZcpYDKG7JnmM9IFg==", + "requires": { + "qrious": "^4.0.2" + } }, - "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 + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" }, - "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "string-width": "^3.0.0" }, "dependencies": { - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "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 + }, + "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" + } } } }, - "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=", + "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 }, - "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", "dev": true }, - "axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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==", "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" + "color-convert": "^1.9.0" } }, - "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "entities": "^1.1.2" }, "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" - } + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { - "object.assign": "^4.1.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "backo2": { + "app-root-dir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", "dev": true }, - "balanced-match": { + "append-transform": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "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" - } - }, - "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-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-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" - } - } + "default-require-extensions": "^2.0.0" } }, - "base-x": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", - "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "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" - } - }, - "bcryptjs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", - "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" - }, - "bcrypto": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/bcrypto/-/bcrypto-4.3.2.tgz", - "integrity": "sha512-uGmeiqLvLYUPRa0XoACDgXwxZY9wE1uiFHpdtGSs7FI2YYkakqIWZklkF8sKMzXM/HaHRIjulzQ8xuDoqptjVQ==", - "requires": { - "bsert": "~0.0.10", - "bufio": "~1.0.6", - "loady": "~0.0.1", - "nan": "^2.14.0" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "callsite": "1.0.0" + "sprintf-js": "~1.0.2" } }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "bigi": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", - "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" - }, - "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "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==", + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, "requires": { - "file-uri-to-path": "1.0.0" + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" } }, - "bip32": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", - "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", + "ark-ts": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/ark-ts/-/ark-ts-0.4.1.tgz", + "integrity": "sha512-cNaVwxucv6bGzXKx8GEGdv6KFIzS7HZH2kNsLVbb/z69w/KUpqkjF0WuZRVoEsmFg4OXaWFaVlqOMYcObc+2pA==", "requires": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", + "@types/bigi": "^1.4.0", + "@types/node": "^8.0.12", + "@types/request": "^2.0.0", + "@types/rx": "^4.1.1", + "axios": "^0.18.0", + "bigi": "^1.4.2", + "bs58check": "^2.0.2", + "bytebuffer": "^5.0.1", + "create-hash": "^1.1.3", + "create-hmac": "^1.1.6", + "ecurve": "^1.0.5", + "json-typescript-mapper": "^1.1.3", + "randombytes": "^2.0.5", + "rxjs": "^5.5.12", + "secp256k1": "^3.3.0", "wif": "^2.0.6" }, "dependencies": { "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + "version": "8.10.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz", + "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg==" + }, + "json-typescript-mapper": { + "version": "1.3.1", + "resolved": "github:luciorubeens/json-typescript-mapper#master", + "requires": { + "reflect-metadata": "^0.1.3" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "requires": { + "symbol-observable": "1.0.1" + } } } }, - "bip39": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", - "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", - "requires": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - } - } + "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 }, - "bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", - "requires": { - "safe-buffer": "^5.0.1" - } + "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 }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "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 }, - "blocking-proxy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", - "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true }, - "bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "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 }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" }, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { - "ms": "2.0.0" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "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-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" + "array-uniq": "^1.0.1" } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "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 }, - "bplist-creator": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", - "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", - "requires": { - "stream-buffers": "~2.2.0" - } - }, - "bplist-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", - "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", - "requires": { - "big-integer": "^1.6.7" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "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 }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", "dev": true, "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "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" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" }, "dependencies": { - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.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.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } } }, - "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==", + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", "dev": true, "requires": { - "pako": "~1.0.5" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } } }, - "browserslist": { - "version": "4.8.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", - "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001023", - "electron-to-chromium": "^1.3.341", - "node-releases": "^1.1.47" - } + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true }, - "browserstack": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", - "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - } + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "requires": { - "base-x": "^3.0.2" - } + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" + "safer-buffer": "~2.1.0" } }, - "bsert": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/bsert/-/bsert-0.0.10.tgz", - "integrity": "sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q==" - }, - "bstring": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/bstring/-/bstring-0.3.9.tgz", - "integrity": "sha512-D95flI7SXL+UsQi9mW+hH+AK2AFfafIJi+3GbbyTAWMe2FqwR9keBxsjGiGd/JM+77Y9WsC+M4EhZVNVcym9jw==", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, "requires": { - "bsert": "~0.0.10", - "loady": "~0.0.1", - "nan": "^2.13.1" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "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": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "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" + } + } } }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, - "buffer-fill": { + "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", "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==", + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "buffer-xor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", - "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", + "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": { - "safe-buffer": "^5.1.1" + "lodash": "^4.17.14" } }, - "bufio": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.6.tgz", - "integrity": "sha512-mjYZFRHmI9bk3Oeexu0rWjHFY+w6hGLabdmwSFzq+EFr4MHHsNOYduDVdYl71NG5pTPL7GGzUCMk9cYuV34/Qw==" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "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 }, - "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=", + "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 }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "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 }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "autoprefixer": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", + "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "dev": true, "requires": { - "long": "~3" + "browserslist": "^4.6.3", + "caniuse-lite": "^1.0.30000980", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.17", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + } } }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "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 }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "axios": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + } + }, + "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": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "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": { - "aggregate-error": "^3.0.0" + "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 + }, + "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 } } }, - "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" - } + "babel-helper-evaluate-path": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", + "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", + "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" - } + "babel-helper-flip-expressions": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", + "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", + "dev": true }, - "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" - } + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "babel-helper-is-void-0": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", + "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", "dev": true }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "babel-helper-mark-eval-scopes": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", + "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "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.30001024", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz", - "integrity": "sha512-LubRSEPpOlKlhZw9wGlLHo8ZVj6ugGU3xGUfLPneNBledSd9lIM5cCGZ9Mz/mMCJUhEt4jZpYteZNVRdJw5FRA==", - "dev": true - }, - "canonical-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", - "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "babel-helper-remove-or-void": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", + "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", + "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", "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==", + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "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" + } + } } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "babel-plugin-add-react-displayname": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", + "integrity": "sha1-M51M3be2X9YtHfnbn+BN4TQSK9U=", "dev": true }, - "chart.js": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz", - "integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==", - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "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==", + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" + "object.assign": "^4.1.0" } }, - "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==", + "babel-plugin-emotion": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.29.tgz", + "integrity": "sha512-7Jpi1OCxjyz0k163lKtqP+LHMg5z3S6A7vMBfHnF06l2unmtsOmFDzZBpGf0CWo1G4m8UACfVcDJiSiRuu/cSw==", + "dev": true, "requires": { - "color-name": "^1.0.0" + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" }, "dependencies": { - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "*" - } + "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 } } }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "babel-plugin-minify-builtins": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", + "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", + "dev": true + }, + "babel-plugin-minify-constant-folding": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", + "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", "dev": true, "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } + "babel-helper-evaluate-path": "^0.5.0" } }, - "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "dev": true + "babel-plugin-minify-dead-code-elimination": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", + "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-mark-eval-scopes": "^0.4.3", + "babel-helper-remove-or-void": "^0.4.3", + "lodash": "^4.17.11" + } }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "babel-plugin-minify-flip-comparisons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", + "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", "dev": true, "requires": { - "tslib": "^1.9.0" + "babel-helper-is-void-0": "^0.4.3" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "babel-plugin-minify-guarded-expressions": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", + "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", + "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", "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==", + "babel-plugin-minify-mangle-names": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", + "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", + "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "babel-helper-mark-eval-scopes": "^0.4.3" } }, - "circular-dependency-plugin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", - "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "babel-plugin-minify-numeric-literals": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", + "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", "dev": true }, - "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==", + "babel-plugin-minify-replace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", + "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", + "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", "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" - } - } + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.5.0" } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "babel-plugin-minify-type-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", + "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", "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==", + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", + "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", + "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", + "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", + "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "dev": true + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", + "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "esutils": "^2.0.2" } }, - "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "babel-plugin-transform-regexp-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", + "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", "dev": true }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "babel-plugin-transform-remove-console": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", + "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", + "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", + "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", "dev": true, "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", + "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", + "dev": true + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", + "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "dev": true + }, + "babel-preset-minify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", + "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.5.0", + "babel-plugin-minify-constant-folding": "^0.5.0", + "babel-plugin-minify-dead-code-elimination": "^0.5.1", + "babel-plugin-minify-flip-comparisons": "^0.4.3", + "babel-plugin-minify-guarded-expressions": "^0.4.4", + "babel-plugin-minify-infinity": "^0.4.3", + "babel-plugin-minify-mangle-names": "^0.5.0", + "babel-plugin-minify-numeric-literals": "^0.4.3", + "babel-plugin-minify-replace": "^0.5.0", + "babel-plugin-minify-simplify": "^0.5.1", + "babel-plugin-minify-type-constructors": "^0.4.3", + "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", + "babel-plugin-transform-member-expression-literals": "^6.9.4", + "babel-plugin-transform-merge-sibling-variables": "^6.9.4", + "babel-plugin-transform-minify-booleans": "^6.9.4", + "babel-plugin-transform-property-literals": "^6.9.4", + "babel-plugin-transform-regexp-constructors": "^0.4.3", + "babel-plugin-transform-remove-console": "^6.9.4", + "babel-plugin-transform-remove-debugger": "^6.9.4", + "babel-plugin-transform-remove-undefined": "^0.5.0", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", + "babel-plugin-transform-undefined-to-void": "^6.9.4", + "lodash": "^4.17.11" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "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": { - "is-fullwidth-code-point": { + "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "is-descriptor": "^1.0.0" } }, - "string-width": { + "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-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-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "base-x": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", + "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "safe-buffer": "^5.0.1" } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", "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" - } + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=", + "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": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "dependencies": { - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", - "dev": true - } + "tweetnacl": "^0.14.3" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, - "codecov": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.6.5.tgz", - "integrity": "sha512-v48WuDMUug6JXwmmfsMzhCHRnhUf8O3duqXvltaYJKrO1OekZWpB/eH6iIoaxMl8Qli0+u3OxptdsBOYiD7VAQ==", - "dev": true, + "bcrypto": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/bcrypto/-/bcrypto-4.3.2.tgz", + "integrity": "sha512-uGmeiqLvLYUPRa0XoACDgXwxZY9wE1uiFHpdtGSs7FI2YYkakqIWZklkF8sKMzXM/HaHRIjulzQ8xuDoqptjVQ==", "requires": { - "argv": "0.0.2", - "ignore-walk": "3.0.3", - "js-yaml": "3.13.1", - "teeny-request": "6.0.1", - "urlgrey": "0.4.4" + "bsert": "~0.0.10", + "bufio": "~1.0.6", + "loady": "~0.0.1", + "nan": "^2.14.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "callsite": "1.0.0" } }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, - "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" - } + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "bigi": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", + "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" }, - "colorette": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz", - "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==", + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "requires": { - "delayed-stream": "~1.0.0" + "file-uri-to-path": "1.0.0" } }, - "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 - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "bip32": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", + "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^3.0.0" + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "dependencies": { + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + } } }, - "compare-versions": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", - "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true + "bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "requires": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + } + } }, - "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 + "bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", + "requires": { + "safe-buffer": "^5.0.1" + } }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", "dev": true, "requires": { - "mime-db": ">= 1.43.0 < 2" - }, - "dependencies": { - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true - } + "minimist": "^1.2.0" } }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "dev": true, "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.0", + "content-type": "~1.0.4", "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" }, "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6585,2227 +7558,1810 @@ "ms": "2.0.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==", + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "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=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "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" } }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", "dev": true, "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^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==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "ms": "2.0.0" + "@types/color-name": "^1.1.1", + "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" + } + }, + "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==", + "dev": true + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "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 + "bplist-creator": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", + "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", + "requires": { + "stream-buffers": "~2.2.0" + } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "requires": { + "big-integer": "^1.6.7" + } }, - "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 + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "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": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "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 - } + "fill-range": "^7.0.1" } }, - "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 + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { - "safe-buffer": "~5.1.1" + "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" }, "dependencies": { - "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==" + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" } } }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true + "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" + } }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true + "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" + } }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "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" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } }, - "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "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": { - "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": "^2.1.2", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "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" - } - }, - "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" - } - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - } + "pako": "~1.0.5" } }, - "cordova-android": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.1.0.tgz", - "integrity": "sha512-eAY6g9q3raJ4P03wNdSWC5MOW1EfxoomWNXsPhi7T6Q9yAqmxqn0sLEUjLL1Ib0LCH3nKQWBXdxapQ5LgbHu+g==", + "browserslist": { + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", + "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", + "dev": true, "requires": { - "android-versions": "^1.4.0", - "compare-func": "^1.3.2", - "cordova-common": "^3.2.0", - "nopt": "^4.0.1", - "properties-parser": "^0.3.1", - "q": "^1.5.1", - "shelljs": "^0.5.3" - }, - "dependencies": { - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - } + "caniuse-lite": "^1.0.30001023", + "electron-to-chromium": "^1.3.341", + "node-releases": "^1.1.47" } }, - "cordova-clipboard": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/cordova-clipboard/-/cordova-clipboard-1.3.0.tgz", - "integrity": "sha512-IGk4LZm/DJ0Xk/jgakHm4wa+A/lrRP3QfzMAHDG7oWLJS4ISOpfI32Wez4ndnENItRslGyBVyJyKD83CxELCAw==" - }, - "cordova-common": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.1.tgz", - "integrity": "sha512-xg0EnjnA6EipxXG8cupdlYQYeDA6+ghbN+Pjq88xN1LInwP6Bo7IyGBdSV5QnfjOvzShF9BBwSxBAv0FOO0C2Q==", + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, "requires": { - "ansi": "^0.3.1", - "bplist-parser": "^0.1.0", - "cross-spawn": "^6.0.5", - "elementtree": "0.1.7", - "endent": "^1.1.1", - "fs-extra": "^8.0.0", - "glob": "^7.1.2", - "minimatch": "^3.0.0", - "plist": "^3.0.1", - "q": "^1.4.1", - "strip-bom": "^3.0.0", - "underscore": "^1.8.3", - "which": "^1.3.0" + "https-proxy-agent": "^2.2.1" } }, - "cordova-custom-config": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cordova-custom-config/-/cordova-custom-config-5.1.0.tgz", - "integrity": "sha512-qPk1l1Rayu0PAp5kXqyvzMprc0oCqRa5pcs7iRrb0daq0I/RWIw7BngCyOJuv/wnJrTBbwxVued1+lVLe0/MeA==", + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", "requires": { - "colors": "^1.1.2", - "elementtree": "^0.1.6", - "lodash": "^4.17.11", - "plist": "^3.0.1", - "q": "^1.4.1", - "shelljs": "^0.7.0", - "tostr": "^0.1.0", - "xcode": "^1.0.0" - }, - "dependencies": { - "base64-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz", - "integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg=" - }, - "bplist-creator": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", - "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", - "requires": { - "stream-buffers": "~2.2.0" - } - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "simple-plist": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz", - "integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=", - "requires": { - "bplist-creator": "0.0.7", - "bplist-parser": "0.1.1", - "plist": "2.0.1" - }, - "dependencies": { - "plist": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz", - "integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=", - "requires": { - "base64-js": "1.1.2", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.x" - } - } - } - }, - "xcode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-1.1.0.tgz", - "integrity": "sha512-hllHFtfsNu5WbVzj8KbGNdI3NgOYmTLZqyF4a9c9J1aGMhAdxmLLsXlpG0Bz8fEtKh6I3pyargRXN0ZlLpcF5w==", - "requires": { - "simple-plist": "^0.2.1", - "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" - } + "base-x": "^3.0.2" } }, - "cordova-ios": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-5.1.1.tgz", - "integrity": "sha512-asZMCj44JMe/PMrDIRC97GStPCH+GpaMNVe8hdmu8WWXJzMzRNRRJ339YYU89jitWf9ZKMdyBgrnSnQi5bJ/ZQ==", + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "requires": { - "cordova-common": "^3.1.0", - "ios-sim": "^8.0.1", - "nopt": "^4.0.1", - "plist": "^3.0.1", - "q": "^1.5.1", - "semver": "^6.3.0", - "shelljs": "^0.5.3", - "unorm": "^1.4.1", - "xcode": "^2.0.0", - "xml-escape": "^1.1.0" - }, - "dependencies": { - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" } }, - "cordova-plugin-add-swift-support": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/cordova-plugin-add-swift-support/-/cordova-plugin-add-swift-support-2.0.2.tgz", - "integrity": "sha512-K03WDnsD3GT+n7Od3BnS17D8rYnAFZbZjjQJa2r7qW8QLq8+h7hGbFaiF+w5+nUtyAqUNq+HT/d/MdqBGLNzxA==", + "bsert": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/bsert/-/bsert-0.0.10.tgz", + "integrity": "sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q==" + }, + "bstring": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/bstring/-/bstring-0.3.9.tgz", + "integrity": "sha512-D95flI7SXL+UsQi9mW+hH+AK2AFfafIJi+3GbbyTAWMe2FqwR9keBxsjGiGd/JM+77Y9WsC+M4EhZVNVcym9jw==", "requires": { - "glob": "^7.1.3", - "semver": "^6.0.0", - "xcode": "^2.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } + "bsert": "~0.0.10", + "loady": "~0.0.1", + "nan": "^2.13.1" } }, - "cordova-plugin-device": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.3.tgz", - "integrity": "sha512-Jb3V72btxf3XHpkPQsGdyc8N6tVBYn1vsxSFj43fIz9vonJDUThYPCJJHqk6PX6N4dJw6I4FjxkpfCR4LDYMlw==" - }, - "cordova-plugin-inappbrowser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-3.2.0.tgz", - "integrity": "sha512-tYsK0H9M8POmJTVnfyIsiRgoOxnypa9IQIbf/Hsgi7vbgUYRHtBUfvXwq4RhMqLIVrCeJLXF2hTXTDNY0a/eTA==" - }, - "cordova-plugin-ionic": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/cordova-plugin-ionic/-/cordova-plugin-ionic-5.4.6.tgz", - "integrity": "sha512-70G3Da0fOHpGkv1ezNe9Al/DqPEm+CfM2HBcVwX1wT0G1QgIy0hZLkgWn0E2tqOffICMtRPae/kOv+ayXlu0rg==", + "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": { - "typescript": "^3.5.3" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "cordova-plugin-ionic-keyboard": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz", - "integrity": "sha512-yDUG+9ieKVRitq5mGlNxjaZh/MgEhFFIgTIPhqSbUaQ8UuZbawy5mhJAVClqY97q8/rcQtL6dCDa7x2sEtCLcA==" - }, - "cordova-plugin-ionic-webview": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.1.3.tgz", - "integrity": "sha512-hlrUF0kLjjEkZmpYlLJO0NnXmVjMmQ3MOZVXm1ytDihLPKHklYCOpCvjA5Wz3hJrPD1shFEsqi/SPnp873AsdQ==" - }, - "cordova-plugin-network-information": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/cordova-plugin-network-information/-/cordova-plugin-network-information-2.0.2.tgz", - "integrity": "sha512-NwO3qDBNL/vJxUxBTPNOA1HvkDf9eTeGH8JSZiwy1jq2W2mJKQEDBwqWkaEQS19Yd/MQTiw0cykxg5D7u4J6cQ==" - }, - "cordova-plugin-qrscanner": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-qrscanner/-/cordova-plugin-qrscanner-3.0.1.tgz", - "integrity": "sha512-xrwOP3nD+VmRSiV0w7chZ5PLw2YwpI9vtLdeoGNYLLzmmjjYbyIof+x9vOEOgjtwrg9S61rukmOZhQAmkzaosA==", + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, "requires": { - "qrcode-reader": "^1.0.4", - "webrtc-adapter": "^3.1.4" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "cordova-plugin-screen-orientation": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/cordova-plugin-screen-orientation/-/cordova-plugin-screen-orientation-3.0.2.tgz", - "integrity": "sha512-2w6CMC+HGvbhogJetalwGurL2Fx8DQCCPy3wlSZHN1/W7WoQ5n9ujVozcoKrY4VaagK6bxrPFih+ElkO8Uqfzg==" - }, - "cordova-plugin-splashscreen": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.3.tgz", - "integrity": "sha512-rnoDXMDfzoeHDBvsnu6JmzDE/pV5YJCAfc5hYX/Mb2BIXGgSjFJheByt0tU6kp3Wl40tSyFX4pYfBwFblBGyRg==" - }, - "cordova-plugin-statusbar": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.3.tgz", - "integrity": "sha512-ThmXzl6QIKWFXf4wWw7Q/zpB+VKkz3VM958+5A0sXD4jmR++u7KnGttLksXshVwWr6lvGwUebLYtIyXwS4Ovcg==" + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true }, - "cordova-plugin-vibration": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-vibration/-/cordova-plugin-vibration-3.1.1.tgz", - "integrity": "sha512-qgv67Rueo4Pydfant3TwnXeFiN9dl+6lKMM6h5jYg9XewiGAGOr8vfWsTvQssC3m3xMKGS1ap3xPNH+BzZ4RMA==" + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true }, - "cordova-plugin-whitelist": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz", - "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, - "cordova-plugin-x-socialsharing": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/cordova-plugin-x-socialsharing/-/cordova-plugin-x-socialsharing-5.6.4.tgz", - "integrity": "sha512-bBjWY9TgoH1CMK4P26zLT1D9rVcvI9LoIEGUjmwdLGiBP+IWo7RXu90RM1xHmVjG5hVLgmic5XyWc665ye8aRQ==" + "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 }, - "cordova-sqlite-storage": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-5.0.0.tgz", - "integrity": "sha512-AFb3t3yrdFZ0ZY16FKJupyx71bq+iKHSWHfHH1xmFjEuGK7VPbSHwGEf9hpypin42Z10OdkR1CgnTyvkWNtLlw==", + "buffer-xor": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", + "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", "requires": { - "cordova-sqlite-storage-dependencies": "2.1.1" + "safe-buffer": "^5.1.1" } }, - "cordova-sqlite-storage-dependencies": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cordova-sqlite-storage-dependencies/-/cordova-sqlite-storage-dependencies-2.1.1.tgz", - "integrity": "sha512-1lV5Pg1FttjBmGO8z4gxtuA4BbPKtgTfUEh1Vx4boa41inizyxaowRyTeaaqEhi5gmYAaX8sRTABm9U/XckRFg==" + "bufio": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.6.tgz", + "integrity": "sha512-mjYZFRHmI9bk3Oeexu0rWjHFY+w6hGLabdmwSFzq+EFr4MHHsNOYduDVdYl71NG5pTPL7GGzUCMk9cYuV34/Qw==" }, - "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, - "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", - "dev": true, - "requires": { - "browserslist": "^4.8.3", - "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 - } - } + "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 }, - "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=", + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "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, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "long": "~3" } }, - "coverage-istanbul-loader": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz", - "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==", + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dev": true, "requires": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.0", - "loader-utils": "^1.2.3", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.6.1" + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" }, "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "aggregate-error": "^3.0.0" } } } }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "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": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "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" } }, - "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==", - "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==", - "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==", - "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==" - } - } - }, - "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": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "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=", + "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 }, - "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==", + "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": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" + "callsites": "^2.0.0" } }, - "css-parse": { + "caller-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { - "css": "^2.0.0" + "caller-callsite": "^2.0.0" } }, - "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" - } + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true }, - "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==", + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "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==", + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", "dev": true, "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true }, - "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "can-use-dom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", + "integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=", "dev": true }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "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": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "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.2", - "postcss-unique-selectors": "^4.0.1" - } + "caniuse-lite": { + "version": "1.0.30001024", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz", + "integrity": "sha512-LubRSEPpOlKlhZw9wGlLHo8ZVj6ugGU3xGUfLPneNBledSd9lIM5cCGZ9Mz/mMCJUhEt4jZpYteZNVRdJw5FRA==", + "dev": true }, - "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=", + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", "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=", + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", "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, + "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==", "requires": { - "postcss": "^7.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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==", + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true }, - "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.37" - } + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "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" - } - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "dev": true - }, - "dayjs": { - "version": "1.8.23", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", - "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ==" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "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 - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" - }, - "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, + "chart.js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz", + "integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==", "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" + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "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": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, + "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": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "chartjs-color-string": "^0.6.0", + "color-convert": "^1.9.3" } }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, + "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": { - "strip-bom": "^3.0.0" + "color-name": "^1.0.0" } }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", "dev": true, "requires": { - "clone": "^1.0.2" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" }, "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", "dev": true - } - } - }, - "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==", - "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" - }, - "dependencies": { - "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==", + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, - "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==", + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "dom-serializer": "0", + "domelementtype": "1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@types/node": "*" } } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", "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" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" }, "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "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 - } + "is-glob": "^4.0.1" } } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, - "optional": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "requires": { + "tslib": "^1.9.0" + } }, - "dependency-graph": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", - "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "dequal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-1.0.0.tgz", - "integrity": "sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw==" - }, - "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, + "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==", "requires": { "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "safe-buffer": "^5.0.1" } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "circular-dependency-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", "dev": true }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "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": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" + "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" + } + } } }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==", + "dev": true + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dev": true, "requires": { - "asap": "^2.0.0", - "wrappy": "1" + "source-map": "~0.6.0" } }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", "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" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "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": { - "path-type": "^3.0.0" + "restore-cursor": "^3.1.0" } }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", "dev": true }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" } }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", "dev": true, "requires": { - "buffer-indexof": "^1.0.0" + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.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" - } + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "dev": true, + "optional": true, "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" } }, - "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, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.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": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "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": { - "domelementtype": "1" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" } }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "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": { - "dom-serializer": "0", - "domelementtype": "1" + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + } } }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "codecov": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.6.5.tgz", + "integrity": "sha512-v48WuDMUug6JXwmmfsMzhCHRnhUf8O3duqXvltaYJKrO1OekZWpB/eH6iIoaxMl8Qli0+u3OxptdsBOYiD7VAQ==", + "dev": true, "requires": { - "is-obj": "^1.0.0" + "argv": "0.0.2", + "ignore-walk": "3.0.3", + "js-yaml": "3.13.1", + "teeny-request": "6.0.1", + "urlgrey": "0.4.4" } }, - "drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "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": { - "browserify-aes": "^1.0.6", - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "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" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "ecurve": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", - "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", + "colorette": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz", + "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { - "bigi": "^1.1.0", - "safe-buffer": "^5.0.1" + "delayed-stream": "~1.0.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", "dev": true }, - "electron-to-chromium": { - "version": "1.3.345", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz", - "integrity": "sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg==", + "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 }, - "elegant-spinner": { + "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "elementtree": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", - "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", "requires": { - "sax": "1.1.4" - }, - "dependencies": { - "sax": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", - "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=" - } + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" } }, - "elliptic": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } + "compare-versions": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", + "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", + "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==", + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", "dev": true }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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 }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "mime-db": ">= 1.43.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "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==", + "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": { - "once": "^1.4.0" + "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": { + "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" + } + }, + "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 + } } }, - "endent": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/endent/-/endent-1.3.0.tgz", - "integrity": "sha512-C8AryqPPwtydqcpO5AF6k9Bd1EpFkQtvsefJqS3y3n8TG13Jy63MascDxTOULZYqrUde+dK6BjNc6LIMr3iI2A==", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "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": { - "dedent": "^0.7.0", - "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.3" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "dependencies": { - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "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 - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "ms": "2.0.0" } } } }, - "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "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 + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" + "safe-buffer": "5.1.2" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, "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 - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } } } }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } + "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 }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "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==" + } } }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", "dev": true }, - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "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==", + "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": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", - "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "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" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "es6-promise-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/es6-promise-plugin/-/es6-promise-plugin-4.2.2.tgz", - "integrity": "sha512-uoA4aVplXI9oqUYJFBAVRwAqIN9/n9JgrTAUGX3qPbnSZVE5yY1+6/MsoN5f4xsaPO62WjPHOdtts6okMN6tNA==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", "dev": true, "requires": { - "es6-promise": "^4.0.3" + "toggle-selection": "^1.0.6" } }, - "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=" - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", "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", + "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", - "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" + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.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 - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "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" } }, - "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 - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "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": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, - "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 - }, - "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 - }, - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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==", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "figgy-pudding": "^3.5.1" } } } }, - "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", - "dev": true, + "cordova-android": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.1.0.tgz", + "integrity": "sha512-eAY6g9q3raJ4P03wNdSWC5MOW1EfxoomWNXsPhi7T6Q9yAqmxqn0sLEUjLL1Ib0LCH3nKQWBXdxapQ5LgbHu+g==", "requires": { - "get-stdin": "^6.0.0" + "android-versions": "^1.4.0", + "compare-func": "^1.3.2", + "cordova-common": "^3.2.0", + "nopt": "^4.0.1", + "properties-parser": "^0.3.1", + "q": "^1.5.1", + "shelljs": "^0.5.3" + }, + "dependencies": { + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + } } }, - "eslint-plugin-html": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz", - "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.1" - } + "cordova-clipboard": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cordova-clipboard/-/cordova-clipboard-1.3.0.tgz", + "integrity": "sha512-IGk4LZm/DJ0Xk/jgakHm4wa+A/lrRP3QfzMAHDG7oWLJS4ISOpfI32Wez4ndnENItRslGyBVyJyKD83CxELCAw==" }, - "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", - "dev": true, + "cordova-common": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.1.tgz", + "integrity": "sha512-xg0EnjnA6EipxXG8cupdlYQYeDA6+ghbN+Pjq88xN1LInwP6Bo7IyGBdSV5QnfjOvzShF9BBwSxBAv0FOO0C2Q==", "requires": { - "prettier-linter-helpers": "^1.0.0" + "ansi": "^0.3.1", + "bplist-parser": "^0.1.0", + "cross-spawn": "^6.0.5", + "elementtree": "0.1.7", + "endent": "^1.1.1", + "fs-extra": "^8.0.0", + "glob": "^7.1.2", + "minimatch": "^3.0.0", + "plist": "^3.0.1", + "q": "^1.4.1", + "strip-bom": "^3.0.0", + "underscore": "^1.8.3", + "which": "^1.3.0" } }, - "eslint-plugin-simple-import-sort": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.2.tgz", - "integrity": "sha512-YPEGo7DbMANQ01d2OXlREcaHRszsW8LoUQ9mIjI7gXSdwpnWKfogtzL6FiBfDf1teCBx+AdcjcfDXSKpmhTWeA==", - "dev": true - }, - "eslint-plugin-unused-imports": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-0.1.2.tgz", - "integrity": "sha512-uribBu/L3/+XFGY3ticZTcWxkcrhISphjrfiKkZ/gxFa3u0EIPfc4MNtwrk6gcg7Mhs+InDxXoUxd5HEZtaw3w==", - "dev": true, + "cordova-custom-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cordova-custom-config/-/cordova-custom-config-5.1.0.tgz", + "integrity": "sha512-qPk1l1Rayu0PAp5kXqyvzMprc0oCqRa5pcs7iRrb0daq0I/RWIw7BngCyOJuv/wnJrTBbwxVued1+lVLe0/MeA==", "requires": { - "@typescript-eslint/eslint-plugin": "^2.3.0", - "eslint": "^6.3.0", - "eslint-rule-composer": "^0.3.0", - "requireindex": "~1.1.0", - "typescript": "^3.6.3" - } - }, - "eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true + "colors": "^1.1.2", + "elementtree": "^0.1.6", + "lodash": "^4.17.11", + "plist": "^3.0.1", + "q": "^1.4.1", + "shelljs": "^0.7.0", + "tostr": "^0.1.0", + "xcode": "^1.0.0" + }, + "dependencies": { + "base64-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz", + "integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg=" + }, + "bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", + "requires": { + "stream-buffers": "~2.2.0" + } + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "simple-plist": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz", + "integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=", + "requires": { + "bplist-creator": "0.0.7", + "bplist-parser": "0.1.1", + "plist": "2.0.1" + }, + "dependencies": { + "plist": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz", + "integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=", + "requires": { + "base64-js": "1.1.2", + "xmlbuilder": "8.2.2", + "xmldom": "0.1.x" + } + } + } + }, + "xcode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-1.1.0.tgz", + "integrity": "sha512-hllHFtfsNu5WbVzj8KbGNdI3NgOYmTLZqyF4a9c9J1aGMhAdxmLLsXlpG0Bz8fEtKh6I3pyargRXN0ZlLpcF5w==", + "requires": { + "simple-plist": "^0.2.1", + "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" + } + } }, - "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, + "cordova-ios": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-5.1.1.tgz", + "integrity": "sha512-asZMCj44JMe/PMrDIRC97GStPCH+GpaMNVe8hdmu8WWXJzMzRNRRJ339YYU89jitWf9ZKMdyBgrnSnQi5bJ/ZQ==", "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "cordova-common": "^3.1.0", + "ios-sim": "^8.0.1", + "nopt": "^4.0.1", + "plist": "^3.0.1", + "q": "^1.5.1", + "semver": "^6.3.0", + "shelljs": "^0.5.3", + "unorm": "^1.4.1", + "xcode": "^2.0.0", + "xml-escape": "^1.1.0" + }, + "dependencies": { + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "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, + "cordova-plugin-add-swift-support": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-add-swift-support/-/cordova-plugin-add-swift-support-2.0.2.tgz", + "integrity": "sha512-K03WDnsD3GT+n7Od3BnS17D8rYnAFZbZjjQJa2r7qW8QLq8+h7hGbFaiF+w5+nUtyAqUNq+HT/d/MdqBGLNzxA==", "requires": { - "eslint-visitor-keys": "^1.1.0" + "glob": "^7.1.3", + "semver": "^6.0.0", + "xcode": "^2.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true + "cordova-plugin-device": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.3.tgz", + "integrity": "sha512-Jb3V72btxf3XHpkPQsGdyc8N6tVBYn1vsxSFj43fIz9vonJDUThYPCJJHqk6PX6N4dJw6I4FjxkpfCR4LDYMlw==" }, - "espree": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.0.tgz", - "integrity": "sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA==", - "dev": true, + "cordova-plugin-inappbrowser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-3.2.0.tgz", + "integrity": "sha512-tYsK0H9M8POmJTVnfyIsiRgoOxnypa9IQIbf/Hsgi7vbgUYRHtBUfvXwq4RhMqLIVrCeJLXF2hTXTDNY0a/eTA==" + }, + "cordova-plugin-ionic": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic/-/cordova-plugin-ionic-5.4.6.tgz", + "integrity": "sha512-70G3Da0fOHpGkv1ezNe9Al/DqPEm+CfM2HBcVwX1wT0G1QgIy0hZLkgWn0E2tqOffICMtRPae/kOv+ayXlu0rg==", "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "typescript": "^3.5.3" } }, - "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 + "cordova-plugin-ionic-keyboard": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz", + "integrity": "sha512-yDUG+9ieKVRitq5mGlNxjaZh/MgEhFFIgTIPhqSbUaQ8UuZbawy5mhJAVClqY97q8/rcQtL6dCDa7x2sEtCLcA==" }, - "esquery": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", - "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } + "cordova-plugin-ionic-webview": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.1.3.tgz", + "integrity": "sha512-hlrUF0kLjjEkZmpYlLJO0NnXmVjMmQ3MOZVXm1ytDihLPKHklYCOpCvjA5Wz3hJrPD1shFEsqi/SPnp873AsdQ==" }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, + "cordova-plugin-network-information": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-network-information/-/cordova-plugin-network-information-2.0.2.tgz", + "integrity": "sha512-NwO3qDBNL/vJxUxBTPNOA1HvkDf9eTeGH8JSZiwy1jq2W2mJKQEDBwqWkaEQS19Yd/MQTiw0cykxg5D7u4J6cQ==" + }, + "cordova-plugin-qrscanner": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-qrscanner/-/cordova-plugin-qrscanner-3.0.1.tgz", + "integrity": "sha512-xrwOP3nD+VmRSiV0w7chZ5PLw2YwpI9vtLdeoGNYLLzmmjjYbyIof+x9vOEOgjtwrg9S61rukmOZhQAmkzaosA==", "requires": { - "estraverse": "^4.1.0" + "qrcode-reader": "^1.0.4", + "webrtc-adapter": "^3.1.4" } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "cordova-plugin-screen-orientation": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-screen-orientation/-/cordova-plugin-screen-orientation-3.0.2.tgz", + "integrity": "sha512-2w6CMC+HGvbhogJetalwGurL2Fx8DQCCPy3wlSZHN1/W7WoQ5n9ujVozcoKrY4VaagK6bxrPFih+ElkO8Uqfzg==" }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "cordova-plugin-splashscreen": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.3.tgz", + "integrity": "sha512-rnoDXMDfzoeHDBvsnu6JmzDE/pV5YJCAfc5hYX/Mb2BIXGgSjFJheByt0tU6kp3Wl40tSyFX4pYfBwFblBGyRg==" }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "cordova-plugin-statusbar": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.3.tgz", + "integrity": "sha512-ThmXzl6QIKWFXf4wWw7Q/zpB+VKkz3VM958+5A0sXD4jmR++u7KnGttLksXshVwWr6lvGwUebLYtIyXwS4Ovcg==" }, - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true + "cordova-plugin-vibration": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-vibration/-/cordova-plugin-vibration-3.1.1.tgz", + "integrity": "sha512-qgv67Rueo4Pydfant3TwnXeFiN9dl+6lKMM6h5jYg9XewiGAGOr8vfWsTvQssC3m3xMKGS1ap3xPNH+BzZ4RMA==" }, - "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", - "dev": true + "cordova-plugin-whitelist": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz", + "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } + "cordova-plugin-x-socialsharing": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/cordova-plugin-x-socialsharing/-/cordova-plugin-x-socialsharing-5.6.4.tgz", + "integrity": "sha512-bBjWY9TgoH1CMK4P26zLT1D9rVcvI9LoIEGUjmwdLGiBP+IWo7RXu90RM1xHmVjG5hVLgmic5XyWc665ye8aRQ==" }, - "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==", - "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==", + "cordova-sqlite-storage": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-5.0.0.tgz", + "integrity": "sha512-AFb3t3yrdFZ0ZY16FKJupyx71bq+iKHSWHfHH1xmFjEuGK7VPbSHwGEf9hpypin42Z10OdkR1CgnTyvkWNtLlw==", "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" + "cordova-sqlite-storage-dependencies": "2.1.1" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "cordova-sqlite-storage-dependencies": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage-dependencies/-/cordova-sqlite-storage-dependencies-2.1.1.tgz", + "integrity": "sha512-1lV5Pg1FttjBmGO8z4gxtuA4BbPKtgTfUEh1Vx4boa41inizyxaowRyTeaaqEhi5gmYAaX8sRTABm9U/XckRFg==" }, - "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" - } - } - } + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", "dev": true, "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "browserslist": "^4.8.3", + "semver": "7.0.0" }, "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "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" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "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==", + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", + "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "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 + }, + "corejs-upgrade-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-J0QMp9GNoiw91Kj/dkIQFZeiCXgXoja/Wlht1SPybxerBWh4NCmb0pOgCv61lrlQZETwvVVfAFAA3IqoEO9aqQ==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "resolve-from": "^5.0.0", + "webpack": "^4.38.0" }, "dependencies": { - "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" - } + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "coverage-istanbul-loader": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz", + "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==", "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" + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.0", + "loader-utils": "^1.2.3", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.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=", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "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" - } + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "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==", + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" - } - }, - "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-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" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" } } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-copy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.0.5.tgz", - "integrity": "sha512-KVLihIS41LzwuXJFdUm5NstoBfAmhCPCzhn362CX2IklaPrzQRtCedzrpPa7Ff/OVbNMUSJJFqx5+4yp07NmbQ==" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } }, - "fast-diff": { + "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } }, - "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "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==", + "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" + } + }, + "create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", "dev": true, "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "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": { - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "picomatch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", - "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", - "dev": true + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, - "fast-json-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", - "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "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 - }, - "fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" - }, - "fast-sort": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-1.6.0.tgz", - "integrity": "sha512-sjV6dxWdHs14cef7GzJgCWSOagw57cUBYMey+seWeOsU0HgMf2g4Wkdflv65X/8E4UWptUcq9EZ3YqSXUnUy9Q==" - }, - "fastq": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz", - "integrity": "sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw==", + "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": { - "reusify": "^1.0.4" + "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" } }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" } }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "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 }, - "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", - "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==", + "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": { - "flat-cache": "^2.0.1" + "postcss": "^7.0.1", + "timsort": "^0.3.0" } }, - "file-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", - "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", "dev": true, "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", - "schema-utils": "^2.0.0" + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" }, "dependencies": { "ajv": { @@ -8826,6 +9382,23 @@ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, "schema-utils": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", @@ -8835,1681 +9408,2031 @@ "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } + }, + "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" + } } } }, - "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==" - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", "dev": true, "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "css": "^2.0.0" } }, - "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==", + "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": { - "to-regex-range": "^5.0.1" + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "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" - } - } - } + "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 }, - "find-cache-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "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": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", - "dev": true, - "requires": { - "semver": "^6.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" - } - }, - "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 - }, - "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" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "mdn-data": "2.0.4", + "source-map": "^0.6.1" } }, - "find-up": { + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true }, - "find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "dev": true, "requires": { - "semver-regex": "^2.0.0" + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" } }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", "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" - } - } + "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.2", + "postcss-unique-selectors": "^4.0.1" } }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "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 }, - "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==", + "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": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "postcss": "^7.0.0" } }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.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 }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, "requires": { - "is-callable": "^1.1.3" + "css-tree": "1.0.0-alpha.37" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "csstype": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", + "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==", "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "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": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "assert-plus": "^1.0.0" } }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "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, + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "dayjs": { + "version": "1.8.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", + "integrity": "sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "map-cache": "^0.2.2" + "ms": "2.0.0" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "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 + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, + "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": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "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" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "deep-object-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.0.tgz", + "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", + "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": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "dev": true, "requires": { - "minipass": "^3.0.0" + "execa": "^1.0.0", + "ip-regex": "^2.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=", + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "strip-bom": "^3.0.0" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "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==" + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "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 + "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==", + "requires": { + "object-keys": "^1.0.12" + } }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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, - "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "is-fullwidth-code-point": { + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "kind-of": "^6.0.0" } }, - "string-width": { + "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-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "genfun": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", - "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "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 + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, - "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==", + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, "requires": { - "pump": "^3.0.0" + "@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 + } + } + } } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "dequal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-1.0.0.tgz", + "integrity": "sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw==" + }, + "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": { - "assert-plus": "^1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "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" - } + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "address": "^1.0.1", + "debug": "^2.6.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "ms": "2.0.0" } } } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globalyzer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz", - "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==" - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", "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 - } + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" } }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" - }, - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" - }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", "dev": true }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "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": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^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==", + "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": { - "function-bind": "^1.1.1" + "path-type": "^3.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "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.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "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": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } + "buffer-indexof": "^1.0.0" } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { + "doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "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, - "optional": true + "requires": { + "utila": "~0.4" + } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.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=", + "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": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", "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" - } - } - } - }, - "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.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "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": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "domelementtype": "1" } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "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": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "dom-serializer": "0", + "domelementtype": "1" } }, - "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==", + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", "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=", + "dotenv-defaults": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", + "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", + "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "dotenv": "^6.2.0" } }, - "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "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 + }, + "dotenv-webpack": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz", + "integrity": "sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "dotenv-defaults": "^1.0.2" } }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "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", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.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 + "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" + } }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "ecurve": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", + "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", + "requires": { + "bigi": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "electron-to-chromium": { + "version": "1.3.345", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz", + "integrity": "sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg==", "dev": true }, - "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", "dev": true }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "element-resize-detector": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.1.tgz", + "integrity": "sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "batch-processor": "1.0.0" + } + }, + "elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", + "requires": { + "sax": "1.1.4" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "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" - } + "sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=" } } }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "elliptic": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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 }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "emotion-theming": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.0.27.tgz", + "integrity": "sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.5", + "hoist-non-react-statics": "^3.3.0" } }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "iconv-lite": "~0.4.13" } }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "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==", "requires": { - "agent-base": "4", - "debug": "3.1.0" + "once": "^1.4.0" } }, - "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, + "endent": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/endent/-/endent-1.3.0.tgz", + "integrity": "sha512-C8AryqPPwtydqcpO5AF6k9Bd1EpFkQtvsefJqS3y3n8TG13Jy63MascDxTOULZYqrUde+dK6BjNc6LIMr3iI2A==", "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.3" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "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 + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.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 - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", "dev": true, "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "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 + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } } }, - "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 - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", "dev": true, "requires": { - "ms": "^2.0.0" + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" } }, - "husky": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.3.tgz", - "integrity": "sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ==", + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { - "chalk": "^3.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.5.1", - "cosmiconfig": "^6.0.0", - "find-versions": "^3.2.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "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" + } + }, + "es-abstract": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", + "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "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==", + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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==", + "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": { - "color-name": "~1.1.4" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "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==", + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "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" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.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" - } - }, - "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" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "has": "^1.0.3" } }, - "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==", + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, - "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==", + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", "dev": true, "requires": { - "find-up": "^4.0.0" + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, - "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 - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } } } }, - "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, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "es5-shim": { + "version": "4.5.13", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz", + "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw==", "dev": true }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "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 + "es6-promise-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/es6-promise-plugin/-/es6-promise-plugin-4.2.2.tgz", + "integrity": "sha512-uoA4aVplXI9oqUYJFBAVRwAqIN9/n9JgrTAUGX3qPbnSZVE5yY1+6/MsoN5f4xsaPO62WjPHOdtts6okMN6tNA==" }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "minimatch": "^3.0.4" + "es6-promise": "^4.0.3" } }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true + "es6-shim": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.5.tgz", + "integrity": "sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg==", + "dev": true }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "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=" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { - "import-from": "^2.1.0" + "@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 + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "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 + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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 + }, + "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 + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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" + } + } } }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "eslint-config-prettier": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", + "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "get-stdin": "^6.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=", + "eslint-plugin-html": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz", + "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "htmlparser2": "^3.10.1" } }, - "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==", + "eslint-plugin-prettier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "prettier-linter-helpers": "^1.0.0" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "eslint-plugin-simple-import-sort": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.2.tgz", + "integrity": "sha512-YPEGo7DbMANQ01d2OXlREcaHRszsW8LoUQ9mIjI7gXSdwpnWKfogtzL6FiBfDf1teCBx+AdcjcfDXSKpmhTWeA==", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "eslint-plugin-unused-imports": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-0.1.2.tgz", + "integrity": "sha512-uribBu/L3/+XFGY3ticZTcWxkcrhISphjrfiKkZ/gxFa3u0EIPfc4MNtwrk6gcg7Mhs+InDxXoUxd5HEZtaw3w==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^2.3.0", + "eslint": "^6.3.0", + "eslint-rule-composer": "^0.3.0", + "requireindex": "~1.1.0", + "typescript": "^3.6.3" + } + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", "dev": true }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "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" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "espree": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.0.tgz", + "integrity": "sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA==", + "dev": true, + "requires": { + "acorn": "^7.1.0", + "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 }, - "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==", + "esquery": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", + "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "original": "^1.0.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "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==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "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" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, - "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "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": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "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": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "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 + "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" + } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "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": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "is-descriptor": "^0.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==", + "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": { - "ansi-regex": "^4.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 - } + "is-extendable": "^0.1.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" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dev": true, "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "ionicons": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.1.tgz", - "integrity": "sha512-P9GHr7pgCJcG211W0wute49NZ9AvJZvFJf4OwYybakjX6j7tu0q5t5HNWn9bcb9YjI7SxBblJg8iqQ1Yb59DXw==" - }, - "ios-sim": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/ios-sim/-/ios-sim-8.0.2.tgz", - "integrity": "sha512-P7nEG771bfd+JoMRjnis1gpZOkjTUUxu+4Ek1Z+eoaEEoT9byllU9pxfQ8Df7hL3gSkIQxNwTSLhos2I8tWUQA==", - "requires": { - "bplist-parser": "^0.0.6", - "nopt": "1.0.9", - "plist": "^3.0.1", - "simctl": "^2" + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "dependencies": { - "bplist-parser": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", - "integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk=" + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true }, - "nopt": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz", - "integrity": "sha1-O8DXy6e/sNWmdtvtfA6+SKT9RU4=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { - "abbrev": "1" + "ms": "2.0.0" } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "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 } } }, - "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.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "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=", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "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=", + "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": { - "kind-of": "^3.0.2" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "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 - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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-buffer": "^1.1.5" + "is-plain-object": "^2.0.4" } } } }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, - "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-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==", + "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": { - "binary-extensions": "^2.0.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, - "is-buffer": { + "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "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-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "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": { - "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 + "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" + } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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-buffer": "^1.1.5" + "is-extendable": "^0.1.0" + } + }, + "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-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-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-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "fast-copy": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.0.5.tgz", + "integrity": "sha512-KVLihIS41LzwuXJFdUm5NstoBfAmhCPCzhn362CX2IklaPrzQRtCedzrpPa7Ff/OVbNMUSJJFqx5+4yp07NmbQ==" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "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": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" }, "dependencies": { - "kind-of": { + "glob-parent": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", "dev": true } } }, - "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 + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" }, - "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 + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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 }, - "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=" + "fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "fast-sort": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-1.6.0.tgz", + "integrity": "sha512-sjV6dxWdHs14cef7GzJgCWSOagw57cUBYMey+seWeOsU0HgMf2g4Wkdflv65X/8E4UWptUcq9EZ3YqSXUnUy9Q==" + }, + "fastq": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz", + "integrity": "sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "reusify": "^1.0.4" } }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true + "fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "dev": true, + "requires": { + "format": "^0.2.0" + } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", "dev": true }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "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": { - "symbol-observable": "^1.1.0" + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", + "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" }, "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } } } }, - "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==", + "file-system-cache": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", + "integrity": "sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08=", "dev": true, "requires": { - "is-path-inside": "^2.1.0" + "bluebird": "^3.3.5", + "fs-extra": "^0.30.0", + "ramda": "^0.21.0" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } } }, - "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==", + "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==" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { - "path-is-inside": "^1.0.2" + "glob": "^7.0.3", + "minimatch": "^3.0.3" } }, - "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=", + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", "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==", + "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": { - "isobject": "^3.0.1" + "to-regex-range": "^5.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "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-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, - "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-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { - "buffer-alloc": "^1.2.0" + "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" + } + } } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "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 - }, - "istanbul-api": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.7.tgz", - "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==", + "find-cache-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", "dev": true, "requires": { - "async": "^2.6.2", - "compare-versions": "^3.4.0", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.5", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true + "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" + } }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "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" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", "semver": "^6.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" + } + }, + "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 + }, + "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" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -10518,4085 +11441,7973 @@ } } }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true }, - "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "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==", "requires": { - "append-transform": "^1.0.0" + "locate-path": "^3.0.0" } }, - "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", "dev": true, "requires": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "semver-regex": "^2.0.0" } }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "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": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "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==", + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "glob": "^7.1.3" } } } }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "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": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "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 - } + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "dev": true, + "focus-lock": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.6.6.tgz", + "integrity": "sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw==", + "dev": true + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { - "html-escaper": "^2.0.0" + "debug": "=3.1.0" } }, - "jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", - "dev": true, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.8.0" - }, - "dependencies": { - "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", - "dev": true - } + "is-callable": "^1.1.3" } }, - "jasmine-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", - "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "jasmine-spec-reporter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", - "dev": true, - "requires": { - "colors": "1.1.2" - } - }, - "jasminewd2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" }, "dependencies": { - "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" - } + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, - "jquery": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", - "dev": true - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "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==" - }, - "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-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", "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==" - }, - "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=", + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "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 + "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" + } }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "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": { - "minimist": "^1.2.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jszip": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", - "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "minipass": "^3.0.0" } }, - "karma": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", - "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "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": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "braces": "^3.0.2", - "chokidar": "^3.0.0", - "colors": "^1.1.0", - "connect": "^3.6.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "flatted": "^2.0.0", - "glob": "^7.1.1", "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^4.17.14", - "log4js": "^4.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", - "socket.io": "2.1.1", - "source-map": "^0.6.1", - "tmp": "0.0.33", - "useragent": "2.3.0" - }, - "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - } + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, - "karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", - "dev": true, - "requires": { - "which": "^1.2.1" - } + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "karma-coverage-istanbul-reporter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", - "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "dev": true, - "requires": { - "istanbul-api": "^2.1.6", - "minimatch": "^3.0.4" - } + "optional": true }, - "karma-jasmine": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", - "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", - "dev": true, - "requires": { - "jasmine-core": "^3.5.0" - } + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "karma-sabarivka-reporter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-sabarivka-reporter/-/karma-sabarivka-reporter-3.1.0.tgz", - "integrity": "sha512-hn53lbVObUEHOveyaz69SswBd40MTm7VrkY7McimQzhr0HjA0vdTVIP5cfssUg7g6aunusKNyhe8+G1RqcrtOA==", + "function.prototype.name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.2.tgz", + "integrity": "sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg==", "dev": true, "requires": { - "globby": "^11.0.0", - "istanbul-lib-instrument": "^4.0.1", - "predicates": "^2.0.3", - "typescript": "^3.8.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "functions-have-names": "^1.2.0" }, "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { - "path-type": "^4.0.0" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, - "globby": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", - "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "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": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } }, - "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } } } }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "karma-spec-reporter": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz", - "integrity": "sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=", - "dev": true, - "requires": { - "colors": "^1.1.2" - } - }, - "killable": { + "functional-red-black-tree": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "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==", + "functions-have-names": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.1.tgz", + "integrity": "sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } + "fuse.js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz", + "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==", + "dev": true }, - "less": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", - "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "clone": "^2.1.2", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "mime": "^1.4.1", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", - "request": "^2.83.0", - "source-map": "~0.6.0" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } } }, - "less-loader": { + "genfun": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", - "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "loader-utils": "^1.1.0", - "pify": "^4.0.1" - } + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "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==", "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "pump": "^3.0.0" } }, - "license-webpack-plugin": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", - "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==", + "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": { - "@types/webpack-sources": "^0.1.5", - "webpack-sources": "^1.2.0" + "assert-plus": "^1.0.0" } }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { - "immediate": "~3.0.5" + "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" } }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "lint-staged": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.8.tgz", - "integrity": "sha512-Oa9eS4DJqvQMVdywXfEor6F4vP+21fPHF8LUXgBbVWUSWBddjqsvO6Bv1LwMChmgQZZqwUvgJSHlu8HFHAPZmA==", + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "chalk": "^3.0.0", - "commander": "^4.0.1", - "cosmiconfig": "^6.0.0", - "debug": "^4.1.1", - "dedent": "^0.7.0", - "execa": "^3.4.0", - "listr": "^0.14.3", - "log-symbols": "^3.0.0", - "micromatch": "^4.0.2", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "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==", + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "color-name": "~1.1.4" + "is-glob": "^2.0.0" } }, - "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==", - "dev": true - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "ms": "^2.1.1" + "is-extglob": "^1.0.0" } - }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + } + } + }, + "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": { - "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.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "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 - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "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 - }, - "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 - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "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 - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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" + "is-extglob": "^2.1.0" } } } }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "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": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" + "min-document": "^2.19.0", + "process": "^0.11.10" } }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "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" + } }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "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": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" + "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==" + }, + "globalthis": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", + "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globalyzer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz", + "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==" + }, + "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": { - "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" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "^1.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=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", "dev": true, + "optional": true, "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "dependencies": { - "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" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "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" - } - } + "delegate": "^3.1.2" } }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", "dev": true }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "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": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "duplexer": "^0.1.1", + "pify": "^4.0.1" } }, - "loady": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/loady/-/loady-0.0.1.tgz", - "integrity": "sha512-PW5Z13Jd0v6ZcA1P6ZVUc3EV8BJwQuAiwUvvT6VQGHoaZ1d/tu7r1QZctuKfQqwy9SFBWeAGfcIdLxhp7ZW3Rw==" + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, - "localforage": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.1.tgz", - "integrity": "sha1-5JJ+BCMCuGTbMPMhHxO1xvDell0=", + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "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.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { - "lie": "3.1.1" - }, - "dependencies": { - "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "requires": { - "immediate": "~3.0.5" - } - } + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, - "localforage-cordovasqlitedriver": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/localforage-cordovasqlitedriver/-/localforage-cordovasqlitedriver-1.7.0.tgz", - "integrity": "sha1-i5OVd1nuaI06WNW6fAR39sy1ODg=", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "localforage": ">=1.5.0" + "function-bind": "^1.1.1" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "ansi-regex": "^2.0.0" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "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.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "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=", + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", "dev": true }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" - }, - "lodash.sumby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.sumby/-/lodash.sumby-4.6.0.tgz", - "integrity": "sha1-fYdzfdshbaL35efNLdnEA6eIc0Y=" + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "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": { - "chalk": "^2.4.2" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "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": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "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 }, - "ansi-regex": { + "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "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=", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "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" + "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" + } + } } }, - "strip-ansi": { + "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" + "is-buffer": "^1.1.5" } } } }, - "log4js": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", - "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hast-util-parse-selector": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz", + "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==", + "dev": true + }, + "hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", "dev": true, "requires": { - "date-format": "^2.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.0", - "rfdc": "^1.1.4", - "streamroller": "^1.0.6" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - } + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" } }, - "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", - "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "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 }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + "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 }, - "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, + "highlight.js": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", + "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==", + "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=", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "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==", + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dev": true, "requires": { - "yallist": "^3.0.2" + "react-is": "^16.7.0" } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "lru-cache": "^5.1.1" } }, - "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==", + "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": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "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 }, - "make-fetch-happen": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", - "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "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-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "dev": true + }, + "html-minifier-terser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz", + "integrity": "sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g==", "dev": true, "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^12.0.0", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" }, "dependencies": { - "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "terser": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", + "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", "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" + "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 + } } - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + } + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.14", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.14.tgz", + "integrity": "sha512-gdThA8oCH7PbHMbezNW5LD+hjxXTzwhfi4XFDKKo5Gs0BR1IhVChEZN1ub4YEKQBmOYasdnCGGPEOFggdm9hNA==", + "dev": true, + "requires": { + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "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": { - "figgy-pudding": "^3.5.1" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "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" + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", "dev": true }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "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.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, "requires": { - "p-defer": "^1.0.0" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "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=", + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" } }, - "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==", + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "agent-base": "4", + "debug": "3.1.0" } }, - "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 - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "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": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" } }, - "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==", + "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": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "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 }, - "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==", + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { - "source-map": "^0.6.1" + "agent-base": "^4.3.0", + "debug": "^3.1.0" } }, - "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.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "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 }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "husky": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.3.tgz", + "integrity": "sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ==", "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" + "chalk": "^3.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.5.1", + "cosmiconfig": "^6.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "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" - } - } + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "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" - } - } + "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" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "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" + } + }, + "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==", "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "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" - } - } + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, - "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=", + "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": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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 + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.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" + } + }, + "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" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "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-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "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" + } + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "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": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "safer-buffer": ">= 2.1.2 < 3" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "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.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, "requires": { - "mime-db": "1.40.0" + "minimatch": "^3.0.4" } }, - "mimic-fn": { + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==", + "dev": true + }, + "import-cwd": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } }, - "mini-css-extract-plugin": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", - "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "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": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "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==" - }, - "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=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "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": { - "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 - } + "resolve-from": "^3.0.0" } }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "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": { - "minipass": "^3.0.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^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 }, - "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", - "dev": true, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "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 + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "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=", "requires": { - "minipass": "^3.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", "dev": true, "requires": { - "minipass": "^2.9.0" + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" }, "dependencies": { - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.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" + }, + "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 + } } } } }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "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": { - "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" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.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==", + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" }, "dependencies": { - "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==", + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + }, + "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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } } } }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, - "moment-timezone": { - "version": "0.5.28", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz", - "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", - "requires": { - "moment": ">= 2.9.0" - } + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "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" + "loose-envify": "^1.0.0" } }, - "ms": { + "invert-kv": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, + "ionicons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.0.1.tgz", + "integrity": "sha512-P9GHr7pgCJcG211W0wute49NZ9AvJZvFJf4OwYybakjX6j7tu0q5t5HNWn9bcb9YjI7SxBblJg8iqQ1Yb59DXw==" + }, + "ios-sim": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/ios-sim/-/ios-sim-8.0.2.tgz", + "integrity": "sha512-P7nEG771bfd+JoMRjnis1gpZOkjTUUxu+4Ek1Z+eoaEEoT9byllU9pxfQ8Df7hL3gSkIQxNwTSLhos2I8tWUQA==", "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" + "bplist-parser": "^0.0.6", + "nopt": "1.0.9", + "plist": "^3.0.1", + "simctl": "^2" + }, + "dependencies": { + "bplist-parser": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", + "integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk=" + }, + "nopt": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz", + "integrity": "sha1-O8DXy6e/sNWmdtvtfA6+SKT9RU4=", + "requires": { + "abbrev": "1" + } + } } }, - "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=", + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "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 }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "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": "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": { - "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" + "kind-of": "^3.0.2" + }, + "dependencies": { + "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 + }, + "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" + } + } } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "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 + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, - "ng-lint-staged": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ng-lint-staged/-/ng-lint-staged-0.1.6.tgz", - "integrity": "sha512-uzgFhVDVTRko5KVUSHOlMD1NdLp26BanuzKI7+fAKWhrEJ892tyBh2DMlrZUHqGzmizdmZAZX2UooP/HlLRd7Q==", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "ng2-charts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-2.3.0.tgz", - "integrity": "sha512-D5K7OqF0m5lOBYvNOsraoEo4OPHja9zfGNj+HWy2nUcP0LP2s+Y/QaQlkG/1rHlwXq9HPm8rLxzSutA0eLHxGQ==", - "requires": { - "@types/chart.js": "^2.7.48", - "lodash": "^4.17.11", - "tslib": "^1.9.0" - } - }, - "ngx-filter-pipe": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ngx-filter-pipe/-/ngx-filter-pipe-2.1.2.tgz", - "integrity": "sha512-YEXvjEw+Mpg5jL+yqSnFWKiY0P9XtRAJ2Dk3n9sC4stnsuhPzPRwIkF58aBvqYfoi3vrb7KQFImgbmfFAQqnFw==", + "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": { - "tslib": "^1.7.1" + "binary-extensions": "^2.0.0" } }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", - "dev": true, - "requires": { - "lodash.toarray": "^4.4.0" - } + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "dev": true + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, - "node-fetch-npm": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.3.tgz", - "integrity": "sha512-DgwoKEsqLnFZtk3ap7GWBHcHwnUhsNmQqEDcdjfQ8GofLEFJ081NAd4Uin3R7RFZBWVJCwHISw1oaEqPgSLloA==", + "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": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" + "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" } }, - "node-forge": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", - "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==" - }, - "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==", + "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": { - "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" + "kind-of": "^3.0.2" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "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 + }, + "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" + } } } }, - "node-releases": { - "version": "1.1.48", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.48.tgz", - "integrity": "sha512-Hr8BbmUl1ujAST0K0snItzEA5zkJTQup8VNTKNfT6Zw8vTJkIiagUPNfxHmgDOyfFYNfKAul40sD0UEYTvwebw==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true }, - "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==", + "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": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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 } } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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 }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "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 }, - "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==", + "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 }, - "normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "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=" + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", "dev": true }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "npm-normalize-package-bin": "^1.0.1" + "is-extglob": "^2.1.1" } }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, - "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, + "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 + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" + "symbol-observable": "^1.1.0" }, "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true } } }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dev": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } + "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 }, - "npm-pick-manifest": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", - "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "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": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "is-path-inside": "^2.1.0" } }, - "npm-registry-client": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", - "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "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": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } + "path-is-inside": "^1.0.2" } }, - "npm-registry-fetch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", - "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", + "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 + }, + "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": { - "JSONStream": "^1.3.4", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0", - "safe-buffer": "^5.2.0" + "isobject": "^3.0.1" } }, - "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=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "path-key": "^2.0.0" + "has": "^1.0.1" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "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-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "dev": true + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "dev": true, - "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "html-comment-regex": "^1.1.0" } }, - "nth-check": { + "is-symbol": { "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, + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", "requires": { - "boolbase": "~1.0.0" + "has-symbols": "^1.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "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 }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", "dev": true }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", "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-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 - }, - "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" - } - } + "buffer-alloc": "^1.2.0" } }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "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 }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "istanbul-api": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.7.tgz", + "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==", "dev": true, "requires": { - "isobject": "^3.0.0" + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.5", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.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 + } } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "append-transform": "^1.0.0" } }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "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": "^1.0.3" + "has-flag": "^3.0.0" } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "ms": "^2.1.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "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 } } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "isobject": "^3.0.1" + "html-escaper": "^2.0.0" } }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" }, "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.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" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", "dev": true - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } } } }, - "objectorarray": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", - "integrity": "sha512-kPoflSYkAf/Onvjr4ZLaq37vDuOXjVzfwLCRuORRzYGdXkHa/vacPT0RgR+KmtkwOYFcxTMM62BRrZk8GGKHjw==", + "jasmine-core": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, "requires": { - "tape": "^4.8.0" + "colors": "1.1.2" } }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", "dev": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "ee-first": "1.1.1" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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" + } + } } }, - "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==", + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, "requires": { - "wrappy": "1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "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==" + }, + "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-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "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==" + }, + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "minimist": "^1.2.0" } }, - "open": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", - "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", - "dev": true, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "is-wsl": "^2.1.0" + "graceful-fs": "^4.1.6" } }, - "opencollective-postinstall": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "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==", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "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 - } + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", + "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.14", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" }, "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true } } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "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" + "which": "^1.2.1" } }, - "ora": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", - "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "karma-coverage-istanbul-reporter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", + "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", "dev": true, "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", - "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", + "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", + "dev": true, + "requires": { + "jasmine-core": "^3.5.0" + } + }, + "karma-sabarivka-reporter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-sabarivka-reporter/-/karma-sabarivka-reporter-3.1.0.tgz", + "integrity": "sha512-hn53lbVObUEHOveyaz69SswBd40MTm7VrkY7McimQzhr0HjA0vdTVIP5cfssUg7g6aunusKNyhe8+G1RqcrtOA==", + "dev": true, + "requires": { + "globby": "^11.0.0", + "istanbul-lib-instrument": "^4.0.1", + "predicates": "^2.0.3", + "typescript": "^3.8.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==", + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "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==", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "path-type": "^4.0.0" + } + }, + "globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true } } }, - "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==", + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, "requires": { - "url-parse": "^1.4.3" + "source-map-support": "^0.5.5" } }, - "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=" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "karma-spec-reporter": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz", + "integrity": "sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=", + "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "colors": "^1.1.2" } }, - "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=" + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "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 + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "graceful-fs": "^4.1.9" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "lazy-universal-dotenv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", + "integrity": "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==", + "dev": true, "requires": { - "p-try": "^2.0.0" + "@babel/runtime": "^7.5.0", + "app-root-dir": "^1.0.2", + "core-js": "^3.0.4", + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0" + }, + "dependencies": { + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + } } }, - "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==", + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "requires": { - "p-limit": "^2.0.0" + "invert-kv": "^2.0.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==" - }, - "pacote": { - "version": "9.5.8", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz", - "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==", + "less": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", + "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", "dev": true, "requires": { - "bluebird": "^3.5.3", - "cacache": "^12.0.2", - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^3.0.0", - "npm-registry-fetch": "^4.0.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", - "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.6.0", - "ssri": "^6.0.1", - "tar": "^4.4.10", - "unique-filename": "^1.1.1", - "which": "^1.3.1" - }, - "dependencies": { - "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "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" - } - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - } + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" } }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", "dev": true, "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" } }, - "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==", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "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 - } + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "license-webpack-plugin": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", + "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "immediate": "~3.0.5" } }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "lint-staged": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.8.tgz", + "integrity": "sha512-Oa9eS4DJqvQMVdywXfEor6F4vP+21fPHF8LUXgBbVWUSWBddjqsvO6Bv1LwMChmgQZZqwUvgJSHlu8HFHAPZmA==", "dev": true, "requires": { - "better-assert": "~1.0.0" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "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=" - }, - "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=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "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" + "chalk": "^3.0.0", + "commander": "^4.0.1", + "cosmiconfig": "^6.0.0", + "debug": "^4.1.1", + "dedent": "^0.7.0", + "execa": "^3.4.0", + "listr": "^0.14.3", + "log-symbols": "^3.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "^3.3.0" }, "dependencies": { - "pify": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { "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.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "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 - }, - "picomatch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", - "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", - "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": "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" - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - }, - "dependencies": { - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - } - } - }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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" + } + }, + "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==", "dev": true - } - } - }, - "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.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", - "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.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==", + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, - "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==", + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } - } - } - }, - "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", - "dev": true - }, - "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==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "ms": "^2.1.1" } - } - } - }, - "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" - } - }, - "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" - } - }, - "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-functions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", - "integrity": "sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=", - "dev": true, - "requires": { - "glob": "^7.1.2", - "object-assign": "^4.1.1", - "postcss": "^6.0.9", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + }, + "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": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "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" } - } - } - }, - "postcss-import": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", - "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "postcss-value-parser": "^3.2.3", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", - "integrity": "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1", - "postcss": "^7.0.18" - }, - "dependencies": { - "postcss": { - "version": "7.0.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", - "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "pump": "^3.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==", + "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 + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } - } - } - }, - "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", - "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" - } - }, - "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" - } - }, - "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": { - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, "requires": { - "is-obj": "^2.0.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "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 }, - "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==", + "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": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "path-key": "^3.0.0" } - } - } - }, - "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" - } - }, - "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" + }, + "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 + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "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 + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "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 + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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" + } + } } }, - "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==", + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", "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" + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" } }, - "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==", + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" }, "dependencies": { - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "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": { - "is-obj": "^2.0.0" + "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" } }, - "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 + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } }, - "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==", + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "chalk": "^1.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 } } }, - "postcss-nested": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.1.tgz", - "integrity": "sha512-AMayXX8tS0HCp4O4lolp4ygj9wBn32DJWXvG6gCv+ZvJrEa00GUxJcJEEzMh87BIe6FrWdYkpR2cuyqHKrxmXw==", + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", "dev": true, "requires": { - "postcss": "^7.0.21", - "postcss-selector-parser": "^6.0.2" + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz", - "integrity": "sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ==", + "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": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "restore-cursor": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "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 }, - "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==", + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "has-flag": "^3.0.0" + "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" } } } }, - "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==", + "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.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { - "postcss": "^7.0.0" + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" } }, - "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" - } + "loady": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/loady/-/loady-0.0.1.tgz", + "integrity": "sha512-PW5Z13Jd0v6ZcA1P6ZVUc3EV8BJwQuAiwUvvT6VQGHoaZ1d/tu7r1QZctuKfQqwy9SFBWeAGfcIdLxhp7ZW3Rw==" }, - "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, + "localforage": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.1.tgz", + "integrity": "sha1-5JJ+BCMCuGTbMPMhHxO1xvDell0=", "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "lie": "3.1.1" + }, + "dependencies": { + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "~3.0.5" + } + } } }, - "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, + "localforage-cordovasqlitedriver": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/localforage-cordovasqlitedriver/-/localforage-cordovasqlitedriver-1.7.0.tgz", + "integrity": "sha1-i5OVd1nuaI06WNW6fAR39sy1ODg=", "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" + "localforage": ">=1.5.0" } }, - "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, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "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" - } + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "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" - } + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "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" - } + "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 }, - "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" - } + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, - "postcss-ordered-values": { + "lodash.memoize": { "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" - } + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "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" - } + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" }, - "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" - } + "lodash.sumby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.sumby/-/lodash.sumby-4.6.0.tgz", + "integrity": "sha1-fYdzfdshbaL35efNLdnEA6eIc0Y=" }, - "postcss-scss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", - "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==", + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "requires": { - "postcss": "^7.0.0" + "chalk": "^2.4.2" } }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", "dev": true, "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" }, "dependencies": { - "cssesc": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true - } - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "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": "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 - }, - "predicates": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/predicates/-/predicates-2.0.3.tgz", - "integrity": "sha512-eL+bhIiWrD+kx/olyYBcAFn258Oo9MTB7iehgBIaflVS8DBLuVtQvOpwgWwlya6YFUIiKaVoA3HaBNJuVNcyIA==", - "dev": true, - "requires": { - "array-find": "^1.0.0" - } - }, - "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" + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } } }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" }, "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==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 } } }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "loglevel": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", "dev": true }, - "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 + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "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" + } }, - "process-nextick-args": { + "lower-case": { "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": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", "dev": true, - "optional": true, "requires": { - "asap": "~2.0.3" + "tslib": "^1.10.0" } }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise-retry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", - "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "lowlight": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.11.0.tgz", + "integrity": "sha512-xrGGN6XLL7MbTMdPD6NfWPwY43SNkjf/d0mecSx/CW36fUZTjRHEq0/Cdug3TWKtRXLWi7iMl1eP0olYxj/a4A==", "dev": true, "requires": { - "err-code": "^1.0.0", - "retry": "^0.10.0" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", - "dev": true - } + "fault": "^1.0.2", + "highlight.js": "~9.13.0" } }, - "properties-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz", - "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=", + "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": { - "string.prototype.codepointat": "^0.2.0" + "yallist": "^3.0.2" } }, - "protoduck": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", - "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { - "genfun": "^5.0.0" + "sourcemap-codec": "^1.4.4" } }, - "protractor": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", - "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "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": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "optimist": "~0.6.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.0.6" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "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" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "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.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "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==", + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "dev": true, "requires": { - "source-map": "^0.5.6" + "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" } }, - "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 - }, - "webdriver-manager": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", - "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "adm-zip": "^0.4.9", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" + "figgy-pudding": "^3.5.1" } } } }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "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 - } + "p-defer": "^1.0.0" } }, - "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=", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "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": { - "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" + "object-visit": "^1.0.0" } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "markdown-to-jsx": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.0.tgz", + "integrity": "sha512-RH7LCJQ4RFmPqVeZEesKaO1biRzB/k4utoofmTCp3Eiw6D7qfvK8fzZq/2bjEJAtVkfPrM5SMt5APGf2rnaKMg==", + "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "prop-types": "^15.6.2", + "unquote": "^1.1.0" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, + "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==", "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" - } - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=" - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "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 }, - "qrcode-reader": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz", - "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==" + "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 }, - "qrious": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", - "integrity": "sha512-xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==" + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" + } + }, + "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" + } + }, + "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 }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "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": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "source-map": "^0.6.1" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "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 }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", "dev": true }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "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": { - "safe-buffer": "^5.1.0" + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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-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-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" + } + } + } + }, + "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" + } + } } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "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": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, - "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==", + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - } + "mime-db": "1.40.0" } }, - "raw-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz", - "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^2.0.1" - }, - "dependencies": { - "ajv": { + "dom-walk": "^0.1.0" + } + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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==" + }, + "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=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "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==" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "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 + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "moment-timezone": { + "version": "0.5.28", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz", + "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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 + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "ng-lint-staged": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ng-lint-staged/-/ng-lint-staged-0.1.6.tgz", + "integrity": "sha512-uzgFhVDVTRko5KVUSHOlMD1NdLp26BanuzKI7+fAKWhrEJ892tyBh2DMlrZUHqGzmizdmZAZX2UooP/HlLRd7Q==", + "dev": true + }, + "ng2-charts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-2.3.0.tgz", + "integrity": "sha512-D5K7OqF0m5lOBYvNOsraoEo4OPHja9zfGNj+HWy2nUcP0LP2s+Y/QaQlkG/1rHlwXq9HPm8rLxzSutA0eLHxGQ==", + "requires": { + "@types/chart.js": "^2.7.48", + "lodash": "^4.17.11", + "tslib": "^1.9.0" + } + }, + "ngx-filter-pipe": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ngx-filter-pipe/-/ngx-filter-pipe-2.1.2.tgz", + "integrity": "sha512-YEXvjEw+Mpg5jL+yqSnFWKiY0P9XtRAJ2Dk3n9sC4stnsuhPzPRwIkF58aBvqYfoi3vrb7KQFImgbmfFAQqnFw==", + "requires": { + "tslib": "^1.7.1" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dev": true, + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dev": true, + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.3.tgz", + "integrity": "sha512-DgwoKEsqLnFZtk3ap7GWBHcHwnUhsNmQqEDcdjfQ8GofLEFJ081NAd4Uin3R7RFZBWVJCwHISw1oaEqPgSLloA==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", + "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==" + }, + "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": "1.1.48", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.48.tgz", + "integrity": "sha512-Hr8BbmUl1ujAST0K0snItzEA5zkJTQup8VNTKNfT6Zw8vTJkIiagUPNfxHmgDOyfFYNfKAul40sD0UEYTvwebw==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "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": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "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": "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 + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-registry-client": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", + "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "dev": true, + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, + "npm-registry-fetch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", + "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.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=", + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "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" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "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-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "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-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 + }, + "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-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "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.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.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.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "objectorarray": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", + "integrity": "sha512-kPoflSYkAf/Onvjr4ZLaq37vDuOXjVzfwLCRuORRzYGdXkHa/vacPT0RgR+KmtkwOYFcxTMM62BRrZk8GGKHjw==", + "requires": { + "tape": "^4.8.0" + } + }, + "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=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", + "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", + "dev": true, + "requires": { + "is-wsl": "^2.1.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "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 + } + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "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": "4.0.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", + "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.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 + }, + "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=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "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=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.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==", + "requires": { + "p-limit": "^2.0.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==" + }, + "pacote": { + "version": "9.5.8", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz", + "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "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" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "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": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dev": true, + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.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.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "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" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "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=" + }, + "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=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "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.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "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 + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "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": "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" + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + } + } + }, + "pnp-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.2" + } + }, + "polished": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.4.tgz", + "integrity": "sha512-x9PKeExyI9AhWrJP3Q57I1k7GInujjiVBJMPFmycj9hX1yCOo/X9eu9eZwxgOziiXge3WbFQ5XOmkzunOntBSA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.6.3" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 + } + } + }, + "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.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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 + }, + "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" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "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" + } + } + } + }, + "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" + } + }, + "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" + } + }, + "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-flexbugs-fixes": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz", + "integrity": "sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + }, + "dependencies": { + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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" + } + } + } + }, + "postcss-functions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", + "integrity": "sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=", + "dev": true, + "requires": { + "glob": "^7.1.2", + "object-assign": "^4.1.1", + "postcss": "^6.0.9", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", + "integrity": "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1", + "postcss": "^7.0.18" + }, + "dependencies": { + "postcss": { + "version": "7.0.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", + "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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" + } + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "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" + } + }, + "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" + } + }, + "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": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "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 + }, + "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.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + } + } + }, + "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-nested": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.1.tgz", + "integrity": "sha512-AMayXX8tS0HCp4O4lolp4ygj9wBn32DJWXvG6gCv+ZvJrEa00GUxJcJEEzMh87BIe6FrWdYkpR2cuyqHKrxmXw==", + "dev": true, + "requires": { + "postcss": "^7.0.21", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz", + "integrity": "sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "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 + }, + "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" + } + } + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "postcss-scss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", + "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "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 + } + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "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": "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 + }, + "predicates": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/predicates/-/predicates-2.0.3.tgz", + "integrity": "sha512-eL+bhIiWrD+kx/olyYBcAFn258Oo9MTB7iehgBIaflVS8DBLuVtQvOpwgWwlya6YFUIiKaVoA3HaBNJuVNcyIA==", + "dev": true, + "requires": { + "array-find": "^1.0.0" + } + }, + "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-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "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 + } + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "prismjs": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.19.0.tgz", + "integrity": "sha512-IVFtbW9mCWm9eOIaEkNyo2Vl4NnEifis2GQ7/MLRG5TQe6t+4Sj9J5QWI9i3v+SS43uZBlCAOn+zYTVYQcPXJw==", + "dev": true, + "requires": { + "clipboard": "^2.0.0" + } + }, + "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": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "promise.prototype.finally": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz", + "integrity": "sha512-A2HuJWl2opDH0EafgdjwEw7HysI8ff/n4lW4QEVBCUXFk9QeGecBWv0Deph0UmLe3tTNYegz8MOjsVuE6SMoJA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.0", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "properties-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz", + "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=", + "requires": { + "string.prototype.codepointat": "^0.2.0" + } + }, + "property-information": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.4.0.tgz", + "integrity": "sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA==", + "dev": true, + "requires": { + "xtend": "^4.0.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", + "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "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" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "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.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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" + } + }, + "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 + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "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 + } + } + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "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" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "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==" + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=" + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qrcode-reader": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz", + "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==" + }, + "qrious": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", + "integrity": "sha512-xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "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.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "ramda": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", + "integrity": "sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz", + "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "ajv": { "version": "6.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "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" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "react": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.0.tgz", + "integrity": "sha512-TSavZz2iSLkq5/oiE7gnFzmURKZMltmi193rm5HEoUDAXpzT9Kzw6oNZnGoai/4+fUnm7FqS5dwgUL34TujcWQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-clientside-effect": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz", + "integrity": "sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "react-dev-utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.1.0.tgz", + "integrity": "sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.5.5", + "address": "1.1.2", + "browserslist": "4.7.0", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "1.0.5", + "filesize": "3.6.1", + "find-up": "3.0.0", + "fork-ts-checker-webpack-plugin": "1.5.0", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "6.5.0", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^6.3.0", + "pkg-up": "2.0.0", + "react-error-overlay": "^6.0.3", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "sockjs-client": "1.4.0", + "strip-ansi": "5.2.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@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 + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "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 + }, + "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 + }, + "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" + } + }, + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.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" + } + }, + "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" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "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" + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "inquirer": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "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-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-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" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "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" + } + }, + "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 + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "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" + } + }, + "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" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "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" + } + }, + "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" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "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" + } + }, + "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": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } } } }, + "react-dom": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.0.tgz", + "integrity": "sha512-y09d2c4cG220DzdlFkPTnVvGTszVvNpC73v+AaLGLHbkpy3SSgvYq8x0rNwPJ/Rk/CicTNgk0hbHNw1gMEZAXg==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.0" + } + }, + "react-draggable": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.2.0.tgz", + "integrity": "sha512-5wFq//gEoeTYprnd4ze8GrFc+Rbnx+9RkOMR3vk4EbWxj02U6L6T3yrlKeiw4X5CtjD2ma2+b3WujghcXNRzkw==", + "dev": true, + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "react-error-overlay": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.6.tgz", + "integrity": "sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw==", + "dev": true + }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "dev": true + }, + "react-focus-lock": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.2.1.tgz", + "integrity": "sha512-47g0xYcCTZccdzKRGufepY8oZ3W1Qg+2hn6u9SHZ0zUB6uz/4K4xJe7yYFNZ1qT6m+2JDm82F6QgKeBTbjW4PQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.6.6", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.2", + "use-callback-ref": "^1.2.1", + "use-sidecar": "^1.0.1" + } + }, + "react-helmet-async": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.4.tgz", + "integrity": "sha512-KTGHE9sz8N7+fCkZ2a3vzXH9eIkiTNhL2NhKR7XzzQl3WsGlCHh76arauJUIiGdfhjeMp7DY7PkASAmYFXeJYg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.4", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^2.0.4", + "shallowequal": "^1.1.0" + } + }, + "react-hotkeys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0.tgz", + "integrity": "sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q==", + "dev": true, + "requires": { + "prop-types": "^15.6.1" + } + }, "react-is": { "version": "16.13.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==", "dev": true }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, + "react-popper": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", + "integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "create-react-context": "^0.3.0", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-popper-tooltip": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.10.1.tgz", + "integrity": "sha512-cib8bKiyYcrIlHo9zXx81G0XvARfL8Jt+xum709MFCgQa3HTqTi4au3iJ9tm7vi7WU7ngnqbpWkMinBOtwo+IQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.4", + "react-popper": "^1.3.6" + } + }, + "react-sizeme": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.12.tgz", + "integrity": "sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==", + "dev": true, + "requires": { + "element-resize-detector": "^1.2.1", + "invariant": "^2.2.4", + "shallowequal": "^1.1.0", + "throttle-debounce": "^2.1.0" + } + }, + "react-syntax-highlighter": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz", + "integrity": "sha512-kqmpM2OH5OodInbEADKARwccwSQWBfZi0970l5Jhp4h39q9Q65C4frNcnd6uHE5pR00W8pOWj9HDRntj2G4Rww==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.1", + "highlight.js": "~9.13.0", + "lowlight": "~1.11.0", + "prismjs": "^1.8.4", + "refractor": "^2.4.1" + } + }, + "react-textarea-autosize": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz", + "integrity": "sha512-uH3ORCsCa3C6LHxExExhF4jHoXYCQwE5oECmrRsunlspaDAbS4mGKNlWZqjLfInWtFQcf0o1n1jC/NGXFdUBCg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.6.0" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14690,6 +19501,15 @@ "resolve": "^1.1.6" } }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, "reduce-css-calc": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz", @@ -14705,6 +19525,28 @@ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, + "refractor": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.1.tgz", + "integrity": "sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==", + "dev": true, + "requires": { + "hastscript": "^5.0.0", + "parse-entities": "^1.1.2", + "prismjs": "~1.17.0" + }, + "dependencies": { + "prismjs": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", + "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==", + "dev": true, + "requires": { + "clipboard": "^2.0.0" + } + } + } + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -14878,12 +19720,61 @@ } } }, + "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.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -15147,6 +20038,12 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", @@ -15389,6 +20286,16 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "scheduler": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.0.tgz", + "integrity": "sha512-xowbVaTPe9r7y7RUejcK73/j8tt2jfiyTednOvHbA8JoClvMYCp+r8QegLwK/n8zWQAtZb1fFnER4XLBZXrCxA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -16202,6 +21109,13 @@ "safe-buffer": "^5.1.2" } }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "dev": true, + "optional": true + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -16334,6 +21248,33 @@ "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", "dev": true }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -16460,6 +21401,18 @@ "kind-of": "^6.0.2" } }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", + "dev": true + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -16473,11 +21426,106 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, "shelljs": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=" }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -16536,6 +21584,30 @@ } } }, + "simplebar": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-4.2.3.tgz", + "integrity": "sha512-9no0pK7/1y+8/oTF3sy/+kx0PjQ3uk4cYwld5F1CJGk2gx+prRyUq8GRfvcVLq5niYWSozZdX73a2wIr1o9l/g==", + "dev": true, + "requires": { + "can-use-dom": "^0.1.0", + "core-js": "^3.0.1", + "lodash.debounce": "^4.0.8", + "lodash.memoize": "^4.1.2", + "lodash.throttle": "^4.1.1", + "resize-observer-polyfill": "^1.5.1" + } + }, + "simplebar-react": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-1.2.3.tgz", + "integrity": "sha512-1EOWJzFC7eqHUp1igD1/tb8GBv5aPQA5ZMvpeDnVkpNJ3jAuvmrL2kir3HuijlxhG7njvw9ssxjjBa89E5DrJg==", + "dev": true, + "requires": { + "prop-types": "^15.6.1", + "simplebar": "^4.2.3" + } + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -16918,6 +21990,12 @@ "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", "dev": true }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -17106,6 +22184,12 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "store2": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.10.0.tgz", + "integrity": "sha512-tWEpK0snS2RPUq1i3R6OahfJNjWCQYNxq0+by1amCSuw0mXtymJpzmZIeYpA1UAa+7B0grCpNYIbDcd7AgTbFg==", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -17165,87 +22249,358 @@ "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", "dev": true, "requires": { - "async": "^2.6.2", - "date-format": "^2.0.0", - "debug": "^3.2.6", - "fs-extra": "^7.0.1", - "lodash": "^4.17.14" + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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" + } + }, + "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 + } + } + }, + "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-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "string.prototype.padstart": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz", + "integrity": "sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "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": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "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-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } } } }, - "string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, "string.prototype.trim": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", @@ -17447,51 +22802,140 @@ } } }, - "stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "when": "~3.6.x" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "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" - } - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" - }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "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" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "symbol.prototype.description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.2.tgz", + "integrity": "sha512-2CW5SU4/Ki1cYOOHcL2cXK4rxSg5hCU1TwZ7X4euKhV9VnfqKslh7T6/UyKkubA8cq2tOmsOv7m3ZUmQslBRuw==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.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" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -17796,6 +23240,51 @@ } } }, + "telejson": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-3.3.0.tgz", + "integrity": "sha512-er08AylQ+LEbDLp1GRezORZu5wKOHaBczF6oYJtgC3Idv10qZ8A3p6ffT+J5BzDKkV9MqBvu8HAKiIIOp6KJ2w==", + "dev": true, + "requires": { + "@types/is-function": "^1.0.0", + "global": "^4.4.0", + "is-function": "^1.0.1", + "is-regex": "^1.0.4", + "is-symbol": "^1.0.3", + "isobject": "^4.0.0", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, "terser": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz", @@ -17963,6 +23452,12 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -17999,6 +23494,13 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "dev": true, + "optional": true + }, "tiny-glob": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.6.tgz", @@ -18093,6 +23595,12 @@ "is-number": "^7.0.0" } }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", + "dev": true + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -18128,6 +23636,43 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "ts-dedent": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-1.1.1.tgz", + "integrity": "sha512-UGTRZu1evMw4uTPyYF66/KFd22XiU+jMaIuHrkIHQ2GivAXVlLV0v/vHrpOuTRf9BmpNHi/SO7Vd0rLu0y57jg==", + "dev": true + }, + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "ts-node": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz", @@ -18141,6 +23686,35 @@ "yn": "3.1.1" } }, + "ts-pnp": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", + "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, "tslib": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", @@ -18230,6 +23804,12 @@ "mime-types": "~2.1.24" } }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -18266,6 +23846,12 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -18461,6 +24047,53 @@ } } }, + "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" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "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" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, "url-parse": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", @@ -18483,6 +24116,22 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "use-callback-ref": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.2.1.tgz", + "integrity": "sha512-C3nvxh0ZpaOxs9RCnWwAJ+7bJPwQI8LHF71LzbQ3BvzH5XkdtlkMadqElGevg5bYBDFip4sAnD4m06zAKebg1w==", + "dev": true + }, + "use-sidecar": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.0.2.tgz", + "integrity": "sha512-287RZny6m5KNMTb/Kq9gmjafi7lQL0YHO1lYolU6+tY1h9+Z3uCtkJJ3OSOq3INwYf2hBryCcDh4520AhJibMA==", + "dev": true, + "requires": { + "detect-node": "^2.0.4", + "tslib": "^1.9.3" + } + }, "useragent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", @@ -18634,6 +24283,12 @@ } } }, + "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", @@ -18711,6 +24366,15 @@ "integrity": "sha512-8fJU7jiA96HfGPt+P/UilelSAZfhMBJ52YhKzlmZQvKEZU2EcD1GQ0yqGB6liLdHjYtYAoGVigYwdxr5rktvzA==", "dev": true }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -20373,6 +26037,18 @@ } } }, + "webpack-hot-middleware": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz", + "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "html-entities": "^1.2.0", + "querystring": "^0.2.0", + "strip-ansi": "^3.0.0" + } + }, "webpack-log": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", @@ -20419,6 +26095,15 @@ "webpack-sources": "^1.3.0" } }, + "webpack-virtual-modules": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.1.tgz", + "integrity": "sha512-0PWBlxyt4uGDofooIEanWhhyBOHdd+lr7QpYNDLC7/yc5lqJT8zlc04MTIBnKj+c2BlQNNuwE5er/Tg4wowHzA==", + "dev": true, + "requires": { + "debug": "^3.0.0" + } + }, "webrtc-adapter": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-3.4.3.tgz", @@ -20474,11 +26159,53 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, - "optional": true, "requires": { "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "wif": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", @@ -20517,6 +26244,15 @@ "loader-utils": "^1.1.0" } }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index 5b3e07725..6267a478c 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "build:ios": "PLATFORM=ios ionic cordova build ios --prod --release", "debug:android": "ionic cordova run android --debug --consolelogs -l", "build:android": "ionic cordova build android --prod --release", - "missing-translations": "node missing-translations" + "missing-translations": "node missing-translations", + "storybook": "start-storybook" }, "private": true, "dependencies": { @@ -105,6 +106,7 @@ "@ionic/angular-toolkit": "^2.2.0", "@ionic/lab": "^3.1.2", "@ngneat/spectator": "^5.3.1", + "@storybook/angular": "^5.3.17", "@testing-library/angular": "^8.2.0", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 8881ca903..9b4338f0a 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -27,7 +27,6 @@ export function createTranslateLoader(http: HttpClient) { @NgModule({ declarations: [AppComponent], - entryComponents: [], imports: [ IonicModule.forRoot(), IonicStorageModule.forRoot(), @@ -45,7 +44,6 @@ export function createTranslateLoader(http: HttpClient) { ChartsModule, HammerModule, ], - exports: [TranslateModule], providers: [ StatusBar, SplashScreen, diff --git a/src/app/components/input-currency/input-currency.component.ts b/src/app/components/input-currency/input-currency.component.ts index 5f2a35265..d2167d335 100644 --- a/src/app/components/input-currency/input-currency.component.ts +++ b/src/app/components/input-currency/input-currency.component.ts @@ -81,12 +81,12 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { ngOnInit() { this.formControl = new FormControl({ - value: 0, + value: undefined, disabled: this.isDisabled, }); this.formControl.valueChanges.subscribe((value: string) => { const formatted = this.format(value); - this.input(formatted.value); + this.input?.(formatted.value); }); if (!this.placeholder) { diff --git a/src/app/components/input-currency/input-currency.stories.ts b/src/app/components/input-currency/input-currency.stories.ts new file mode 100644 index 000000000..215eadb2b --- /dev/null +++ b/src/app/components/input-currency/input-currency.stories.ts @@ -0,0 +1,23 @@ +import { IonicModule } from "@ionic/angular"; +import { moduleMetadata, storiesOf } from "@storybook/angular"; + +import { SharedModule } from "@/app/shared.module"; +import { DirectivesModule } from "@/directives/directives.module"; + +import { InputCurrencyComponent } from "./input-currency.component"; + +storiesOf("input-currency", module) + .addDecorator( + moduleMetadata({ + declarations: [InputCurrencyComponent], + imports: [IonicModule, SharedModule, DirectivesModule], + }), + ) + .add("Default", () => ({ + component: InputCurrencyComponent, + template: "", + })) + .add("Relaxed", () => ({ + component: InputCurrencyComponent, + template: ``, + })); diff --git a/src/app/components/input-fee/input-fee.stories.ts b/src/app/components/input-fee/input-fee.stories.ts new file mode 100644 index 000000000..9f3785a1e --- /dev/null +++ b/src/app/components/input-fee/input-fee.stories.ts @@ -0,0 +1,33 @@ +import { CommonModule } from "@angular/common"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; +import { moduleMetadata, storiesOf } from "@storybook/angular"; + +import { InputCurrencyComponent } from "@/components/input-currency/input-currency.component"; +import { DirectivesModule } from "@/directives/directives.module"; +import { PipesModule } from "@/pipes/pipes.module"; + +import { InputFeeComponent } from "./input-fee.component"; + +storiesOf("input-fee", module) + .addDecorator( + moduleMetadata({ + declarations: [InputFeeComponent, InputCurrencyComponent], + imports: [ + IonicModule, + CommonModule, + FormsModule, + ReactiveFormsModule, + DirectivesModule, + PipesModule, + ], + }), + ) + .add("Default", () => ({ + component: InputFeeComponent, + template: `
`, + })) + .add("Range", () => ({ + component: InputFeeComponent, + template: `
`, + })); diff --git a/src/app/components/wallet-picker/wallet-picker.stories.ts b/src/app/components/wallet-picker/wallet-picker.stories.ts new file mode 100644 index 000000000..30183b07e --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.stories.ts @@ -0,0 +1,34 @@ +import { IonicModule } from "@ionic/angular"; +import { moduleMetadata, storiesOf } from "@storybook/angular"; + +import { SharedModule } from "@/app/shared.module"; +import { Contact } from "@/models/model"; +import { PipesModule } from "@/pipes/pipes.module"; + +import { WalletPickerComponent } from "./wallet-picker.component"; + +export const walletsData: Contact[] = [ + { + name: "ARK Team", + address: "AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + }, + { + name: "Binance", + address: "AdS7WvzqusoP759qRo6HDmUz2L34u4fMHz", + }, +]; + +storiesOf("wallet-picker", module) + .addDecorator( + moduleMetadata({ + declarations: [WalletPickerComponent], + imports: [IonicModule, SharedModule, PipesModule], + }), + ) + .add("Default", () => ({ + props: { + wallets: walletsData, + }, + component: WalletPickerComponent, + template: `
`, + })); From d770353e6aef0b30fa6b8d4d015526c3ea3ba9d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2020 12:31:04 -0300 Subject: [PATCH 36/46] chore(deps): update dependency jasmine-spec-reporter to v5 (#537) Co-authored-by: Renovate Bot --- package-lock.json | 11 ++++------- package.json | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e4eea43df..d57350d25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13670,13 +13670,10 @@ "dev": true }, "jasmine-spec-reporter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", - "dev": true, - "requires": { - "colors": "1.1.2" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.0.tgz", + "integrity": "sha512-L+PCPtk7PPPhHYzDAfFPdRsDUEd+DoxbJwIeyOnbmlt/wWNOuwKE39W9eQYqUlZW/YqunIZaT9sqH8O7Kiurkw==", + "dev": true }, "jasminewd2": { "version": "2.2.0", diff --git a/package.json b/package.json index 6267a478c..6b8120485 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "eslint-plugin-unused-imports": "^0.1.2", "husky": "^4.2.3", "jasmine-core": "~3.5.0", - "jasmine-spec-reporter": "~4.2.1", + "jasmine-spec-reporter": "~5.0.0", "karma": "~4.4.1", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "~2.1.1", From 259049068a90cf8615e02c5d3e89cda211976e76 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2020 16:30:29 -0300 Subject: [PATCH 37/46] chore(deps): update dependency ts-node to ~8.8.0 (#536) Co-authored-by: Renovate Bot --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index d57350d25..a34963f45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23671,9 +23671,9 @@ } }, "ts-node": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz", - "integrity": "sha512-s659CsHrsxaRVDEleuOkGvbsA0rWHtszUNEt1r0CgAFN5ZZTQtDzpsluS7W5pOGJIa1xZE8R/zK4dEs+ldFezg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.8.1.tgz", + "integrity": "sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg==", "dev": true, "requires": { "arg": "^4.1.0", diff --git a/package.json b/package.json index 6b8120485..51815e1fe 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "prettier": "^1.19.1", "protractor": "~5.4.3", "tailwindcss": "^1.2.0", - "ts-node": "~8.7.0", + "ts-node": "~8.8.0", "typescript": "^3.8.3" }, "description": "A Wallet for Everyone", From 8b15b49bcfd401ece2cfedf16184b541ebe552c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Wed, 25 Mar 2020 11:35:21 -0300 Subject: [PATCH 38/46] test: remove testing library (#534) * test: refactor intro page specs * test: refactor app component specs * test: add input-currency specs * test * test: refactor input-fee component * chore: remove testing-library package * test: add forge provider specs * test: add event bus specs * test: wallet picker component specs * chore: remove single test run Co-authored-by: Caio Alcantara --- package-lock.json | 78 ------ package.json | 1 - src/app/app.component.html | 2 +- src/app/app.component.spec.ts | 74 ++++-- .../input-currency.component.spec.ts | 127 +++++++++ .../input-currency.component.ts | 7 +- .../input-fee/input-fee.component.spec.ts | 241 +++++++++--------- .../input-fee/input-fee.component.ts | 10 +- .../wallet-picker.component.html | 21 +- .../wallet-picker.component.spec.ts | 22 ++ src/app/pages/intro/intro.spec.ts | 126 ++++----- src/app/services/event-bus/event-bus.spec.ts | 28 ++ src/app/services/forge/forge.spec.ts | 49 ++++ src/app/services/forge/forge.ts | 17 -- test/fixture/wallets.fixture.ts | 6 + test/helpers.ts | 95 +------ 16 files changed, 501 insertions(+), 403 deletions(-) create mode 100644 src/app/components/input-currency/input-currency.component.spec.ts create mode 100644 src/app/components/wallet-picker/wallet-picker.component.spec.ts create mode 100644 src/app/services/event-bus/event-bus.spec.ts create mode 100644 src/app/services/forge/forge.spec.ts diff --git a/package-lock.json b/package-lock.json index a34963f45..382697ad9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4206,15 +4206,6 @@ "fastq": "^1.6.0" } }, - "@phenomnomnominal/tsquery": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-3.0.0.tgz", - "integrity": "sha512-SW8lKitBHWJ9fAYkJ9kJivuctwNYCh3BUxLdH0+XiR1GPBiu+7qiZzh8p8jqlj1LgVC1TbvfNFroaEsmYlL8Iw==", - "dev": true, - "requires": { - "esquery": "^1.0.1" - } - }, "@reach/router": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz", @@ -5077,31 +5068,6 @@ } } }, - "@testing-library/angular": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/angular/-/angular-8.2.0.tgz", - "integrity": "sha512-vOd4VdIW5x1dUfQyM93+916s9MWWXVg01BHsnMIizIvaQN0y+C79HXJJzTShamXNh3hTB6TnIFmLOx12Dh/PsA==", - "dev": true, - "requires": { - "@phenomnomnominal/tsquery": "^3.0.0", - "@testing-library/dom": "^5.1.0", - "tslib": "^1.9.0", - "tslint": "^5.16.0" - } - }, - "@testing-library/dom": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz", - "integrity": "sha512-Y1T2bjtvQMewffn1CJ28kpgnuvPYKsBcZMagEH0ppfEMZPDc8AkkEnTk4smrGZKw0cblNB3lhM2FMnpfLExlHg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "@sheerun/mutationobserver-shim": "^0.3.2", - "aria-query": "3.0.0", - "pretty-format": "^24.8.0", - "wait-for-expect": "^1.2.0" - } - }, "@tootallnate/once": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", @@ -7913,12 +7879,6 @@ "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.6.tgz", "integrity": "sha512-mjYZFRHmI9bk3Oeexu0rWjHFY+w6hGLabdmwSFzq+EFr4MHHsNOYduDVdYl71NG5pTPL7GGzUCMk9cYuV34/Qw==" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -23717,44 +23677,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", diff --git a/package.json b/package.json index 51815e1fe..65207cc18 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,6 @@ "@ionic/lab": "^3.1.2", "@ngneat/spectator": "^5.3.1", "@storybook/angular": "^5.3.17", - "@testing-library/angular": "^8.2.0", "@types/bcryptjs": "^2.4.2", "@types/bip39": "^3.0.0", "@types/bytebuffer": "^5.0.40", diff --git a/src/app/app.component.html b/src/app/app.component.html index e3b3d8b08..c11fb52f2 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,4 +1,4 @@ - +
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 862d2b56f..8c7ab83e5 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -1,23 +1,67 @@ -import { ComponentFixture } from "@angular/core/testing"; - -import { TestHelpers } from "@@/test/helpers"; +import { RouterModule } from "@angular/router"; +import { Keyboard } from "@ionic-native/keyboard/ngx"; +import { Network } from "@ionic-native/network/ngx"; +import { ScreenOrientation } from "@ionic-native/screen-orientation/ngx"; +import { SplashScreen } from "@ionic-native/splash-screen/ngx"; +import { StatusBar } from "@ionic-native/status-bar/ngx"; +import { IonicModule, NavController } from "@ionic/angular"; +import { + byTestId, + createComponentFactory, + mockProvider, + Spectator, +} from "@ngneat/spectator"; +import { TranslateModule } from "@ngx-translate/core"; +import { of, Subject } from "rxjs"; import { AppComponent } from "./app.component"; +import { ArkApiProvider } from "./services/ark-api/ark-api"; +import { AuthProvider } from "./services/auth/auth"; +import { EventBusProvider } from "./services/event-bus/event-bus"; +import { SettingsDataProvider } from "./services/settings-data/settings-data"; +import { UserDataService } from "./services/user-data/user-data.interface"; -describe("AppComponent", () => { - let pageComponent: AppComponent; - let pageFixture: ComponentFixture; - - beforeEach(async () => { - const { fixture, component } = await TestHelpers.beforeEachCompiler< - AppComponent - >([AppComponent]); - pageFixture = fixture; - pageComponent = component; - pageFixture.detectChanges(); +describe("App Component", () => { + let spectator: Spectator; + const createComponent = createComponentFactory({ + component: AppComponent, + imports: [ + IonicModule.forRoot(), + TranslateModule.forRoot(), + RouterModule.forRoot([]), + ], + mocks: [ + SplashScreen, + StatusBar, + NavController, + ArkApiProvider, + ScreenOrientation, + Keyboard, + ], + providers: [ + mockProvider(UserDataService, { + onCreateWallet$: new Subject(), + }), + mockProvider(AuthProvider, { + onLogin$: new Subject(), + onLogout$: new Subject(), + }), + mockProvider(SettingsDataProvider, { + settings: of({}), + onUpdate$: new Subject(), + }), + mockProvider(Network, { + onDisconnect: () => new Subject(), + }), + mockProvider(EventBusProvider, { + $subject: new Subject(), + }), + ], }); + beforeEach(() => (spectator = createComponent())); + it("should create", () => { - expect(pageComponent).toBeTruthy(); + expect(spectator.query(byTestId("c-app"))).toBeVisible(); }); }); diff --git a/src/app/components/input-currency/input-currency.component.spec.ts b/src/app/components/input-currency/input-currency.component.spec.ts new file mode 100644 index 000000000..b4048b4ed --- /dev/null +++ b/src/app/components/input-currency/input-currency.component.spec.ts @@ -0,0 +1,127 @@ +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; +import { byTestId, createHostFactory, SpectatorHost } from "@ngneat/spectator"; +import { BigNumber } from "bignumber.js"; + +import { removeLogs, sleep } from "@@/test/helpers"; + +import { InputCurrencyComponent } from "./input-currency.component"; + +describe("Input Currency", () => { + let spectator: SpectatorHost; + const createHost = createHostFactory({ + component: InputCurrencyComponent, + imports: [IonicModule.forRoot(), FormsModule, ReactiveFormsModule], + }); + + beforeAll(async () => removeLogs()); + + it("should assign the placeholder if not specified", async () => { + spectator = createHost(``); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + expect(input.getAttribute("placeholder")).toBe("0.00000000"); + }); + + it("should assign the placeholder", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + expect(input.getAttribute("placeholder")).toBe("2"); + }); + + it("should not allow letters and symbols", async () => { + spectator = createHost(``); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + spectator.typeInElement("ab1c", input); + await sleep(100); + expect(input).toHaveValue("1"); + spectator.typeInElement("@!0$%", input); + await sleep(100); + expect(input).toHaveValue("0"); + }); + + it("should convert comma into dot separator", async () => { + spectator = createHost(``); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + spectator.typeInElement("0,01", input); + await sleep(100); + expect(input).toHaveValue("0.01"); + }); + + it("should allow to start with a separator", async () => { + spectator = createHost(``); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + spectator.typeInElement(".01", input); + await sleep(100); + expect(input).toHaveValue("0.01"); + }); + + it("should not allow typing more decimal places than the fraction digits", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + spectator.typeInElement("0.12345", input); + await sleep(100); + expect(input).toHaveValue("0.12"); + }); + + it("should work with ngModel", async () => { + spectator = createHost( + ``, + { + hostProps: { + value: 0, + }, + }, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + spectator.typeInElement("a0.12345", input); + await sleep(100); + // @ts-ignore + expect(BigNumber.isBigNumber(spectator.hostComponent.value)).toBeTrue(); + // @ts-ignore + expect(spectator.hostComponent.value.isEqualTo(0.12345)).toBeTrue(); + }); + + it("should work with BigNumber", async () => { + spectator = createHost( + ``, + { + hostProps: { + value: new BigNumber(0.12), + }, + }, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + // @ts-ignore + expect(input).toHaveValue("0.12"); + }); + + it("should be disabled", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-currency")); + const input = root.querySelector("input"); + expect(input).toBeDisabled(); + }); +}); diff --git a/src/app/components/input-currency/input-currency.component.ts b/src/app/components/input-currency/input-currency.component.ts index d2167d335..9ad4c1cfd 100644 --- a/src/app/components/input-currency/input-currency.component.ts +++ b/src/app/components/input-currency/input-currency.component.ts @@ -52,7 +52,8 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { @Input() public isRelaxed = false; - public isDisabled: boolean; + @Input() + public isDisabled = false; public input: (value: BigNumber) => void; constructor() {} @@ -133,7 +134,9 @@ export class InputCurrencyComponent implements OnInit, ControlValueAccessor { const zero = new SafeBigNumber(0); const value = display ? new SafeBigNumber(display) : zero; - const satoshi = display ? value.shiftedBy(this.fractionDigits) : zero; + const satoshi = display + ? value.multipliedBy(Math.pow(10, this.fractionDigits)) + : zero; return { display, value, satoshi }; } diff --git a/src/app/components/input-fee/input-fee.component.spec.ts b/src/app/components/input-fee/input-fee.component.spec.ts index 0a353fcb4..201d0a97c 100644 --- a/src/app/components/input-fee/input-fee.component.spec.ts +++ b/src/app/components/input-fee/input-fee.component.spec.ts @@ -1,187 +1,190 @@ -import { CommonModule } from "@angular/common"; import { FormGroupDirective, ReactiveFormsModule } from "@angular/forms"; -import { IonicModule } from "@ionic/angular"; +import { IonicModule, IonRange } from "@ionic/angular"; +import { byTestId, createHostFactory, SpectatorHost } from "@ngneat/spectator"; import { TranslateModule } from "@ngx-translate/core"; -import { render } from "@testing-library/angular"; -import { BigNumber } from "bignumber.js"; +import { removeLogs, sleep } from "@@/test/helpers"; import { PipesModule } from "@/pipes/pipes.module"; import { InputCurrencyComponentModule } from "../input-currency/input-currency.module"; import { InputFeeComponent } from "./input-fee.component"; -function createComponent(props?: Partial) { - return render(InputFeeComponent, { +describe("Input Fee", () => { + let spectator: SpectatorHost; + const createHost = createHostFactory({ + component: InputFeeComponent, imports: [ - IonicModule, + IonicModule.forRoot(), TranslateModule.forRoot(), InputCurrencyComponentModule, PipesModule, - CommonModule, ReactiveFormsModule, ], - componentProperties: { - ...props, - }, providers: [FormGroupDirective], }); -} -describe("Input Fee Component", () => { - it("should create", async () => { - const component = await createComponent(); - expect(component.fixture.componentInstance.isStatic).toBeTrue(); - }); + beforeAll(() => removeLogs()); describe("Initial value", () => { it("should set last fee by default if specified", async () => { - const component = await createComponent({ - last: 15.2, - min: 5, - avg: 20, - max: 30, - }); - const inputControl = - component.fixture.componentInstance.inputControl; - expect(BigNumber.isBigNumber(inputControl.value)).toBeTrue(); - expect(inputControl.value.isEqualTo("0.000000152")).toBeTrue(); + spectator = createHost( + ``, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-fee__currency")); + const input = root.querySelector("input"); + expect(input).toHaveValue("0.00000015"); }); it("should set avg fee by default if the last was not specified", async () => { - const component = await createComponent({ - min: 5, - avg: 20, - max: 30, - }); - const inputControl = - component.fixture.componentInstance.inputControl; - expect(BigNumber.isBigNumber(inputControl.value)).toBeTrue(); - expect(inputControl.value.isEqualTo("0.0000002")).toBeTrue(); + spectator = createHost( + ``, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-fee__currency")); + const input = root.querySelector("input"); + expect(input).toHaveValue("0.0000002"); }); it("should set max fee by default if the last and avg was not specified", async () => { - const component = await createComponent({ - min: 5, - max: 30, - }); - const inputControl = - component.fixture.componentInstance.inputControl; - expect(BigNumber.isBigNumber(inputControl.value)).toBeTrue(); - expect(inputControl.value.isEqualTo("0.0000003")).toBeTrue(); + spectator = createHost( + ``, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-fee__currency")); + const input = root.querySelector("input"); + expect(input).toHaveValue("0.0000003"); }); }); - describe("Controls", () => { - it("should hide the controls if max is equals to min", async () => { - const component = await createComponent({ - min: 1, - max: 1, - }); - expect(() => - component.getByTestId("c-input-fee__controls"), - ).toThrowError(); + describe("Buttons", () => { + it("should hide the buttons if max is equals to min", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + expect( + spectator.query(byTestId("c-input-fee__controls")), + ).not.toBeVisible(); }); it("should change value by clicking on the min button", async () => { - const component = await createComponent({ - min: 11.1, - max: 20, - }); - component.click( - component.getByTestId("c-input-fee__controls__min"), + spectator = createHost( + ``, ); - expect( - component.fixture.componentInstance.inputControl.value.isEqualTo( - "0.000000111", - ), + await sleep(100); + spectator.click( + spectator.query(byTestId("c-input-fee__controls__min")), ); + await spectator.fixture.whenStable(); + const root = spectator.query(byTestId("c-input-fee__currency")); + const input = root.querySelector("input"); + expect(input).toHaveValue("0.00000005"); }); it("should change value by clicking on the avg button", async () => { - const component = await createComponent({ - avg: 11.1, - max: 20, - }); - component.click( - component.getByTestId("c-input-fee__controls__avg"), + spectator = createHost( + ``, ); - expect( - component.fixture.componentInstance.inputControl.value.isEqualTo( - "0.000000111", - ), + await sleep(100); + spectator.click( + spectator.query(byTestId("c-input-fee__controls__avg")), ); + await spectator.fixture.whenStable(); + const root = spectator.query(byTestId("c-input-fee__currency")); + const input = root.querySelector("input"); + expect(input).toHaveValue("0.0000002"); }); it("should change value by clicking on the max button", async () => { - const component = await createComponent({ - max: 11.1, - }); - component.click( - component.getByTestId("c-input-fee__controls__max"), + spectator = createHost( + ``, ); - expect( - component.fixture.componentInstance.inputControl.value.isEqualTo( - "0.000000111", - ), + await sleep(100); + spectator.click( + spectator.query(byTestId("c-input-fee__controls__max")), ); + await spectator.fixture.whenStable(); + const root = spectator.query(byTestId("c-input-fee__currency")); + const input = root.querySelector("input"); + expect(input).toHaveValue("0.0000003"); }); }); describe("Range", () => { it("should show the range if max is greater than min", async () => { - const component = await createComponent({ - min: 10, - max: 20, - }); - expect(component.fixture.componentInstance.hasRange).toBeTrue(); + spectator = createHost( + ``, + ); + await sleep(100); + expect( + spectator.query(byTestId("c-input-fee__range")), + ).toBeVisible(); }); - it("should change value by updating the range", async () => { - const component = await createComponent({ - min: 10, - max: 20, - }); - const { - rangeControl, - inputControl, - min, - } = component.fixture.componentInstance; - rangeControl.setValue(min); - expect(inputControl.value.isEqualTo("0.0000001")).toBeTrue(); + it("should change the value by updating the range", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const range = spectator.query(byTestId("c-input-fee__range")); + range.setAttribute("value", "12"); + await sleep(100); + const ionInput = spectator.query(byTestId("c-input-fee__currency")); + const input = ionInput.querySelector("input"); + expect(input).toHaveValue("0.00000012"); + }); + + it("should update the range by updating the value", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const range = spectator.query(byTestId("c-input-fee__range")); + const ionInput = spectator.query(byTestId("c-input-fee__currency")); + const input = ionInput.querySelector("input"); + spectator.typeInElement("0.0000001", input); + await sleep(100); + // @ts-ignore + expect(range.value).toEqual(10); }); }); describe("Minimum limit", () => { it("should set limitMin to min if it is different from avg", async () => { - const component = await createComponent({ - min: 100, - avg: 200, - }); - expect(component.fixture.componentInstance.limitMin).toBe(100); + spectator = createHost( + ``, + ); + await sleep(100); + const range = spectator.query(IonRange); + expect(range.min).toBe(100); }); it("should set limitMin to min if it is different from max", async () => { - const component = await createComponent({ - min: 100, - max: 200, - }); - expect(component.fixture.componentInstance.limitMin).toBe(100); + spectator = createHost( + ``, + ); + await sleep(100); + const range = spectator.query(IonRange); + expect(range.min).toBe(100); }); it("should set limitMin to 1 arktoshi if min is equal to avg", async () => { - const component = await createComponent({ - min: 100, - avg: 100, - }); - expect(component.fixture.componentInstance.limitMin).toBe(1); + spectator = createHost( + ``, + ); + await sleep(100); + const range = spectator.query(IonRange); + expect(range.min).toBe(1); }); it("should set limitMin to 1 arktoshi if min is equal to max", async () => { - const component = await createComponent({ - min: 100, - max: 100, - }); - expect(component.fixture.componentInstance.limitMin).toBe(1); + spectator = createHost( + ``, + ); + await sleep(100); + const range = spectator.query(IonRange); + expect(range.min).toBe(1); }); }); }); diff --git a/src/app/components/input-fee/input-fee.component.ts b/src/app/components/input-fee/input-fee.component.ts index e5804a110..4b1981c45 100644 --- a/src/app/components/input-fee/input-fee.component.ts +++ b/src/app/components/input-fee/input-fee.component.ts @@ -6,7 +6,7 @@ import { FormGroupDirective, } from "@angular/forms"; -import { ARKTOSHI_DP } from "@/app/app.constants"; +import { WALLET_UNIT_TO_SATOSHI } from "@/app/app.constants"; import BigNumber, { SafeBigNumber } from "@/utils/bignumber"; import { InputCurrencyOutput } from "../input-currency/input-currency.component"; @@ -62,7 +62,9 @@ export class InputFeeComponent implements OnInit { this.parent.addControl("fee", this.inputControl); this.inputControl.valueChanges.subscribe((value: BigNumber) => { // The range value should be in arktoshi - this.currentFee = value.shiftedBy(ARKTOSHI_DP).toNumber(); + this.currentFee = value + .multipliedBy(WALLET_UNIT_TO_SATOSHI) + .toNumber(); this.rangeControl.setValue(this.currentFee, { emitEvent: false, }); @@ -102,7 +104,9 @@ export class InputFeeComponent implements OnInit { private setInputValue(value: number, emitEvent = true) { // The input value should be in human - const satoshi = new SafeBigNumber(value).shiftedBy(ARKTOSHI_DP * -1); + const satoshi = new SafeBigNumber(value).dividedBy( + WALLET_UNIT_TO_SATOSHI, + ); this.inputControl.setValue(satoshi, { emitEvent, }); diff --git a/src/app/components/wallet-picker/wallet-picker.component.html b/src/app/components/wallet-picker/wallet-picker.component.html index b1bafb0e2..e60dbace9 100644 --- a/src/app/components/wallet-picker/wallet-picker.component.html +++ b/src/app/components/wallet-picker/wallet-picker.component.html @@ -1,12 +1,25 @@ - + {{ title | translate }} - -
+ +
{{ wallet?.name?.charAt(0) || symbol }}
- +

{{ wallet.name }}

{{ wallet.address | truncateMiddle: 10 }}

diff --git a/src/app/components/wallet-picker/wallet-picker.component.spec.ts b/src/app/components/wallet-picker/wallet-picker.component.spec.ts new file mode 100644 index 000000000..004c29d56 --- /dev/null +++ b/src/app/components/wallet-picker/wallet-picker.component.spec.ts @@ -0,0 +1,22 @@ +import { IonicModule } from "@ionic/angular"; +import { createHostComponentFactory, SpectatorHost } from "@ngneat/spectator"; +import { TranslateModule } from "@ngx-translate/core"; + +import { removeLogs } from "@@/test/helpers"; + +import { WalletPickerComponent } from "./wallet-picker.component"; + +describe("Wallet Picker Component", () => { + let spectator: SpectatorHost; + const createHost = createHostComponentFactory({ + component: WalletPickerComponent, + imports: [IonicModule.forRoot(), TranslateModule.forRoot()], + }); + + beforeAll(() => removeLogs()); + + it("should create", () => { + spectator = createHost(""); + expect(spectator.component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/intro/intro.spec.ts b/src/app/pages/intro/intro.spec.ts index 901c82921..58757420d 100644 --- a/src/app/pages/intro/intro.spec.ts +++ b/src/app/pages/intro/intro.spec.ts @@ -1,101 +1,67 @@ import { IonicModule, NavController } from "@ionic/angular"; -import { IonicStorageModule } from "@ionic/storage"; +import { byTestId, createComponentFactory, Spectator } from "@ngneat/spectator"; import { TranslateModule } from "@ngx-translate/core"; -import { render } from "@testing-library/angular"; -import { Observable } from "rxjs"; +import { of } from "rxjs"; +import { removeLogs, sleep } from "@@/test/helpers"; import { AuthProvider } from "@/services/auth/auth"; import { IntroPage } from "./intro"; -const navCtrlSpy = jasmine.createSpyObj("NavController", ["navigateForward"]); -const authProviderSpy = jasmine.createSpyObj("AuthProvider", { - saveIntro: new Observable(), -}); - -function createComponent(props?: Partial) { - return render(IntroPage, { - imports: [ - IonicModule, - IonicStorageModule.forRoot(), - TranslateModule.forRoot(), - ], - providers: [ - { provide: NavController, useValue: navCtrlSpy }, - { provide: AuthProvider, useValue: authProviderSpy }, - ], - }); -} - describe("Intro Page", () => { - it("should create", async () => { - const component = await createComponent(); - expect(component).toBeTruthy(); + let spectator: Spectator; + const createComponent = createComponentFactory({ + component: IntroPage, + declarations: [IntroPage], + imports: [IonicModule.forRoot(), TranslateModule.forRoot()], + mocks: [AuthProvider, NavController], }); - it("should be visible the skip button", async () => { - const component = await createComponent(); - const skipBtn = component.queryByTestId("c-intro__skip"); - expect(skipBtn).toBeTruthy(); - }); + beforeAll(() => removeLogs()); - it("should be visible the next button", async () => { - const component = await createComponent(); - const nextBtn = component.queryByTestId("c-intro__next"); - expect(nextBtn).toBeTruthy(); + beforeEach(async () => { + spectator = createComponent(); + // Wait for Ionic + await sleep(100); }); - it("should be hidden the done button", async () => { - const component = await createComponent(); - - expect(component.queryByTestId("c-intro__done")).toBeFalsy(); - }); - - it("should contain the slides", async () => { - const component = await createComponent(); - const elements = component.queryAllByTestId("c-intro__slides__slide"); - expect(elements.length).toBeGreaterThan(0); - expect(elements.length).toBe( - component.fixture.componentInstance.slides.length, + it("should skip to the login screen", async () => { + const authProvider = spectator.get(AuthProvider); + const navCtrl = spectator.get(NavController); + authProvider.saveIntro.and.returnValue(of(true)); + const next = spectator.query(byTestId("c-intro__skip")); + spectator.click(next); + expect(navCtrl.navigateForward).toHaveBeenCalledWith( + "/login", + jasmine.anything(), ); }); - /** - * NOTE: The Ionic Slides relies on Swiper methods - * but their instance is not available in the test environment - * then I faked the methods to mimic the behavior - */ - it("should activate the 2nd slide by clicking the next button", async done => { - const component = await createComponent(); - const instance = component.fixture.componentInstance; - const slider = instance.slider; - spyOn(slider, "slideNext").and.callFake(() => { - instance.onSlideChanged(); - return Promise.resolve(); - }); - spyOn(slider, "isEnd").and.returnValue(Promise.resolve(false)); - spyOn(slider, "getActiveIndex").and.returnValue(Promise.resolve(1)); - spyOn(slider, "length").and.returnValue( - Promise.resolve(instance.slides.length), + it("should activate the 2nd slide", async () => { + const next = spectator.query(byTestId("c-intro__next")); + spectator.click(next); + await sleep(500); + spectator.detectChanges(); + const slides = spectator.queryAll(byTestId("c-intro__slides__slide")); + const paginations = spectator.queryAll( + byTestId("c-intro__pagination__page"), ); - - component.click(component.queryByTestId("c-intro__next")); - expect(slider.slideNext).toHaveBeenCalled(); - setTimeout(() => { - expect(instance.activeIndex).toBe(1); - done(); - }, 100); + expect(slides[1]).toHaveClass("swiper-slide-active"); + expect(paginations[1]).toHaveClass("active"); }); - it("should start the app", async () => { - const component = await createComponent(); - spyOn( - component.fixture.componentInstance, - "startApp", - ).and.callThrough(); - component.click(component.queryByTestId("c-intro__skip")); - expect(component.fixture.componentInstance.startApp).toHaveBeenCalled(); - expect(navCtrlSpy.navigateForward).toHaveBeenCalled(); - expect(authProviderSpy.saveIntro).toHaveBeenCalled(); + it("should hide the next button when it reaches the last slide", async () => { + const next = spectator.query(byTestId("c-intro__next")); + spectator.click(next); + spectator.detectChanges(); + spectator.click(next); + await sleep(500); + spectator.detectChanges(); + const doneButton = spectator.query(byTestId("c-intro__done")); + const skipButton = spectator.query(byTestId("c-intro__skip")); + await sleep(100); + expect(next).not.toBeVisible(); + expect(doneButton).toBeVisible(); + expect(skipButton.hasAttribute("disabled")).toBeTrue(); }); }); diff --git a/src/app/services/event-bus/event-bus.spec.ts b/src/app/services/event-bus/event-bus.spec.ts new file mode 100644 index 000000000..43ad29bb1 --- /dev/null +++ b/src/app/services/event-bus/event-bus.spec.ts @@ -0,0 +1,28 @@ +import { createServiceFactory, SpectatorService } from "@ngneat/spectator"; + +import { EventBusProvider } from "./event-bus"; + +describe("Event Bus Service", () => { + let spectator: SpectatorService; + const createService = createServiceFactory({ + service: EventBusProvider, + }); + + beforeEach(() => (spectator = createService())); + + it("should emit", async done => { + const key = "test"; + const data = "value"; + + spectator.service.$subject.subscribe(result => { + expect(result).toEqual( + jasmine.objectContaining({ + key, + data, + }), + ); + done(); + }); + spectator.service.emit(key, data); + }); +}); diff --git a/src/app/services/forge/forge.spec.ts b/src/app/services/forge/forge.spec.ts new file mode 100644 index 000000000..1ea1636fa --- /dev/null +++ b/src/app/services/forge/forge.spec.ts @@ -0,0 +1,49 @@ +import { createServiceFactory, SpectatorService } from "@ngneat/spectator"; + +import * as walletsFixtures from "@@/test/fixture/wallets.fixture"; + +import { ForgeProvider } from "./forge"; + +describe("Forge Service", () => { + let spectator: SpectatorService; + const createService = createServiceFactory({ + service: ForgeProvider, + }); + + beforeEach(() => (spectator = createService())); + + it("should generate initial vendor", () => { + expect(spectator.service.generateIv()).toEqual(jasmine.any(String)); + }); + + it("should generate random initial vendors", () => { + const iv = spectator.service.generateIv(); + const iv2 = spectator.service.generateIv(); + expect(iv).not.toEqual(iv2); + }); + + it("should encrypt", () => { + const { iv, address, cipherKey } = walletsFixtures.wallet3; + const message = "secret"; + const password = "123"; + const cipher = spectator.service.encrypt( + message, + password, + address, + iv, + ); + expect(cipher).toEqual(cipherKey); + }); + + it("should decrypt", () => { + const { iv, address, cipherKey } = walletsFixtures.wallet3; + const password = "123"; + const message = spectator.service.decrypt( + cipherKey, + password, + address, + iv, + ); + expect(message).toEqual("secret"); + }); +}); diff --git a/src/app/services/forge/forge.ts b/src/app/services/forge/forge.ts index ddc1ad685..edf4d5055 100644 --- a/src/app/services/forge/forge.ts +++ b/src/app/services/forge/forge.ts @@ -5,7 +5,6 @@ import forge from "node-forge"; export class ForgeProvider { private keySize = 32; // AES-256 private interations = 5000; - // private scryptParams = {N: 4096, r: 8, p: 8}; constructor() {} @@ -54,20 +53,4 @@ export class ForgeProvider { return decipher.output.toString(); } - - /* DEPRECATED: Due to the slowness on devices was replaced by pbkdf2 - public encryptBip38(wif: string, password: string, network: Network): string { - let key = PrivateKey.fromWIF(wif, network); - - return bip38.encrypt(key.hash, key.getPublicKey().isCompressed, password, null, this.scryptParams); - } - - public decryptBip38(encryptedKey: string, password: string, network: Network): string { - let decrypted = bip38.decrypt(encryptedKey, password, null, this.scryptParams); - - let wifString = wif.encode(network.wif, decrypted.privateKey, decrypted.compressed); - - return wifString; - } - */ } diff --git a/test/fixture/wallets.fixture.ts b/test/fixture/wallets.fixture.ts index 157e3350d..bfd3156d9 100644 --- a/test/fixture/wallets.fixture.ts +++ b/test/fixture/wallets.fixture.ts @@ -12,3 +12,9 @@ export const wallet2 = { balance: "874989914806052", username: "test", }; + +export const wallet3 = { + address: "AdS7WvzqusoP759qRo6HDmUz2L34u4fMHz", + iv: "hdHE1DvMuuHd7o4n/vmsPA=", + cipherKey: "3cetEU2KRIwKQlllmguZTg==", +}; diff --git a/test/helpers.ts b/test/helpers.ts index f7517cb2a..9ededb0dc 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -1,83 +1,12 @@ -import { HttpClientModule } from "@angular/common/http"; -import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { - ComponentFixture, - TestBed, - TestBedStatic, -} from "@angular/core/testing"; -import { BrowserModule } from "@angular/platform-browser"; -import { RouterModule } from "@angular/router"; -import { Keyboard } from "@ionic-native/keyboard/ngx"; -import { Network } from "@ionic-native/network/ngx"; -import { QRScanner } from "@ionic-native/qr-scanner/ngx"; -import { ScreenOrientation } from "@ionic-native/screen-orientation/ngx"; -import { SocialSharing } from "@ionic-native/social-sharing/ngx"; -import { SplashScreen } from "@ionic-native/splash-screen/ngx"; -import { StatusBar } from "@ionic-native/status-bar/ngx"; -import { IonicModule } from "@ionic/angular"; -import { IonicStorageModule } from "@ionic/storage"; -import { TranslateModule } from "@ngx-translate/core"; - -import { SharedModule } from "@/app/shared.module"; -import { UserDataServiceImpl } from "@/services/user-data/user-data"; -import { UserDataService } from "@/services/user-data/user-data.interface"; - -import { - KeyboardMock, - NetworkMock, - QRScannerMock, - ScreenOrientationMock, - SocialSharingMock, - SplashScreenMock, - StatusBarMock, -} from "./mocks"; - -interface Compilation { - fixture: ComponentFixture; - component: T; -} - -export class TestHelpers { - public static async beforeEachCompiler( - components: Array, - ): Promise> { - const testingModule = TestHelpers.configureIonicTestingModule( - components, - ); - - await testingModule.compileComponents(); - - const fixture = TestBed.createComponent(components[0]); - const component = fixture.componentInstance; - - return { fixture, component }; - } - - public static configureIonicTestingModule( - components: Array, - ): TestBedStatic { - return TestBed.configureTestingModule({ - declarations: [...components], - imports: [ - IonicModule, - IonicStorageModule.forRoot(), - BrowserModule, - HttpClientModule, - TranslateModule.forRoot(), - SharedModule, - RouterModule.forRoot([]), - ], - providers: [ - { provide: UserDataService, useClass: UserDataServiceImpl }, - { provide: SplashScreen, useClass: SplashScreenMock }, - { provide: StatusBar, useClass: StatusBarMock }, - { provide: QRScanner, useClass: QRScannerMock }, - { provide: Network, useClass: NetworkMock }, - { provide: Keyboard, useClass: KeyboardMock }, - { provide: ScreenOrientation, useClass: ScreenOrientationMock }, - { provide: SocialSharing, useClass: SocialSharingMock }, - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - }); - } -} +export const removeLogs = () => { + const ionicRootMsg = + "Ionic Angular was already initialized. Make sure IonicModule.forRoot() is just called once."; + const warnSpy = spyOn(console, "warn"); + warnSpy + .withArgs(ionicRootMsg[0]) + .and.callFake(() => void 0) + .and.stub(); +}; + +export const sleep = (ms: number) => + new Promise(resolve => setTimeout(resolve, ms)); From 221a4af0f622dbdcc730d77579983bd7d92ba27d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caio=20Alc=C3=A2ntara?= Date: Thu, 26 Mar 2020 08:58:36 -0300 Subject: [PATCH 39/46] test: add address check unit tests (#540) * test: add initial test config * tests: solve conflicts and use spectator * test: wip - trying to mock user data props * feat: add own address and neo address check * chore: [wip] add transactions test case * fix: should return the check for no transactions * test: should not throw error if the transaction request fails * chore: add transactions fixture * test: increase coverage covering more branches * chore: update wallet3 into fixtures * chore: remove single test run flag Co-authored-by: Lucio Rubens <4539235+luciorubeens@users.noreply.github.com> --- package-lock.json | 189 ++++-------------- .../address-checker/address-checker.spec.ts | 155 ++++++++++++++ .../address-checker/address-checker.ts | 11 +- test/fixture/transactions.fixture.ts | 74 +++++++ test/fixture/wallets.fixture.ts | 7 + 5 files changed, 276 insertions(+), 160 deletions(-) create mode 100644 src/app/services/address-checker/address-checker.spec.ts create mode 100644 test/fixture/transactions.fixture.ts diff --git a/package-lock.json b/package-lock.json index 382697ad9..7a946572e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9666,6 +9666,7 @@ "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" } @@ -9714,7 +9715,8 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true }, "del": { "version": "4.1.1", @@ -10351,23 +10353,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", - "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" - } - }, "es-array-method-boxes-properly": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", @@ -10474,16 +10459,6 @@ } } }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-shim": { "version": "4.5.13", "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz", @@ -10607,9 +10582,9 @@ } }, "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "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" @@ -11476,14 +11451,6 @@ "debug": "=3.1.0" } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -11613,7 +11580,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "function.prototype.name": { "version": "1.1.2", @@ -12027,6 +11995,7 @@ "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" } @@ -12071,7 +12040,8 @@ "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, "has-unicode": { "version": "2.0.1", @@ -13108,11 +13078,6 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, "is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", @@ -13156,7 +13121,8 @@ "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true }, "is-decimal": { "version": "1.0.4", @@ -13316,6 +13282,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, "requires": { "has": "^1.0.1" } @@ -13368,6 +13335,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, "requires": { "has-symbols": "^1.0.0" } @@ -15132,7 +15100,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minipass": { "version": "3.1.1", @@ -15760,11 +15729,6 @@ } } }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" - }, "object-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", @@ -15774,7 +15738,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -16169,12 +16134,9 @@ } }, "objectorarray": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", - "integrity": "sha512-kPoflSYkAf/Onvjr4ZLaq37vDuOXjVzfwLCRuORRzYGdXkHa/vacPT0RgR+KmtkwOYFcxTMM62BRrZk8GGKHjw==", - "requires": { - "tape": "^4.8.0" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", + "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==" }, "obuf": { "version": "1.1.2", @@ -20040,14 +20002,6 @@ "signal-exit": "^3.0.2" } }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "requires": { - "through": "~2.3.4" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -20412,9 +20366,9 @@ } }, "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "dev": true, "optional": true, "requires": { @@ -20468,7 +20422,7 @@ } }, "chownr": { - "version": "1.1.3", + "version": "1.1.4", "bundled": true, "dev": true, "optional": true @@ -20640,7 +20594,7 @@ } }, "minimist": { - "version": "0.0.8", + "version": "1.2.5", "bundled": true, "dev": true, "optional": true @@ -20665,12 +20619,12 @@ } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "ms": { @@ -20680,7 +20634,7 @@ "optional": true }, "needle": { - "version": "2.4.0", + "version": "2.3.3", "bundled": true, "dev": true, "optional": true, @@ -20709,7 +20663,7 @@ } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "dev": true, "optional": true, @@ -20734,13 +20688,14 @@ "optional": true }, "npm-packlist": { - "version": "1.4.7", + "version": "1.4.8", "bundled": true, "dev": true, "optional": true, "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npmlog": { @@ -20820,18 +20775,10 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "dev": true, "optional": true, @@ -22558,34 +22505,6 @@ } } }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -23052,41 +22971,6 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tape": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz", - "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==", - "requires": { - "deep-equal": "~1.0.1", - "defined": "~1.0.0", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.4", - "has": "~1.0.3", - "inherits": "~2.0.4", - "minimist": "~1.2.0", - "object-inspect": "~1.6.0", - "resolve": "~1.11.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.1.2", - "through": "~2.3.8" - }, - "dependencies": { - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, "tar": { "version": "4.4.13", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", @@ -23418,7 +23302,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.5", diff --git a/src/app/services/address-checker/address-checker.spec.ts b/src/app/services/address-checker/address-checker.spec.ts new file mode 100644 index 000000000..147e615d6 --- /dev/null +++ b/src/app/services/address-checker/address-checker.spec.ts @@ -0,0 +1,155 @@ +import { + createServiceFactory, + createSpyObject, + mockProvider, + SpectatorService, +} from "@ngneat/spectator"; +import { of, throwError } from "rxjs"; + +// Fixtures +import transactions from "@@/test/fixture/transactions.fixture"; +import * as walletsFixtures from "@@/test/fixture/wallets.fixture"; +// Models +import { Wallet } from "@/models/model"; +// Services +import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { NeoApiProvider } from "@/services/neo-api/neo-api"; +import { NetworkProvider } from "@/services/network/network"; +import { UserDataService } from "@/services/user-data/user-data.interface"; +import ApiClient from "@/utils/ark-client"; + +import { AddressCheckerProvider } from "./address-checker"; + +const INVALID_ADDRESS = "D8x2Rno1CxrE5kRoVHS1EooQnfTL3v5sM"; +const WALLET_ADDRESS = "AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX"; + +describe("Address checker service", () => { + let addressSpectator: SpectatorService; + let addressChecker: AddressCheckerProvider; + + const wallet = new Wallet().deserialize(walletsFixtures.wallet1); + const apiClient = createSpyObject(ApiClient); + + const createAddressCheckerMock = createServiceFactory({ + service: AddressCheckerProvider, + mocks: [NetworkProvider, NeoApiProvider], + providers: [ + mockProvider(UserDataService, { + currentWallet: wallet, + }), + mockProvider(ArkApiProvider, { + client: apiClient, + }), + ], + }); + + beforeEach(() => { + addressSpectator = createAddressCheckerMock(); + addressChecker = addressSpectator.service; + }); + + describe("Check address", () => { + it("should check the address", done => { + addressChecker.checkAddress(INVALID_ADDRESS).subscribe(data => { + expect(data.message.key).toEqual("VALIDATION.INVALID_ADDRESS"); + done(); + }); + }); + + it("should return the check for own address", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + networkProvider.isValidAddress.and.returnValue(true); + addressChecker.checkAddress(WALLET_ADDRESS).subscribe(data => { + expect(data.message.key).toEqual("VALIDATION.IS_OWN_ADDRESS"); + done(); + }); + }); + + it("should return the check for neo address", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + const neoApiProvider = addressSpectator.get(NeoApiProvider); + networkProvider.isValidAddress.and.returnValue(true); + neoApiProvider.doesAddressExist.and.returnValue(of(true)); + addressChecker.checkAddress(WALLET_ADDRESS).subscribe(data => { + expect(data.message.key).toEqual("VALIDATION.IS_OWN_ADDRESS"); + done(); + }); + }); + + it("should return the check for no transactions", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + const neoApiProvider = addressSpectator.get(NeoApiProvider); + networkProvider.isValidAddress.and.returnValue(true); + neoApiProvider.doesAddressExist.and.returnValue(of(false)); + apiClient.getTransactionList.and.returnValue(of({})); + addressChecker + .checkAddress(walletsFixtures.wallet2.address) + .subscribe(data => { + expect(data.message.key).toEqual( + "VALIDATION.NO_TRANSACTIONS", + ); + done(); + }); + }); + + it("should not throw error if the transaction request fails", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + const neoApiProvider = addressSpectator.get(NeoApiProvider); + networkProvider.isValidAddress.and.returnValue(true); + neoApiProvider.doesAddressExist.and.returnValue(of(false)); + apiClient.getTransactionList.and.returnValue(throwError("ERROR")); + addressChecker + .checkAddress(walletsFixtures.wallet2.address) + .subscribe(data => { + expect(data).toBeUndefined(); + done(); + }); + }); + + it("should not throw error if the checked address has transactions", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + const neoApiProvider = addressSpectator.get(NeoApiProvider); + networkProvider.isValidAddress.and.returnValue(true); + neoApiProvider.doesAddressExist.and.returnValue(of(false)); + apiClient.getTransactionList.and.returnValue( + of({ success: true, transactions }), + ); + addressChecker + .checkAddress(walletsFixtures.wallet3.address) + .subscribe(data => { + expect(data).toBeUndefined(); + done(); + }); + }); + + it("should use handler if it's an neo address", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + const neoApiProvider = addressSpectator.get(NeoApiProvider); + networkProvider.isValidAddress.and.returnValue(true); + neoApiProvider.doesAddressExist.and.returnValue(of(true)); + + addressChecker + .checkAddress(walletsFixtures.wallet2.address) + .subscribe(data => { + expect(data).toBeUndefined(); + done(); + }); + }); + + it("should not use handler if it isn't an neo address", done => { + const networkProvider = addressSpectator.get(NetworkProvider); + const neoApiProvider = addressSpectator.get(NeoApiProvider); + networkProvider.isValidAddress.and.returnValue(true); + neoApiProvider.doesAddressExist.and.returnValue( + throwError("ERROR"), + ); + + addressChecker + .checkAddress(walletsFixtures.wallet2.address) + .subscribe(data => { + expect(data).toBeUndefined(); + done(); + }); + }); + }); +}); diff --git a/src/app/services/address-checker/address-checker.ts b/src/app/services/address-checker/address-checker.ts index 281cbe995..aedfc6969 100644 --- a/src/app/services/address-checker/address-checker.ts +++ b/src/app/services/address-checker/address-checker.ts @@ -116,13 +116,8 @@ export class AddressCheckerProvider { } public hasTransactions(address: string): Observable { - return this.arkApiProvider.client.getTransactionList(address).pipe( - map(txs => { - if (!txs.success) { - throw Error(); - } - return txs.transactions && txs.transactions.length > 0; - }), - ); + return this.arkApiProvider.client + .getTransactionList(address) + .pipe(map(txs => txs?.transactions?.length > 0)); } } diff --git a/test/fixture/transactions.fixture.ts b/test/fixture/transactions.fixture.ts new file mode 100644 index 000000000..69df54ec3 --- /dev/null +++ b/test/fixture/transactions.fixture.ts @@ -0,0 +1,74 @@ +export default [ + { + id: "3e0e5e79954494f02627fbfe56a90af472e67f248b25104bd9dd3fbb3db6801f", + blockId: + "bc7595a25b02ec0dbd68d8696d88193de4c9f695031443af151bd43d9a3ade64", + version: 2, + type: 0, + typeGroup: 1, + amount: "1924098349979836", + fee: "2455570", + sender: "AUDud8tvyVZa67p3QY7XPRUTjRGnWQQ9Xv", + senderPublicKey: + "021d03bace0687a1a5e797f884b13fb46f817ec32de1374a7f223f24404401d220", + recipient: "AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + signature: + "3044022041abc2d3b982d1971a51f57f0887295b31aac34d12c6b49b5b84f9480a582cd902201a9dc3b6d5b22035e74d0e50c5cee52cbea5be13876b2802ebc5fb854f267a18", + confirmations: 227229, + timestamp: { + epoch: 93234376, + unix: 1583335576, + human: "2020-03-04T15:26:16.000Z", + }, + nonce: "11", + }, + { + id: "b83164591e8886c984ee0217f126a651044830388ef66c011be8d7c001cf0ad8", + blockId: + "11540c64bb4edbca4aa1bdcba7d9c05a5ddf8236b2a6c7d1915535e2d3fef394", + version: 2, + type: 0, + typeGroup: 1, + amount: "600000000", + fee: "2581271", + sender: "AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + senderPublicKey: + "03da05c1c1d4f9c6bda13695b2f29fbc65d9589edc070fc61fe97974be3e59c14e", + recipient: "AetoXCuadUXcq7LEQ4yDuADE1tQM3uW5cz", + signatures: [ + "00298d80a3c24456b1e5f884e952d0a3184d117cc1f65009b51f063b3b99e932a41454dfc03d9e94ad36ca32f40d0ba42a845adb968b16a9e01be57033e22f2b3b", + "040996b8d75708ed8ee98d921189f4d8cb2039a38d24063d86376c42c76088420754137f47d840741f247314195f0cc61dfba4d933a362d65b84b8b32898360dcb", + "03f359d12d57aee7a651d51027e9c8e08d808852427c9ab5f4c0c5fdcf0c3b0eb93adc98ec22447ad09618df0d16ccb04945c419553ce616c70badac4ebc62ce11", + ], + confirmations: 227283, + timestamp: { + epoch: 93233944, + unix: 1583335144, + human: "2020-03-04T15:19:04.000Z", + }, + nonce: "1", + }, + { + id: "eca7439797b8777ce97b01eafdb587243c1ab5d14e7c85ad22ae63bb8a45a27f", + blockId: + "e5a5ce1a26f82ee237b10d8c71d9c49da37c51ed0c1ae6f246124aca9e0492d4", + version: 2, + type: 0, + typeGroup: 1, + amount: "2000000000", + fee: "2455570", + sender: "AUDud8tvyVZa67p3QY7XPRUTjRGnWQQ9Xv", + senderPublicKey: + "021d03bace0687a1a5e797f884b13fb46f817ec32de1374a7f223f24404401d220", + recipient: "AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + signature: + "3045022100d0f797b0f90a5f82dcaff0d47cdb6148a1fb3acc22e4c7436eb0666a99669c68022032a041c56cf58a08e07c06d7cda4f07d53746b653bed47b663e6b4fa42fc436d", + confirmations: 227303, + timestamp: { + epoch: 93233784, + unix: 1583334984, + human: "2020-03-04T15:16:24.000Z", + }, + nonce: "10", + }, +]; diff --git a/test/fixture/wallets.fixture.ts b/test/fixture/wallets.fixture.ts index bfd3156d9..f6bae047e 100644 --- a/test/fixture/wallets.fixture.ts +++ b/test/fixture/wallets.fixture.ts @@ -17,4 +17,11 @@ export const wallet3 = { address: "AdS7WvzqusoP759qRo6HDmUz2L34u4fMHz", iv: "hdHE1DvMuuHd7o4n/vmsPA=", cipherKey: "3cetEU2KRIwKQlllmguZTg==", + publicKey: + "03e7635481b035149829ef74f972e69eca75363bc96e75be57579b0e6fb3f22192", + nonce: "19", + balance: "800000000000000", + attributes: {}, + isDelegate: false, + isResigned: false, }; From 70608865f935ad674c7335ec1fa44ac751d3c63d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Thu, 26 Mar 2020 09:42:44 -0300 Subject: [PATCH 40/46] refactor: address and fee component tweaks (#543) * refactor: change input component style * fix: label position on ios * fix: bind form control to input-address * fix: assign address after scanning QR code * fix: change warning to red * test: remove testing library (#534) * test: refactor intro page specs * test: refactor app component specs * test: add input-currency specs * test * test: refactor input-fee component * chore: remove testing-library package * test: add forge provider specs * test: add event bus specs * test: wallet picker component specs * chore: remove single test run Co-authored-by: Caio Alcantara * refactor: input-address value accessor * test: add input-address specs * fix: mask text on passphrase input * fix: odd background color * test: remove single test * fix: min button color on input-fee * test: should work with formControl Co-authored-by: Caio Alcantara --- config.xml | 4 +- .../input-address.component.html | 33 +++++-- .../input-address/input-address.component.ts | 99 +++++++++++++------ .../input-address/input-address.module.ts | 3 +- .../input-address/input-address.spec.ts | 88 +++++++++++++++++ .../input-address/input-address.stories.ts | 51 ++++++++++ .../input-currency.component.html | 1 + .../input-currency.component.scss | 2 + .../input-currency/input-currency.stories.ts | 4 +- .../input-fee/input-fee.component.html | 77 ++++++++------- .../input-fee/input-fee.component.pcss | 12 ++- .../components/input-fee/input-fee.stories.ts | 4 +- .../passphrase-input/passphrase-input.html | 13 ++- .../passphrase-input/passphrase-input.pcss | 3 + .../passphrase-input/passphrase-input.ts | 27 +++-- .../paste-clipboard-value.ts | 10 +- .../passphrase-word-tester.html | 6 +- .../passphrase-word-tester.ts | 9 +- .../contact-create/contact-create.html | 33 ++----- .../contact-create/contact-create.module.ts | 10 +- .../contacts/contact-create/contact-create.ts | 81 +++++++-------- .../transaction-send/transaction-send.html | 1 + .../transaction-send/transaction-send.ts | 8 +- .../pipes/truncate-middle/truncate-middle.ts | 4 + src/assets/styles/app.pcss | 8 +- src/global.scss | 47 +++++++++ src/theme/variables.scss | 18 ++++ 27 files changed, 464 insertions(+), 192 deletions(-) create mode 100644 src/app/components/input-address/input-address.spec.ts create mode 100644 src/app/components/input-address/input-address.stories.ts create mode 100644 src/app/components/passphrase-input/passphrase-input.pcss diff --git a/config.xml b/config.xml index 84a56fff2..33a978bf9 100644 --- a/config.xml +++ b/config.xml @@ -29,11 +29,11 @@ - + - + diff --git a/src/app/components/input-address/input-address.component.html b/src/app/components/input-address/input-address.component.html index ee83ae58a..5a6bff79a 100644 --- a/src/app/components/input-address/input-address.component.html +++ b/src/app/components/input-address/input-address.component.html @@ -1,22 +1,39 @@ - -
- + +
+ - +
- + {{ "WALLETS_PAGE.ADDRESS" | translate }}
diff --git a/src/app/components/input-address/input-address.component.ts b/src/app/components/input-address/input-address.component.ts index b74f33848..79da9d53b 100644 --- a/src/app/components/input-address/input-address.component.ts +++ b/src/app/components/input-address/input-address.component.ts @@ -1,9 +1,14 @@ -import { Component, EventEmitter, OnInit, Output } from "@angular/core"; import { - ControlContainer, - FormControl, - FormGroupDirective, -} from "@angular/forms"; + AfterViewInit, + Component, + EventEmitter, + Input, + Output, + Self, + ViewChild, +} from "@angular/core"; +import { ControlValueAccessor, NgControl } from "@angular/forms"; +import { IonInput } from "@ionic/angular"; import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; @@ -11,44 +16,76 @@ import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; selector: "input-address", templateUrl: "input-address.component.html", styleUrls: ["input-address.component.scss"], - viewProviders: [ - { - provide: ControlContainer, - useExisting: FormGroupDirective, - }, - ], }) -export class InputAddressComponent implements OnInit { +export class InputAddressComponent + implements AfterViewInit, ControlValueAccessor { + @ViewChild(IonInput) + public ionInput: IonInput; + @Output() public inputAddressQRCodeClick = new EventEmitter(); @Output() public inputAddressContactClick = new EventEmitter(); + @Input() + public name = "address"; + + @Input() + public disabled = false; + + @Input() + public showQRButton = true; + + @Input() + public showContactButton = true; + public displayAddress: string; constructor( - private parentForm: FormGroupDirective, private truncateMiddlePipe: TruncateMiddlePipe, - ) {} + @Self() public ngControl: NgControl, + ) { + this.ngControl.valueAccessor = this; + } + + public onChange = (value: string) => {}; + public onTouched = () => {}; + + writeValue(value: string): void { + this.formatAddress(value); + } - public ngOnInit() { - this.parentForm.form.addControl("recipientId", new FormControl()); - this.parentForm.form.controls.recipientId.valueChanges.subscribe( - value => { - this.displayAddress = this.truncateMiddlePipe.transform( - value, - 15, - ); - }, - ); + async ngAfterViewInit() { + try { + const ionInput = await this.ionInput.getInputElement(); + ionInput.focus(); + ionInput.blur(); + } catch (e) { + console.warn(e); + } } - public onPaste(input: ClipboardEvent) { - const value = input.clipboardData.getData("text"); - this.parentForm.form.patchValue({ - recipientAddress: value, - }); + registerOnChange(fn: (value: string) => void): void { + this.onChange = fn; + } + + registerOnTouched(fn: () => void): void { + this.onTouched = fn; + } + + setDisabledState?(isDisabled: boolean): void { + this.disabled = isDisabled; + } + + public onInput(event: CustomEvent) { + // @ts-ignore + const value = event.target.value; + this.formatAddress(value); + + if (!this.ngControl.name) { + this.onChange(value); + } } public emitContactClick() { @@ -58,4 +95,8 @@ export class InputAddressComponent implements OnInit { public emitQRCodeClick() { this.inputAddressQRCodeClick.emit(); } + + private formatAddress(value: string) { + this.displayAddress = this.truncateMiddlePipe.transform(value, 15); + } } diff --git a/src/app/components/input-address/input-address.module.ts b/src/app/components/input-address/input-address.module.ts index e4cc4c4f8..d36026ab4 100644 --- a/src/app/components/input-address/input-address.module.ts +++ b/src/app/components/input-address/input-address.module.ts @@ -1,4 +1,5 @@ import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; import { IonicModule } from "@ionic/angular"; import { SharedModule } from "@/app/shared.module"; @@ -10,7 +11,7 @@ import { InputAddressComponent } from "./input-address.component"; @NgModule({ providers: [TruncateMiddlePipe], declarations: [InputAddressComponent], - imports: [IonicModule, SharedModule, DirectivesModule], + imports: [IonicModule, SharedModule, DirectivesModule, FormsModule], exports: [InputAddressComponent], }) export class InputAddressComponentModule {} diff --git a/src/app/components/input-address/input-address.spec.ts b/src/app/components/input-address/input-address.spec.ts new file mode 100644 index 000000000..e19764dc5 --- /dev/null +++ b/src/app/components/input-address/input-address.spec.ts @@ -0,0 +1,88 @@ +import { FormControl, FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; +import { byTestId, createHostFactory, SpectatorHost } from "@ngneat/spectator"; +import { TranslateModule } from "@ngx-translate/core"; + +import { removeLogs, sleep } from "@@/test/helpers"; +import { DirectivesModule } from "@/directives/directives.module"; +import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; + +import { InputAddressComponent } from "./input-address.component"; + +describe("Input Address", () => { + let spectator: SpectatorHost; + const createHost = createHostFactory({ + component: InputAddressComponent, + imports: [ + IonicModule.forRoot(), + DirectivesModule, + FormsModule, + ReactiveFormsModule, + TranslateModule.forRoot(), + ], + providers: [TruncateMiddlePipe], + }); + + beforeAll(() => removeLogs()); + + it("should work with ngModel", async () => { + spectator = createHost( + ``, + { + hostProps: { + address: "", + }, + }, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-address__input")); + const input = root.querySelector("input"); + spectator.typeInElement("A01238Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", input); + input.blur(); + await sleep(100); + // @ts-ignore + expect(spectator.hostComponent.address).toEqual( + "A01238Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + ); + }); + + it("should work with formControl", async () => { + spectator = createHost( + `
`, + { + hostProps: { + address: new FormControl(""), + }, + }, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-address__input")); + const input = root.querySelector("input"); + spectator.typeInElement("A32108Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", input); + input.blur(); + await sleep(100); + // @ts-ignore + expect(spectator.hostComponent.address.value).toEqual( + "A32108Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", + ); + }); + + it("should truncate on blur", async () => { + spectator = createHost( + ``, + { + hostProps: { + address: "", + }, + }, + ); + await sleep(100); + const root = spectator.query(byTestId("c-input-address__input")); + const input = root.querySelector("input"); + spectator.typeInElement("AXzxJ8Ts3dQ2bvBR1tPE7GUee9iSEJb8HX", input); + input.blur(); + await sleep(100); + // @ts-ignore + expect(input).toHaveValue("AXzxJ8T...SEJb8HX"); + }); +}); diff --git a/src/app/components/input-address/input-address.stories.ts b/src/app/components/input-address/input-address.stories.ts new file mode 100644 index 000000000..c6b3595f0 --- /dev/null +++ b/src/app/components/input-address/input-address.stories.ts @@ -0,0 +1,51 @@ +import { + FormControl, + FormGroup, + FormsModule, + ReactiveFormsModule, + Validators, +} from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; +import { moduleMetadata, storiesOf } from "@storybook/angular"; + +import { SharedModule } from "@/app/shared.module"; +import { DirectivesModule } from "@/directives/directives.module"; +import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; + +import { InputAddressComponent } from "./input-address.component"; + +storiesOf("input-address", module) + .addDecorator( + moduleMetadata({ + declarations: [InputAddressComponent], + imports: [ + IonicModule, + SharedModule, + DirectivesModule, + FormsModule, + ReactiveFormsModule, + ], + providers: [TruncateMiddlePipe], + }), + ) + .add("Default", () => ({ + props: { + address: "", + form: new FormGroup({ + address: new FormControl("AHJJ29sCdR5UNZjdz3BYeDpvvkZCGBjde9", [ + Validators.required, + ]), + }), + }, + component: InputAddressComponent, + template: ` +
+
+ +
+
+ +
+
+ `, + })); diff --git a/src/app/components/input-currency/input-currency.component.html b/src/app/components/input-currency/input-currency.component.html index 9afd20ff8..e99e983a5 100644 --- a/src/app/components/input-currency/input-currency.component.html +++ b/src/app/components/input-currency/input-currency.component.html @@ -6,6 +6,7 @@ (ionBlur)="onTouched()" inputmode="decimal" appPasteClipboardValue + class="w-full" [ngClass]="{ 'c-input-currency--relaxed': isRelaxed }" > diff --git a/src/app/components/input-currency/input-currency.component.scss b/src/app/components/input-currency/input-currency.component.scss index a07c63ee2..cfb6e91b0 100644 --- a/src/app/components/input-currency/input-currency.component.scss +++ b/src/app/components/input-currency/input-currency.component.scss @@ -1,4 +1,6 @@ :host { + width: 100%; + .c-input-currency--relaxed { --padding-top: 12px; --padding-bottom: 12px; diff --git a/src/app/components/input-currency/input-currency.stories.ts b/src/app/components/input-currency/input-currency.stories.ts index 215eadb2b..0a733d52d 100644 --- a/src/app/components/input-currency/input-currency.stories.ts +++ b/src/app/components/input-currency/input-currency.stories.ts @@ -15,9 +15,9 @@ storiesOf("input-currency", module) ) .add("Default", () => ({ component: InputCurrencyComponent, - template: "", + template: `
`, })) .add("Relaxed", () => ({ component: InputCurrencyComponent, - template: ``, + template: `
`, })); diff --git a/src/app/components/input-fee/input-fee.component.html b/src/app/components/input-fee/input-fee.component.html index 59bf93900..f62a199ab 100644 --- a/src/app/components/input-fee/input-fee.component.html +++ b/src/app/components/input-fee/input-fee.component.html @@ -1,50 +1,57 @@ + + {{ "TRANSACTIONS_PAGE.FEE" | translate }} + +
- - {{ "INPUT_FEE.MIN" | translate }} - - - {{ "INPUT_FEE.AVG" | translate }} - - - {{ "INPUT_FEE.MAX" | translate }} - +
+ + {{ "INPUT_FEE.MIN" | translate }} + + + {{ "INPUT_FEE.AVG" | translate }} + + + {{ "INPUT_FEE.MAX" | translate }} + +
- - {{ "TRANSACTIONS_PAGE.FEE" | translate }} - - ({ component: InputFeeComponent, - template: `
`, + template: `
`, })) .add("Range", () => ({ component: InputFeeComponent, - template: `
`, + template: `
`, })); diff --git a/src/app/components/passphrase-input/passphrase-input.html b/src/app/components/passphrase-input/passphrase-input.html index 03ede7316..80190d544 100644 --- a/src/app/components/passphrase-input/passphrase-input.html +++ b/src/app/components/passphrase-input/passphrase-input.html @@ -8,7 +8,7 @@ #inputPassphrase name="passphrase" rows="2" - [ngModel]="passphrase" + [(ngModel)]="passphrase" (ngModelChange)="passphraseChange($event)" autocomplete="off" autocorrect="off" @@ -22,7 +22,7 @@ #inputPassphraseHidden name="passphraseHidden" rows="2" - [ngModel]="passphraseHidden" + [(ngModel)]="passphraseHidden" (ngModelChange)="passphraseHiddenChange($event)" [ngModelOptions]="{standalone: true}" autocomplete="off" @@ -56,8 +56,9 @@ *ngIf="wordSuggestions[0]" color="light" name="wordSuggestion0" - >{{ wordSuggestions[0] }}
+ {{ wordSuggestions[0] }} + {{ wordSuggestions[1] }} + {{ wordSuggestions[1] }} + {{ wordSuggestions[2] }} + {{ wordSuggestions[2] }} +
diff --git a/src/app/components/passphrase-input/passphrase-input.pcss b/src/app/components/passphrase-input/passphrase-input.pcss new file mode 100644 index 000000000..204a33126 --- /dev/null +++ b/src/app/components/passphrase-input/passphrase-input.pcss @@ -0,0 +1,3 @@ +:host { + @apply w-full; +} diff --git a/src/app/components/passphrase-input/passphrase-input.ts b/src/app/components/passphrase-input/passphrase-input.ts index 556bfd8d9..48385ec0d 100644 --- a/src/app/components/passphrase-input/passphrase-input.ts +++ b/src/app/components/passphrase-input/passphrase-input.ts @@ -6,6 +6,7 @@ import { ToastProvider } from "@/services/toast/toast"; @Component({ selector: "passphrase-input", templateUrl: "passphrase-input.html", + styleUrls: ["passphrase-input.pcss"], providers: [ToastProvider], }) export class PassphraseInputComponent implements OnInit { @@ -28,7 +29,7 @@ export class PassphraseInputComponent implements OnInit { ngOnInit() { if (this.passphraseInit) { - this.passphrase = this.passphraseInit; + this.passphraseChange(this.passphraseInit); } } @@ -43,9 +44,9 @@ export class PassphraseInputComponent implements OnInit { passphraseChange(value) { const lastpassphrase = this.passphrase || ""; this.passphrase = value; - this.updatePassphraseHidden(); this.suggestWord(lastpassphrase, this.passphrase); + this.updatePassphraseHidden(); } passphraseHiddenChange(value) { @@ -82,18 +83,22 @@ export class PassphraseInputComponent implements OnInit { } } - this.updatePassphraseHidden(); this.suggestWord(lastPassphrase, this.passphrase); + this.updatePassphraseHidden(); } updatePassphraseHidden() { const wordsPassphrase = (this.passphrase || "").split(" "); const tmpPassphraseHidden = []; - wordsPassphrase.forEach((elem, index, arr) => - tmpPassphraseHidden.push( - index === arr.length - 1 ? elem : "*".repeat(elem.length), - ), - ); + wordsPassphrase.forEach((elem, index, arr) => { + let value: string; + if (index === arr.length - 1 && this.wordSuggestions.length) { + value = elem; + } else { + value = "*".repeat(elem.length); + } + tmpPassphraseHidden.push(value); + }); this.passphraseHidden = tmpPassphraseHidden.join(" "); } @@ -131,8 +136,10 @@ export class PassphraseInputComponent implements OnInit { ) { // we just want one letter to be different - only "manual" typing, don't suggest on copy/paste stuff const wordlist = bip39.wordlists[this.wordlistLanguage]; - this.wordSuggestions = wordlist.filter(word => - word.startsWith(lastWordPassphrase), + this.wordSuggestions = wordlist.filter( + word => + word.startsWith(lastWordPassphrase) && + word !== lastWordPassphrase, ); } } diff --git a/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts b/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts index 80af34560..8c43cd6e2 100644 --- a/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts +++ b/src/app/directives/paste-clipboard-value/paste-clipboard-value.ts @@ -1,17 +1,23 @@ import { Directive, HostListener } from "@angular/core"; import { NgControl } from "@angular/forms"; +import { Platform } from "@ionic/angular"; @Directive({ selector: "[appPasteClipboardValue]", }) export class PasteClipboardValueDirective { - constructor(private model: NgControl) {} + constructor(private model: NgControl, private platform: Platform) {} @HostListener("paste", ["$event"]) onPaste(input: ClipboardEvent) { const value = input?.clipboardData?.getData("text"); + + if (this.platform.is("desktop")) { + return; + } + if (value) { - this.model.control.setValue(value); + this.model.control.patchValue(""); } } } diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html index f0d958ae4..3fddf3e1c 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html @@ -13,10 +13,10 @@

{{ 'PASSPHRASE_TEST.INFO' | translate }}

-
+

{{ 'PASSPHRASE_TEST.DEVNET_WORDS_NOTICE' | translate }}

-
- + + - - + + {{ 'NAME' | translate }} - - {{ 'WALLETS_PAGE.ADDRESS' | translate }} - -
- -
-
+
- {{ 'SAVE' | translate }} diff --git a/src/app/pages/contacts/contact-create/contact-create.module.ts b/src/app/pages/contacts/contact-create/contact-create.module.ts index 91c037ea8..b67029f8b 100644 --- a/src/app/pages/contacts/contact-create/contact-create.module.ts +++ b/src/app/pages/contacts/contact-create/contact-create.module.ts @@ -1,10 +1,9 @@ -import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; -import { FormsModule } from "@angular/forms"; import { RouterModule } from "@angular/router"; import { IonicModule } from "@ionic/angular"; -import { TranslateModule } from "@ngx-translate/core"; +import { SharedModule } from "@/app/shared.module"; +import { InputAddressComponentModule } from "@/components/input-address/input-address.module"; import { QRScannerComponentModule } from "@/components/qr-scanner/qr-scanner.module"; import { DirectivesModule } from "@/directives/directives.module"; @@ -14,12 +13,11 @@ import { ContactCreatePage } from "./contact-create"; declarations: [ContactCreatePage], imports: [ IonicModule, - FormsModule, - CommonModule, + SharedModule, RouterModule.forChild([{ path: "", component: ContactCreatePage }]), - TranslateModule, DirectivesModule, QRScannerComponentModule, + InputAddressComponentModule, ], }) export class ContactCreatePageModule {} diff --git a/src/app/pages/contacts/contact-create/contact-create.ts b/src/app/pages/contacts/contact-create/contact-create.ts index 8751901bd..acd5ab37c 100644 --- a/src/app/pages/contacts/contact-create/contact-create.ts +++ b/src/app/pages/contacts/contact-create/contact-create.ts @@ -1,39 +1,35 @@ -import { Component, OnInit, ViewChild } from "@angular/core"; +import { AfterViewInit, Component, OnInit, ViewChild } from "@angular/core"; +import { FormControl, FormGroup, Validators } from "@angular/forms"; import { ActivatedRoute } from "@angular/router"; import { AlertController, NavController } from "@ionic/angular"; import { TranslateService } from "@ngx-translate/core"; -import { PublicKey } from "ark-ts/core"; import lodash from "lodash"; +import { AddressValidator } from "@/app/validators/address/address"; import { QRScannerComponent } from "@/components/qr-scanner/qr-scanner"; import { QRCodeScheme } from "@/models/model"; import { TranslatableObject } from "@/models/translate"; import { ContactsProvider } from "@/services/contacts/contacts"; import { ToastProvider } from "@/services/toast/toast"; -import { UserDataService } from "@/services/user-data/user-data.interface"; @Component({ selector: "page-contact-create", templateUrl: "contact-create.html", styleUrls: ["contact-create.scss"], + providers: [AddressValidator], }) -export class ContactCreatePage implements OnInit { - @ViewChild("createContactForm", { static: true }) - createContactForm: HTMLFormElement; - @ViewChild("qrScanner", { read: QRScannerComponent, static: true }) +export class ContactCreatePage implements OnInit, AfterViewInit { + @ViewChild(QRScannerComponent) qrScanner: QRScannerComponent; public isNew: boolean; - public address: string; - public contactName: string; - - private currentNetwork; + public formGroup: FormGroup; constructor( private navCtrl: NavController, private route: ActivatedRoute, - private userDataService: UserDataService, + private addressValidator: AddressValidator, private contactsProvider: ContactsProvider, private translateService: TranslateService, private alertCtrl: AlertController, @@ -41,53 +37,49 @@ export class ContactCreatePage implements OnInit { ) {} ngOnInit() { - this.currentNetwork = this.userDataService.currentNetwork; + this.formGroup = new FormGroup({ + name: new FormControl("", [Validators.required]), + address: new FormControl("", [ + Validators.required, + this.addressValidator.isValid.bind(this.addressValidator), + ]), + }); + } - const contact = this.route.snapshot.queryParamMap.get("contact"); - this.address = this.route.snapshot.queryParamMap.get("address"); + ngAfterViewInit() { + const contactRaw = this.route.snapshot.queryParamMap.get("contact"); + let address = this.route.snapshot.queryParamMap.get("address"); + let name: string; - this.isNew = lodash.isEmpty(contact); + this.isNew = lodash.isEmpty(contactRaw); if (!this.isNew) { - const contactMap = JSON.parse(contact); - this.contactName = contactMap.name; - this.address = contactMap.address; + const contactMap = JSON.parse(contactRaw); + name = contactMap.name; + address = contactMap.address; } - this.currentNetwork = this.userDataService.currentNetwork; - } - - validateAddress() { - const validate = PublicKey.validateAddress( - this.address, - this.currentNetwork, - ); - this.createContactForm.form.controls.address.setErrors({ - incorrect: !validate, + this.formGroup.patchValue({ + name: name || "", + address: address || "", }); - if (validate) { - this.createContactForm.form.controls.address.setErrors(null); - } - - return validate; } submitForm() { - if (!this.validateAddress()) { - return; - } + const address = this.formGroup.get("address").value; + const name = this.formGroup.get("name").value; if (this.isNew) { const existingContact = this.contactsProvider.getContactByAddress( - this.address, + address, ); if (existingContact) { this.showConfirmation("CONTACTS_PAGE.OVERWRITE_CONTACT", { name: existingContact.name, - newName: this.contactName, + newName: name, }).then(() => this.contactsProvider - .editContact(existingContact.address, this.contactName) + .editContact(existingContact.address, name) .subscribe( this.closeAndLoadContactList, this.showErrorMessage, @@ -95,7 +87,7 @@ export class ContactCreatePage implements OnInit { ); } else { this.contactsProvider - .addContact(this.address, this.contactName) + .addContact(address, name) .subscribe( this.closeAndLoadContactList, this.showErrorMessage, @@ -103,7 +95,7 @@ export class ContactCreatePage implements OnInit { } } else { this.contactsProvider - .editContact(this.address, this.contactName) + .editContact(address, name) .subscribe(this.closeAndLoadContactList, this.showErrorMessage); } } @@ -114,10 +106,9 @@ export class ContactCreatePage implements OnInit { onScanQRCode(qrCode: QRCodeScheme) { if (qrCode.address) { - this.address = qrCode.address; - this.validateAddress(); + this.formGroup.get("address").setValue(qrCode.address); if (qrCode.label) { - this.contactName = qrCode.label; + this.formGroup.get("name").setValue(qrCode.label); } } else { this.toastProvider.error("QR_CODE.INVALID_QR_ERROR"); diff --git a/src/app/pages/transaction/transaction-send/transaction-send.html b/src/app/pages/transaction/transaction-send/transaction-send.html index 8b0018a32..77ae8e70f 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.html +++ b/src/app/pages/transaction/transaction-send/transaction-send.html @@ -20,6 +20,7 @@ diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index ee6e374af..65eaadb14 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -183,13 +183,6 @@ export class TransactionSendPage implements OnInit, OnDestroy { this.hasSent = false; } - public onPasteAddress(input: ClipboardEvent) { - const value = input.clipboardData.getData("text"); - this.sendForm.patchValue({ - recipientId: value, - }); - } - scanQRCode() { this.qrScanner.open(true); } @@ -216,6 +209,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { onScanQRCode(qrCode: QRCodeScheme) { if (qrCode.address) { + this.sendForm.controls.recipientId.setValue(qrCode.address); const amount = Number(qrCode.amount); if (amount) { this.sendForm.controls.amount.setValue(amount); diff --git a/src/app/pipes/truncate-middle/truncate-middle.ts b/src/app/pipes/truncate-middle/truncate-middle.ts index dd7d10e66..93fa3229a 100644 --- a/src/app/pipes/truncate-middle/truncate-middle.ts +++ b/src/app/pipes/truncate-middle/truncate-middle.ts @@ -5,6 +5,10 @@ import { Pipe, PipeTransform } from "@angular/core"; }) export class TruncateMiddlePipe implements PipeTransform { transform(value: string, limit: number, originalValue?: string) { + if (!value) { + return; + } + if (originalValue && value !== originalValue) { return value; } diff --git a/src/assets/styles/app.pcss b/src/assets/styles/app.pcss index 3d66002e9..65f1dbb76 100644 --- a/src/assets/styles/app.pcss +++ b/src/assets/styles/app.pcss @@ -2,8 +2,12 @@ display: none; } -body:not(.backdrop-no-scroll) ion-app { - background: var(--ion-background-color); +ion-app { + background-color: var(--ion-background-color); +} + +.backdrop-no-scroll[style*="background-color: black"] ion-app { + background-color: black !important; } .c-avatar { diff --git a/src/global.scss b/src/global.scss index 7d72097ff..fc52cf678 100644 --- a/src/global.scss +++ b/src/global.scss @@ -32,8 +32,55 @@ ion-toolbar * { box-sizing: border-box; } +ion-button { + font-weight: 500; +} + +ion-label { + --color: var(--ion-color-dark-tint) !important; +} + +.label-floating { + transform: scale(0.75) !important; +} + +.md ion-label { + &.label-stacked { + transform: scale(0.75) !important; + } +} + ion-item { --highlight-height: 0; + + &.item-input { + --padding-start: 0; + --padding-end: 0; + --inner-padding-end: 0; + --border-color: transparent; + } +} + +ion-input, +ion-textarea { + border: 1px solid var(--ion-color-light-shade); + border-radius: 0.4rem; + + &.ion-invalid.ion-dirty { + border-color: var(--ion-color-danger); + } + + input, + textarea { + --padding-start: 1rem; + --padding-end: 1rem; + } +} + +.dark-theme { + ion-input { + border-color: var(--ion-color-light-tint); + } } .text-selectable { diff --git a/src/theme/variables.scss b/src/theme/variables.scss index 87a9b0ce4..25afc0677 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -223,3 +223,21 @@ --ion-color-step-900: #e7e7e7; --ion-color-step-950: #f3f3f3; } + +.ion-color-success-light { + --ion-color-base: rgba(var(--ion-color-success-rgb), 0.2); + --ion-color-contrast: var(--ion-color-success-shade); + --ion-color-shade: rgba(var(--ion-color-success-rgb), 0.3); + --ion-color-tint: rgba(var(--ion-color-success-rgb), 0.1); +} + +.ion-color-primary-light { + --ion-color-base: rgba(var(--ion-color-primary-rgb), 0.2); + --ion-color-contrast: var(--ion-color-primary-shade); + --ion-color-shade: rgba(var(--ion-color-primary-rgb), 0.3); + --ion-color-tint: rgba(var(--ion-color-primary-rgb), 0.1); + + &.button-outline { + --ion-color-base: rgba(var(--ion-color-primary-rgb), 0.7); + } +} From 1fe77092793603c00c6b1989932121e57e4acbb1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Mar 2020 11:30:23 -0300 Subject: [PATCH 41/46] chore(deps): update dependency prettier to v2 (#535) * chore(deps): update dependency prettier to v2 * style: prettier --write Co-authored-by: Renovate Bot Co-authored-by: Lucio Rubens <4539235+luciorubeens@users.noreply.github.com> --- e2e/protractor.conf.js | 2 +- package-lock.json | 6 +- package.json | 2 +- src/app/app-routing.module.ts | 36 +- src/app/app.component.ts | 16 +- .../confirm-transaction.ts | 4 +- .../custom-network/custom-network.ts | 8 +- .../input-amount/input-amount.component.ts | 8 +- .../passphrase-input/passphrase-input.html | 6 +- .../passphrase-input/passphrase-input.ts | 2 +- src/app/components/pin-code/pin-code.ts | 2 +- .../confirm-transaction.ts | 13 +- .../custom-network-create.ts | 2 +- .../custom-network-edit.ts | 6 +- .../generate-entropy/generate-entropy.ts | 2 +- src/app/modals/pin-code/pin-code.ts | 12 +- src/app/modals/wallet-backup/wallet-backup.ts | 2 +- src/app/models/market.ts | 2 +- src/app/models/transaction.ts | 4 +- .../contacts/contact-create/contact-create.ts | 4 +- .../contacts/contact-list/contact-list.ts | 4 +- .../delegate-detail/delegate-detail.ts | 4 +- src/app/pages/delegates/delegates.ts | 10 +- src/app/pages/intro/intro.ts | 2 +- src/app/pages/login/login.ts | 2 +- .../network-overview/network-overview.page.ts | 4 +- .../network/network-status/network-status.ts | 12 +- .../profiles/profile-create/profile-create.ts | 12 +- .../profiles/profile-signin/profile-signin.ts | 8 +- src/app/pages/settings/settings.ts | 6 +- .../transaction-receive.ts | 2 +- .../transaction-send/transaction-send.ts | 8 +- .../transaction-show/transaction-show.ts | 2 +- .../wallet-dashboard/wallet-dashboard.ts | 30 +- .../wallet-import-manual.html | 6 +- .../wallet-import-manual.ts | 2 +- .../wallet-import/wallet-import.base.ts | 6 +- .../pages/wallet/wallet-list/wallet-list.ts | 14 +- src/app/pipes/escape-html/escape-html.ts | 2 +- src/app/pipes/market-number/market-number.ts | 8 +- .../pipes/timestamp-human/timestamp-human.ts | 6 +- src/app/pipes/timezone/timezone.ts | 5 +- .../address-checker/address-checker.spec.ts | 32 +- .../address-checker/address-checker.ts | 6 +- src/app/services/ark-api/ark-api.ts | 62 +- src/app/services/auth/auth.spec.ts | 48 +- src/app/services/auth/auth.ts | 14 +- src/app/services/contacts/contacts.spec.ts | 54 +- src/app/services/contacts/contacts.ts | 2 +- src/app/services/event-bus/event-bus.spec.ts | 4 +- src/app/services/market-data/market-data.ts | 14 +- src/app/services/neo-api/neo-api.ts | 2 +- .../settings-data/settings-data.spec.ts | 14 +- .../services/settings-data/settings-data.ts | 6 +- src/app/services/storage/storage.spec.ts | 10 +- src/app/services/storage/storage.ts | 2 +- src/app/services/toast/toast.ts | 2 +- src/app/services/user-data/user-data.spec.ts | 74 +- src/app/services/user-data/user-data.ts | 16 +- src/app/utils/ark-client.ts | 66 +- src/app/utils/ark-peer-discovery.ts | 28 +- src/assets/i18n/pt-br.json | 14 +- src/assets/i18n/zh.json | 632 +++++++++--------- src/main.ts | 2 +- src/polyfills.ts | 2 +- test/helpers.ts | 2 +- test/mocks.ts | 14 +- 67 files changed, 705 insertions(+), 711 deletions(-) diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js index f9c707888..a132b9205 100644 --- a/e2e/protractor.conf.js +++ b/e2e/protractor.conf.js @@ -18,7 +18,7 @@ exports.config = { jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000, - print: function() {}, + print: function () {}, }, onPrepare() { require("ts-node").register({ diff --git a/package-lock.json b/package-lock.json index 7a946572e..8422836cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17513,9 +17513,9 @@ "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz", + "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==", "dev": true }, "prettier-linter-helpers": { diff --git a/package.json b/package.json index 65207cc18..666eb5c98 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "postcss-loader": "^3.0.0", "postcss-nested": "^4.2.1", "postcss-scss": "^2.0.0", - "prettier": "^1.19.1", + "prettier": "^2.0.0", "protractor": "~5.4.3", "tailwindcss": "^1.2.0", "ts-node": "~8.8.0", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 7d0931792..f43054787 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -7,13 +7,13 @@ const routes: Routes = [ { path: "intro", loadChildren: () => - import("./pages/intro/intro.module").then(m => m.IntroPageModule), + import("./pages/intro/intro.module").then((m) => m.IntroPageModule), }, { path: "network-status", loadChildren: () => import("./pages/network/network-status/network-status.module").then( - m => m.NetworkStatusPageModule, + (m) => m.NetworkStatusPageModule, ), }, { @@ -21,25 +21,25 @@ const routes: Routes = [ loadChildren: () => import( "./pages/network/network-overview/network-overview.module" - ).then(m => m.NetworkOverviewPageModule), + ).then((m) => m.NetworkOverviewPageModule), }, { path: "login", loadChildren: () => - import("./pages/login/login.module").then(m => m.LoginPageModule), + import("./pages/login/login.module").then((m) => m.LoginPageModule), }, { path: "settings", loadChildren: () => import("./pages/settings/settings.module").then( - m => m.SettingsPageModule, + (m) => m.SettingsPageModule, ), }, { path: "delegates", loadChildren: () => import("./pages/delegates/delegates.module").then( - m => m.DelegatesPageModule, + (m) => m.DelegatesPageModule, ), }, @@ -48,14 +48,14 @@ const routes: Routes = [ loadChildren: () => import( "./pages/profiles/profile-signin/profile-signin.module" - ).then(m => m.ProfileSigninPageModule), + ).then((m) => m.ProfileSigninPageModule), }, { path: "profile/create", loadChildren: () => import( "./pages/profiles/profile-create/profile-create.module" - ).then(m => m.ProfileCreatePageModule), + ).then((m) => m.ProfileCreatePageModule), }, { @@ -63,13 +63,13 @@ const routes: Routes = [ loadChildren: () => import( "./pages/contacts/contact-create/contact-create.module" - ).then(m => m.ContactCreatePageModule), + ).then((m) => m.ContactCreatePageModule), }, { path: "contacts", loadChildren: () => import("./pages/contacts/contact-list/contact-list.module").then( - m => m.ContactListPageModule, + (m) => m.ContactListPageModule, ), }, @@ -78,28 +78,28 @@ const routes: Routes = [ loadChildren: () => import( "./pages/transaction/transaction-send/transaction-send.module" - ).then(m => m.TransactionSendPageModule), + ).then((m) => m.TransactionSendPageModule), }, { path: "transaction/receive", loadChildren: () => import( "./pages/transaction/transaction-receive/transaction-receive.module" - ).then(m => m.WalletReceivePageModule), + ).then((m) => m.WalletReceivePageModule), }, { path: "transaction/response", loadChildren: () => import( "./pages/transaction/transaction-response/transaction-response.module" - ).then(m => m.TransactionResponsePageModule), + ).then((m) => m.TransactionResponsePageModule), }, { path: "transaction/show", loadChildren: () => import( "./pages/transaction/transaction-show/transaction-show.module" - ).then(m => m.TransactionShowPageModule), + ).then((m) => m.TransactionShowPageModule), }, { @@ -107,13 +107,13 @@ const routes: Routes = [ loadChildren: () => import( "./pages/wallet/wallet-dashboard/wallet-dashboard.module" - ).then(m => m.WalletDashboardPageModule), + ).then((m) => m.WalletDashboardPageModule), }, { path: "wallets/import", loadChildren: () => import("./pages/wallet/wallet-import/wallet-import.module").then( - m => m.WalletImportPageModule, + (m) => m.WalletImportPageModule, ), }, { @@ -121,13 +121,13 @@ const routes: Routes = [ loadChildren: () => import( "./pages/wallet/wallet-import-manual/wallet-import-manual.module" - ).then(m => m.WalletManualImportPageModule), + ).then((m) => m.WalletManualImportPageModule), }, { path: "wallets", loadChildren: () => import("./pages/wallet/wallet-list/wallet-list.module").then( - m => m.WalletListPageModule, + (m) => m.WalletListPageModule, ), }, ]; diff --git a/src/app/app.component.ts b/src/app/app.component.ts index fe6d12a14..ee5e4a5c4 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -99,7 +99,7 @@ export class AppComponent implements OnDestroy, OnInit { this.initBackButton(); this.splashScreen.hide(); - this.authProvider.hasSeenIntro().subscribe(hasSeenIntro => { + this.authProvider.hasSeenIntro().subscribe((hasSeenIntro) => { if (!hasSeenIntro) { this.openPage("/intro", true); return; @@ -112,7 +112,7 @@ export class AppComponent implements OnDestroy, OnInit { initTranslation() { this.translateService.setDefaultLang("en"); - this.settingsDataProvider.settings.subscribe(settings => { + this.settingsDataProvider.settings.subscribe((settings) => { this.translateService.use(settings.language); this.translateService @@ -121,7 +121,7 @@ export class AppComponent implements OnDestroy, OnInit { "EXIT_APP_TEXT", "SIGN_OUT_PROFILE_TEXT", ]) - .subscribe(translations => { + .subscribe((translations) => { // this.config.set('backButtonText', translations['BACK_BUTTON_TEXT']); this.exitText = translations.EXIT_APP_TEXT; this.signOutText = translations.SIGN_OUT_PROFILE_TEXT; @@ -198,7 +198,7 @@ export class AppComponent implements OnDestroy, OnInit { } initTheme() { - this.settingsDataProvider.settings.subscribe(settings => { + this.settingsDataProvider.settings.subscribe((settings) => { if (settings.darkMode) { this.renderer.addClass( this.element.nativeElement.parentNode, @@ -260,7 +260,7 @@ export class AppComponent implements OnDestroy, OnInit { this.menuCtrl.enable(false, this.menuId); - this.eventBus.$subject.subscribe(event => { + this.eventBus.$subject.subscribe((event) => { switch (event.key) { case "qrScanner:show": this.hideRouter = true; @@ -305,10 +305,10 @@ export class AppComponent implements OnDestroy, OnInit { } private showConfirmation(title: string): Promise { - return new Promise(resolve => { + return new Promise((resolve) => { this.translateService .get(["NO", "YES"]) - .subscribe(async translation => { + .subscribe(async (translation) => { const alert = await this.alertCtrl.create({ subHeader: title, buttons: [ @@ -336,7 +336,7 @@ export class AppComponent implements OnDestroy, OnInit { this.arkApiProvider .getDelegateByPublicKey(wallet.publicKey) .pipe( - switchMap(delegate => + switchMap((delegate) => this.userDataService.ensureWalletDelegateProperties( wallet, delegate, diff --git a/src/app/components/confirm-transaction/confirm-transaction.ts b/src/app/components/confirm-transaction/confirm-transaction.ts index 256b635a2..835646f9b 100644 --- a/src/app/components/confirm-transaction/confirm-transaction.ts +++ b/src/app/components/confirm-transaction/confirm-transaction.ts @@ -55,7 +55,7 @@ export class ConfirmTransactionComponent { keys.secondPassphrase, ) .subscribe( - async tx => { + async (tx) => { const modal = await this.modalCtrl.create({ component: ConfirmTransactionModal, componentProps: { @@ -100,7 +100,7 @@ export class ConfirmTransactionComponent { (error as any), error.parameters, ) - .subscribe(errorMessage => { + .subscribe((errorMessage) => { this.error.emit(errorMessage); this.presentWrongModal({ status: false, diff --git a/src/app/components/custom-network/custom-network.ts b/src/app/components/custom-network/custom-network.ts index b03c375ae..801748ec7 100644 --- a/src/app/components/custom-network/custom-network.ts +++ b/src/app/components/custom-network/custom-network.ts @@ -71,13 +71,13 @@ export class CustomNetworkComponent implements OnInit { this.networks = this.userDataService.networks; this.networksIds = lodash.keys(this.networks); this.networkChoices = this.networksIds - .filter(id => + .filter((id) => this.userDataService.defaultNetworks.every( - defaultNetwork => + (defaultNetwork) => this.networks[id].name !== defaultNetwork.name, ), ) - .map(id => { + .map((id) => { return { name: this.networks[id].name, id }; }); } @@ -111,7 +111,7 @@ export class CustomNetworkComponent implements OnInit { this.loadNetworks(); const filteredNetworks = this.networkChoices.filter( - n => n.id === data.networkId, + (n) => n.id === data.networkId, ); if (filteredNetworks.length) { this.activeNetworkChoice = filteredNetworks[0]; diff --git a/src/app/components/input-amount/input-amount.component.ts b/src/app/components/input-amount/input-amount.component.ts index 277413941..c9203637c 100644 --- a/src/app/components/input-amount/input-amount.component.ts +++ b/src/app/components/input-amount/input-amount.component.ts @@ -46,15 +46,15 @@ export class InputAmountComponent implements OnInit { new FormControl("amountEquivalent"), ); - this.parentForm.form.controls.amount.valueChanges.subscribe(value => + this.parentForm.form.controls.amount.valueChanges.subscribe((value) => this.onInputToken(value), ); this.parentForm.form.controls.amountEquivalent.valueChanges.subscribe( - value => this.onInputFiat(value), + (value) => this.onInputFiat(value), ); - this.marketDataProvider.ticker.subscribe(ticker => { - this.settingsDataProvider.settings.subscribe(settings => { + this.marketDataProvider.ticker.subscribe((ticker) => { + this.settingsDataProvider.settings.subscribe((settings) => { this.marketCurrency = ticker.getCurrency({ code: settings.currency, }); diff --git a/src/app/components/passphrase-input/passphrase-input.html b/src/app/components/passphrase-input/passphrase-input.html index 80190d544..223ba5176 100644 --- a/src/app/components/passphrase-input/passphrase-input.html +++ b/src/app/components/passphrase-input/passphrase-input.html @@ -35,17 +35,17 @@ fill="clear" slot="end" (click)="showHidePassphrase()" - style="height:100%;" + style="height: 100%;" >
diff --git a/src/app/components/passphrase-input/passphrase-input.ts b/src/app/components/passphrase-input/passphrase-input.ts index 48385ec0d..cf44d9cb5 100644 --- a/src/app/components/passphrase-input/passphrase-input.ts +++ b/src/app/components/passphrase-input/passphrase-input.ts @@ -137,7 +137,7 @@ export class PassphraseInputComponent implements OnInit { // we just want one letter to be different - only "manual" typing, don't suggest on copy/paste stuff const wordlist = bip39.wordlists[this.wordlistLanguage]; this.wordSuggestions = wordlist.filter( - word => + (word) => word.startsWith(lastWordPassphrase) && word !== lastWordPassphrase, ); diff --git a/src/app/components/pin-code/pin-code.ts b/src/app/components/pin-code/pin-code.ts index a53e51617..72a06b5a4 100644 --- a/src/app/components/pin-code/pin-code.ts +++ b/src/app/components/pin-code/pin-code.ts @@ -139,7 +139,7 @@ export class PinCodeComponent { if (oldPassword) { this.translateService .get("PIN_CODE.UPDATING") - .subscribe(async updatingText => { + .subscribe(async (updatingText) => { const loading = await this.loadingCtrl.create( { message: updatingText }, ); diff --git a/src/app/modals/confirm-transaction/confirm-transaction.ts b/src/app/modals/confirm-transaction/confirm-transaction.ts index 4f8171acd..3f66e877a 100644 --- a/src/app/modals/confirm-transaction/confirm-transaction.ts +++ b/src/app/modals/confirm-transaction/confirm-transaction.ts @@ -54,7 +54,7 @@ export class ConfirmTransactionModal implements OnInit, OnDestroy { () => { this.dismiss(true); }, - error => { + (error) => { this.translateService .get( [ @@ -63,15 +63,16 @@ export class ConfirmTransactionModal implements OnInit, OnDestroy { ], { fee: ArkUtility.subToUnit(this.transaction.fee) }, ) - .subscribe(translations => { + .subscribe((translations) => { let message = error.message; if (error.errors) { const errors = error.errors || {}; const anyLowFee = Object.keys(errors).some( - transactionId => { + (transactionId) => { return errors[transactionId].some( - item => item.type === "ERR_LOW_FEE", + (item) => + item.type === "ERR_LOW_FEE", ); }, ); @@ -135,13 +136,13 @@ export class ConfirmTransactionModal implements OnInit, OnDestroy { this.marketDataProvider.onUpdateTicker$ .pipe( takeUntil(this.unsubscriber$), - tap(ticker => { + tap((ticker) => { if (!ticker) { return; } this.ticker = ticker; - this.settingsDataProvider.settings.subscribe(settings => { + this.settingsDataProvider.settings.subscribe((settings) => { this.marketCurrency = this.ticker.getCurrency({ code: settings.currency, }); diff --git a/src/app/modals/custom-network-create/custom-network-create.ts b/src/app/modals/custom-network-create/custom-network-create.ts index de22096e4..66f812422 100644 --- a/src/app/modals/custom-network-create/custom-network-create.ts +++ b/src/app/modals/custom-network-create/custom-network-create.ts @@ -39,7 +39,7 @@ export class CustomNetworkCreateModal { .getNodeConfiguration() .pipe(finalize(() => loading.dismiss())) .subscribe( - response => { + (response) => { this.network.name = this.name; this.network.nethash = response.nethash; this.network.token = response.token; diff --git a/src/app/modals/custom-network-edit/custom-network-edit.ts b/src/app/modals/custom-network-edit/custom-network-edit.ts index defee8d4e..c0bae970f 100644 --- a/src/app/modals/custom-network-edit/custom-network-edit.ts +++ b/src/app/modals/custom-network-edit/custom-network-edit.ts @@ -36,7 +36,7 @@ export class CustomNetworkEditModal { private toastProvider: ToastProvider, ) { const defaultNetworksNames = this.userDataService.defaultNetworks.map( - item => item.name, + (item) => item.name, ); this.network = this.navParams.get("network") || new StoredNetwork(); this.networkId = this.navParams.get("id"); @@ -68,7 +68,7 @@ export class CustomNetworkEditModal { public save(): void { this.userDataService .addOrUpdateNetwork(this.network, this.networkId) - .subscribe(network => + .subscribe((network) => this.dismiss({ action: EditNetworkAction.Update, networkId: network.id, @@ -89,7 +89,7 @@ export class CustomNetworkEditModal { this.translateService .get(["CUSTOM_NETWORK.CONFIRM_DELETE", "NO", "YES"]) - .subscribe(async translations => { + .subscribe(async (translations) => { const alert = await this.alertCtrl.create({ header: translations["CUSTOM_NETWORK.CONFIRM_DELETE"], buttons: [ diff --git a/src/app/modals/generate-entropy/generate-entropy.ts b/src/app/modals/generate-entropy/generate-entropy.ts index bdcf4bb31..fb67042f9 100644 --- a/src/app/modals/generate-entropy/generate-entropy.ts +++ b/src/app/modals/generate-entropy/generate-entropy.ts @@ -76,7 +76,7 @@ export class GenerateEntropyModal implements OnDestroy { if (this.count > this.total) { const hex = this.entropy - .map(v => this.lpad(v.toString(16), "0", 2)) + .map((v) => this.lpad(v.toString(16), "0", 2)) .join(""); this.finished = true; this.dismiss(hex); diff --git a/src/app/modals/pin-code/pin-code.ts b/src/app/modals/pin-code/pin-code.ts index b8b92c6f8..b38fa1323 100644 --- a/src/app/modals/pin-code/pin-code.ts +++ b/src/app/modals/pin-code/pin-code.ts @@ -84,7 +84,7 @@ export class PinCodeModal implements OnInit, OnDestroy { "NO", "YES", ]) - .subscribe(async translation => { + .subscribe(async (translation) => { const alert = await this.alertCtrl.create({ header: translation["PIN_CODE.WEAK_PIN"], message: @@ -124,7 +124,7 @@ export class PinCodeModal implements OnInit, OnDestroy { if (this.validatePassword) { this.authProvider .validateMasterPassword(this.password) - .subscribe(result => { + .subscribe((result) => { if (!result) { this.setWrong(); } else { @@ -147,7 +147,7 @@ export class PinCodeModal implements OnInit, OnDestroy { setWrong() { this.vibration.vibrate(constants.VIBRATION_TIME_LONG_MS); - this.authProvider.increaseAttempts().subscribe(newAttempts => { + this.authProvider.increaseAttempts().subscribe((newAttempts) => { this.attempts = newAttempts; this.verifyAttempts(); @@ -193,7 +193,7 @@ export class PinCodeModal implements OnInit, OnDestroy { ngOnInit() { this.authProvider .getAttempts() - .subscribe(attempts => (this.attempts = attempts)); + .subscribe((attempts) => (this.attempts = attempts)); this.loadUnlockTime(); } @@ -204,7 +204,7 @@ export class PinCodeModal implements OnInit, OnDestroy { } private loadUnlockTime() { - this.authProvider.getUnlockTimestamp().subscribe(timestamp => { + this.authProvider.getUnlockTimestamp().subscribe((timestamp) => { if (!timestamp || lodash.isEmpty(timestamp)) { return; } @@ -228,7 +228,7 @@ export class PinCodeModal implements OnInit, OnDestroy { // Start the countdown this.unlockCountdown$ = timer(0, 1000) .pipe( - map(x => this.zone.run(() => this.unlockDiff--)), + map((x) => this.zone.run(() => this.unlockDiff--)), takeWhile(() => this.unlockDiff > 0), finalize(() => this.zone.run( diff --git a/src/app/modals/wallet-backup/wallet-backup.ts b/src/app/modals/wallet-backup/wallet-backup.ts index 1b9a2c757..481986adf 100644 --- a/src/app/modals/wallet-backup/wallet-backup.ts +++ b/src/app/modals/wallet-backup/wallet-backup.ts @@ -45,7 +45,7 @@ export class WalletBackupModal implements OnInit { this.currentNetwork = this.userDataService.currentNetwork; this.settingsDataProvider.settings.subscribe( - settings => (this.wordlistLanguage = settings.wordlistLanguage), + (settings) => (this.wordlistLanguage = settings.wordlistLanguage), ); } diff --git a/src/app/models/market.ts b/src/app/models/market.ts index 88afa31e8..07a78f5cd 100644 --- a/src/app/models/market.ts +++ b/src/app/models/market.ts @@ -229,7 +229,7 @@ export class MarketHistory { .keys() .takeRight(7) .value() - .map(date => new Date(parseInt(date))); + .map((date) => new Date(parseInt(date))); const prices = lodash(this.history[currencyCode]) .values() .takeRight(7) diff --git a/src/app/models/transaction.ts b/src/app/models/transaction.ts index d086cd519..0c5a95ccd 100644 --- a/src/app/models/transaction.ts +++ b/src/app/models/transaction.ts @@ -151,9 +151,7 @@ export class Transaction extends TransactionModel { if (!price) { price = market.getPriceByDate( marketCurrency.code, - moment(this.date) - .subtract(1, "d") - .toDate(), + moment(this.date).subtract(1, "d").toDate(), ); } } diff --git a/src/app/pages/contacts/contact-create/contact-create.ts b/src/app/pages/contacts/contact-create/contact-create.ts index acd5ab37c..0b1276288 100644 --- a/src/app/pages/contacts/contact-create/contact-create.ts +++ b/src/app/pages/contacts/contact-create/contact-create.ts @@ -127,10 +127,10 @@ export class ContactCreatePage implements OnInit, AfterViewInit { titleKey: string, stringParams: any, ): Promise { - return new Promise(resolve => { + return new Promise((resolve) => { this.translateService .get([titleKey, "NO", "YES"], stringParams) - .subscribe(async translation => { + .subscribe(async (translation) => { const alert = await this.alertCtrl.create({ subHeader: translation[titleKey], buttons: [ diff --git a/src/app/pages/contacts/contact-list/contact-list.ts b/src/app/pages/contacts/contact-list/contact-list.ts index eb0049a74..594534907 100644 --- a/src/app/pages/contacts/contact-list/contact-list.ts +++ b/src/app/pages/contacts/contact-list/contact-list.ts @@ -42,7 +42,7 @@ export class ContactListPage { this.translateService .get(["EDIT", "DELETE"]) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(async translation => { + .subscribe(async (translation) => { const buttons = [ { text: translation.EDIT, @@ -80,7 +80,7 @@ export class ContactListPage { ], { name: contactName }, ) - .subscribe(async translation => { + .subscribe(async (translation) => { const alert = await this.alertCtrl.create({ header: translation.ARE_YOU_SURE, message: translation["CONTACTS_PAGE.DELETE_CONTACT"], diff --git a/src/app/pages/delegates/delegate-detail/delegate-detail.ts b/src/app/pages/delegates/delegate-detail/delegate-detail.ts index dd82a8c48..31bae986b 100644 --- a/src/app/pages/delegates/delegate-detail/delegate-detail.ts +++ b/src/app/pages/delegates/delegate-detail/delegate-detail.ts @@ -65,7 +65,7 @@ export class DelegateDetailPage implements OnInit, OnDestroy { this.arkApiProvider .prepareFeesByType(TransactionType.Vote) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(data => { + .subscribe((data) => { this.nodeFees = data; }); } @@ -118,7 +118,7 @@ export class DelegateDetailPage implements OnInit, OnDestroy { ], { delegate: this.walletVote.username }, ) - .subscribe(async translation => { + .subscribe(async (translation) => { const alert = await this.alertCtrl.create({ header: translation["DELEGATES_PAGE.UNVOTE"], message: diff --git a/src/app/pages/delegates/delegates.ts b/src/app/pages/delegates/delegates.ts index 93e54bd07..7a00864a0 100644 --- a/src/app/pages/delegates/delegates.ts +++ b/src/app/pages/delegates/delegates.ts @@ -111,7 +111,7 @@ export class DelegatesPage implements OnDestroy { } onSlideChanged() { - this.slider.getActiveIndex().then(index => { + this.slider.getActiveIndex().then((index) => { this.rankStatus = this.slides[index]; }); } @@ -158,7 +158,7 @@ export class DelegatesPage implements OnDestroy { this.arkApiProvider.transactionBuilder .createVote(data) - .subscribe(transaction => { + .subscribe((transaction) => { this.confirmTransaction.open(transaction, keys, null, { username: this.selectedDelegate.username, }); @@ -169,7 +169,7 @@ export class DelegatesPage implements OnDestroy { this.currentNetwork = this.arkApiProvider.network; this.currentWallet = this.userDataService.currentWallet; this.zone.runOutsideAngular(() => { - this.arkApiProvider.delegates.subscribe(data => + this.arkApiProvider.delegates.subscribe((data) => this.zone.run(() => { this.delegates = data; this.activeDelegates = this.delegates.slice( @@ -211,7 +211,7 @@ export class DelegatesPage implements OnDestroy { .getWalletVotes(this.currentWallet.address) .pipe(takeUntil(this.unsubscriber$)) .subscribe( - data => { + (data) => { if (data.success && data.delegates.length > 0) { this.walletVote = data.delegates[0]; } @@ -226,7 +226,7 @@ export class DelegatesPage implements OnDestroy { this.arkApiProvider.onUpdateDelegates$ .pipe( takeUntil(this.unsubscriber$), - tap(delegates => { + tap((delegates) => { this.zone.run(() => (this.delegates = delegates)); }), ) diff --git a/src/app/pages/intro/intro.ts b/src/app/pages/intro/intro.ts index 1d0370112..de54a0071 100644 --- a/src/app/pages/intro/intro.ts +++ b/src/app/pages/intro/intro.ts @@ -33,7 +33,7 @@ export class IntroPage implements OnInit { "INTRO_PAGE.FAST_EASY", "INTRO_PAGE.TEXT_3", ]) - .subscribe(translation => { + .subscribe((translation) => { this.slides = [ { title: translation["INTRO_PAGE.WELCOME"], diff --git a/src/app/pages/login/login.ts b/src/app/pages/login/login.ts index 8f3f0dda7..9ad478964 100644 --- a/src/app/pages/login/login.ts +++ b/src/app/pages/login/login.ts @@ -23,7 +23,7 @@ export class LoginPage implements OnInit { ) {} ngOnInit() { - this.authProvider.getMasterPassword().subscribe(master => { + this.authProvider.getMasterPassword().subscribe((master) => { this.hasProfiles = master && !isNil(this.userDataService.profiles); this.isReady = true; }); diff --git a/src/app/pages/network/network-overview/network-overview.page.ts b/src/app/pages/network/network-overview/network-overview.page.ts index f7dc5916c..44f4b658e 100644 --- a/src/app/pages/network/network-overview/network-overview.page.ts +++ b/src/app/pages/network/network-overview/network-overview.page.ts @@ -29,7 +29,7 @@ export class NetworkOverviewPage { ) {} presentActionSheet(networkId: string) { - this.translateService.get(["EDIT"]).subscribe(async translation => { + this.translateService.get(["EDIT"]).subscribe(async (translation) => { const buttons = [ { text: translation.EDIT, @@ -54,7 +54,7 @@ export class NetworkOverviewPage { load() { this.networks = this.userDataService.networks; const defaultNetworks = this.userDataService.defaultNetworks.map( - item => item.name, + (item) => item.name, ); const result = Object.entries(this.networks).map(([id, network]) => { diff --git a/src/app/pages/network/network-status/network-status.ts b/src/app/pages/network/network-status/network-status.ts index 6bb6d2b00..c88ac51eb 100644 --- a/src/app/pages/network/network-status/network-status.ts +++ b/src/app/pages/network/network-status/network-status.ts @@ -41,7 +41,7 @@ export class NetworkStatusPage implements OnInit, OnDestroy { this.translateService .get("NETWORKS_PAGE.LOOKING_GOOD_PEER") .pipe(debounceTime(500)) - .subscribe(async translate => { + .subscribe(async (translate) => { this.loader = await this.loadingCtrl.create({ message: translate, duration: 10000, @@ -51,7 +51,7 @@ export class NetworkStatusPage implements OnInit, OnDestroy { .connectToRandomPeer() .pipe( takeUntil(this.unsubscriber$), - catchError(e => { + catchError((e) => { this.loader.dismiss(); this.toastProvider.error( e || "NETWORKS_PAGE.NO_GOOD_PEER", @@ -85,7 +85,7 @@ export class NetworkStatusPage implements OnInit, OnDestroy { this.arkApiProvider.client .getPeerConfig(this.currentPeer.ip, this.currentNetwork.p2pPort) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(response => { + .subscribe((response) => { if (response) { this.zone.run(() => { this.currentPeer.version = response.data.version; @@ -96,7 +96,7 @@ export class NetworkStatusPage implements OnInit, OnDestroy { this.arkApiProvider.client .getPeerSyncing(this.getPeerUrl()) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(response => { + .subscribe((response) => { if (response) { this.zone.run(() => { this.currentPeer.height = response.height; @@ -109,13 +109,13 @@ export class NetworkStatusPage implements OnInit, OnDestroy { this.arkApiProvider.onUpdatePeer$ .pipe( takeUntil(this.unsubscriber$), - tap(peer => { + tap((peer) => { if (this.loader) { this.loader.dismiss(); } this.translateService .get("NETWORKS_PAGE.PEER_SUCCESSFULLY_CHANGED") - .subscribe(translate => + .subscribe((translate) => this.toastProvider.success(translate), ); this.zone.run(() => (this.currentPeer = peer)); diff --git a/src/app/pages/profiles/profile-create/profile-create.ts b/src/app/pages/profiles/profile-create/profile-create.ts index 6b1c2ba5d..346d8f446 100644 --- a/src/app/pages/profiles/profile-create/profile-create.ts +++ b/src/app/pages/profiles/profile-create/profile-create.ts @@ -41,7 +41,7 @@ export class ProfileCreatePage implements OnDestroy { onSelectNetwork(event: any) { const detail = event.detail.value; this.activeNetworkChoice = this.networkChoices.find( - item => item.id === detail, + (item) => item.id === detail, ); this.newProfile.networkId = this.activeNetworkChoice.id; } @@ -82,17 +82,17 @@ export class ProfileCreatePage implements OnDestroy { load() { this.translateService .get("PROFILES_PAGE.CUSTOM") - .subscribe(customTrans => { + .subscribe((customTrans) => { this.networks = this.userDataService.networks; this.networksIds = lodash.keys(this.networks); this.networkChoices = this.networksIds - .filter(id => + .filter((id) => this.userDataService.defaultNetworks.some( - defaultNetwork => + (defaultNetwork) => this.networks[id].name === defaultNetwork.name, ), ) - .map(id => { + .map((id) => { return { name: this.networks[id].name, id }; }); this.networkChoices.push({ name: customTrans, id: null }); @@ -125,7 +125,7 @@ export class ProfileCreatePage implements OnDestroy { private showAlert(titleKey: string, stringParams: any) { this.translateService .get([titleKey, "BACK_BUTTON_TEXT"], stringParams) - .subscribe(async translation => { + .subscribe(async (translation) => { const alert = await this.alertCtrl.create({ subHeader: translation[titleKey], buttons: [translation.BACK_BUTTON_TEXT], diff --git a/src/app/pages/profiles/profile-signin/profile-signin.ts b/src/app/pages/profiles/profile-signin/profile-signin.ts index ac47c7b04..5a7aec410 100644 --- a/src/app/pages/profiles/profile-signin/profile-signin.ts +++ b/src/app/pages/profiles/profile-signin/profile-signin.ts @@ -48,7 +48,7 @@ export class ProfileSigninPage implements OnDestroy { presentProfileActionSheet(profileId: string) { this.translateService .get(["EDIT", "DELETE"]) - .subscribe(async translation => { + .subscribe(async (translation) => { const buttons = [ { text: translation.DELETE, @@ -78,7 +78,7 @@ export class ProfileSigninPage implements OnDestroy { showDeleteConfirm(profileId: string) { this.translateService .get(["ARE_YOU_SURE", "CONFIRM", "CANCEL"]) - .subscribe(async translation => { + .subscribe(async (translation) => { const confirm = await this.alertCtrl.create({ header: translation.ARE_YOU_SURE, buttons: [ @@ -119,7 +119,7 @@ export class ProfileSigninPage implements OnDestroy { this.authProvider .login(this.profileIdSelected) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(status => { + .subscribe((status) => { if (status) { this.navCtrl.navigateRoot("/wallets"); } else { @@ -137,7 +137,7 @@ export class ProfileSigninPage implements OnDestroy { this.networks = this.userDataService.networks; this.addresses = lodash(this.profiles) - .mapValues(o => [o.name, o.networkId]) + .mapValues((o) => [o.name, o.networkId]) .transform((result, data, id) => { const network = this.networks[data[1]]; if (!network) { diff --git a/src/app/pages/settings/settings.ts b/src/app/pages/settings/settings.ts index dda901c82..362de60a0 100644 --- a/src/app/pages/settings/settings.ts +++ b/src/app/pages/settings/settings.ts @@ -90,7 +90,7 @@ export class SettingsPage implements OnInit, OnDestroy { "ARE_YOU_SURE", "SETTINGS_PAGE.CLEAR_DATA_TEXT", ]) - .subscribe(async translation => { + .subscribe(async (translation) => { const confirm = await this.alertCtrl.create({ header: translation.ARE_YOU_SURE, message: translation["SETTINGS_PAGE.CLEAR_DATA_TEXT"], @@ -123,14 +123,14 @@ export class SettingsPage implements OnInit, OnDestroy { this.settingsDataProvider.settings .pipe( takeUntil(this.unsubscriber$), - tap(settings => (this.currentSettings = settings)), + tap((settings) => (this.currentSettings = settings)), ) .subscribe(); this.settingsDataProvider.onUpdate$ .pipe( takeUntil(this.unsubscriber$), - tap(settings => (this.currentSettings = settings)), + tap((settings) => (this.currentSettings = settings)), ) .subscribe(); } diff --git a/src/app/pages/transaction/transaction-receive/transaction-receive.ts b/src/app/pages/transaction/transaction-receive/transaction-receive.ts index 8f12bcc8a..28ede24dc 100644 --- a/src/app/pages/transaction/transaction-receive/transaction-receive.ts +++ b/src/app/pages/transaction/transaction-receive/transaction-receive.ts @@ -54,6 +54,6 @@ export class TransactionReceivePage implements OnInit { share() { this.socialSharing .share(this.address) - .then(null, error => this.toastProvider.error(error)); + .then(null, (error) => this.toastProvider.error(error)); } } diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index 65eaadb14..993db8c1c 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -144,7 +144,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { .get( "TRANSACTIONS_PAGE.PERFORMING_DESTINATION_ADDRESS_CHECKS", ) - .subscribe(async translation => { + .subscribe(async (translation) => { const loader = await this.loadingCtrl.create({ message: translation, }); @@ -155,7 +155,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { .checkAddress( this.sendForm.get("recipientId").value, ) - .subscribe(checkerResult => { + .subscribe((checkerResult) => { combinedResult.checkerDone = true; combinedResult.checkerResult = checkerResult; this.createTransactionAndShowConfirm( @@ -226,7 +226,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { this.arkApiProvider .prepareFeesByType(TransactionType.SendArk) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(data => { + .subscribe((data) => { this.nodeFees = data; }); @@ -328,7 +328,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { this.arkApiProvider.transactionBuilder .createTransaction(data) .subscribe( - transaction => { + (transaction) => { // The transaction will be signed again; this.confirmTransaction.open( transaction, diff --git a/src/app/pages/transaction/transaction-show/transaction-show.ts b/src/app/pages/transaction/transaction-show/transaction-show.ts index 48226c94d..e87ba9230 100644 --- a/src/app/pages/transaction/transaction-show/transaction-show.ts +++ b/src/app/pages/transaction/transaction-show/transaction-show.ts @@ -80,7 +80,7 @@ export class TransactionShowPage { ], { address: contactOrAddress, token: this.currentNetwork.token }, ) - .subscribe(async translation => { + .subscribe(async (translation) => { const buttons = []; if (!contact) { diff --git a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts index ca746d252..31a70a3c1 100644 --- a/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts +++ b/src/app/pages/wallet/wallet-dashboard/wallet-dashboard.ts @@ -117,7 +117,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { copyAddress() { this.clipboard.copy(this.address).then( () => this.toastProvider.success("COPIED_CLIPBOARD"), - err => this.toastProvider.error(err), + (err) => this.toastProvider.error(err), ); } @@ -136,7 +136,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { "WALLETS_PAGE.CONVERT_TO_FULL_WALLET", "WALLETS_PAGE.TOP_WALLETS", ]) - .subscribe(async translation => { + .subscribe(async (translation) => { const delegatesItem = { text: translation["DELEGATES_PAGE.DELEGATES"], role: "label", @@ -220,7 +220,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { presentAddActionSheet() { this.translateService .get(["TRANSACTIONS_PAGE.SEND", "TRANSACTIONS_PAGE.RECEIVE"]) - .subscribe(async translation => { + .subscribe(async (translation) => { const buttons: Array = [ { text: translation["TRANSACTIONS_PAGE.RECEIVE"], @@ -289,7 +289,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.userDataService .setWalletLabel(this.wallet, data) .pipe( - catchError(error => { + catchError((error) => { this.toastProvider.error(error, 3000); return throwError(error); }), @@ -310,7 +310,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { "WALLETS_PAGE.REMOVE_WALLET_TEXT", "WALLETS_PAGE.REMOVE_WATCH_ONLY_WALLET_TEXT", ]) - .subscribe(async translation => { + .subscribe(async (translation) => { const confirm = await this.alertCtrl.create({ header: translation.ARE_YOU_SURE, message: this.wallet.isWatchOnly @@ -340,7 +340,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { setWallet(wallet: Wallet) { this.wallet = wallet; - const transactions = this.wallet.transactions.map(transaction => ({ + const transactions = this.wallet.transactions.map((transaction) => ({ id: transaction.id, timestamp: transaction.timestamp, recipientId: transaction.recipientId, @@ -430,7 +430,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { }), takeUntil(this.unsubscriber$), ) - .subscribe(response => { + .subscribe((response) => { if (response && response.success) { this.wallet.loadTransactions(response.transactions); this.setWallet(this.wallet); @@ -451,7 +451,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.arkApiProvider.client .getWallet(this.address) .pipe(takeUntil(this.unsubscriber$)) - .subscribe(response => { + .subscribe((response) => { this.wallet.deserialize(response); this.saveWallet(); if (this.wallet.isDelegate) { @@ -461,7 +461,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.arkApiProvider .getDelegateByPublicKey(this.wallet.publicKey) .pipe( - switchMap(delegate => + switchMap((delegate) => this.userDataService.ensureWalletDelegateProperties( this.wallet, delegate, @@ -480,12 +480,12 @@ export class WalletDashboardPage implements OnInit, OnDestroy { private onUpdateMarket() { this.marketDataProvider.onUpdateTicker$ .pipe(takeUntil(this.unsubscriber$)) - .subscribe(ticker => this.setTicker(ticker)); + .subscribe((ticker) => this.setTicker(ticker)); } private setTicker(ticker) { this.ticker = ticker; - this.settingsDataProvider.settings.subscribe(settings => { + this.settingsDataProvider.settings.subscribe((settings) => { this.marketCurrency = this.ticker.getCurrency({ code: settings.currency, }); @@ -495,7 +495,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { private onUpdateWallet() { this.userDataService.onUpdateWallet$ .pipe(takeUntil(this.unsubscriber$), debounceTime(500)) - .subscribe(wallet => { + .subscribe((wallet) => { if ( !lodash.isEmpty(wallet) && this.wallet.address === wallet.address @@ -506,12 +506,12 @@ export class WalletDashboardPage implements OnInit, OnDestroy { } private load() { - this.arkApiProvider.fees.subscribe(fees => (this.fees = fees)); + this.arkApiProvider.fees.subscribe((fees) => (this.fees = fees)); if (this.marketDataProvider.cachedTicker) { this.setTicker(this.marketDataProvider.cachedTicker); } this.marketDataProvider.history.subscribe( - history => (this.marketHistory = history), + (history) => (this.marketHistory = history), ); if (lodash.isEmpty(this.wallet)) { @@ -529,7 +529,7 @@ export class WalletDashboardPage implements OnInit, OnDestroy { this.translateService .get("TRANSACTIONS_PAGE.FETCHING_TRANSACTIONS") .pipe(takeUntil(this.unsubscriber$)) - .subscribe(async translation => { + .subscribe(async (translation) => { const loader = await this.loadingCtrl.create({ message: `${translation}...`, }); diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html index 9987b7818..12fdbffe4 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html @@ -52,17 +52,17 @@ fill="clear" slot="end" (click)="showHidePassphrase()" - style="height:100%;" + style="height: 100%;" > diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts index 70cb445d2..5389e03a6 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.ts @@ -257,7 +257,7 @@ export class WalletManualImportPage extends BaseWalletImport { ) { // we just want one letter to be different - only "manual" typing, don't suggest on copy/paste stuff this.wordSuggestions = this.wordlist.filter( - word => word.indexOf(lastWordPassphrase) === 0, + (word) => word.indexOf(lastWordPassphrase) === 0, ); } } diff --git a/src/app/pages/wallet/wallet-import/wallet-import.base.ts b/src/app/pages/wallet/wallet-import/wallet-import.base.ts index c92731e9b..077077143 100644 --- a/src/app/pages/wallet/wallet-import/wallet-import.base.ts +++ b/src/app/pages/wallet/wallet-import/wallet-import.base.ts @@ -29,7 +29,7 @@ export abstract class BaseWalletImport { ) { this.existingAddress = route.snapshot.queryParamMap.get("address"); this.settingsDataProvider.settings.subscribe( - settings => (this.wordlistLanguage = settings.wordlistLanguage), + (settings) => (this.wordlistLanguage = settings.wordlistLanguage), ); } @@ -83,7 +83,7 @@ export abstract class BaseWalletImport { let newWallet = new Wallet(!privateKey); - return new Observable(observer => { + return new Observable((observer) => { this.arkApiProvider.client .getWallet(address) .pipe( @@ -108,7 +108,7 @@ export abstract class BaseWalletImport { }), ) .subscribe( - response => { + (response) => { newWallet = newWallet.deserialize(response); }, () => { diff --git a/src/app/pages/wallet/wallet-list/wallet-list.ts b/src/app/pages/wallet/wallet-list/wallet-list.ts index 429936912..d7bd4f06a 100644 --- a/src/app/pages/wallet/wallet-list/wallet-list.ts +++ b/src/app/pages/wallet/wallet-list/wallet-list.ts @@ -123,7 +123,7 @@ export class WalletListPage implements OnInit, OnDestroy { "IMPORT_PASSPHRASE", "IMPORT_ADDRESS", ]) - .subscribe(async translation => { + .subscribe(async (translation) => { const actionSheet = await this.actionSheetCtrl.create({ buttons: [ { @@ -276,7 +276,7 @@ export class WalletListPage implements OnInit, OnDestroy { this.totalBalance = lodash .chain(list) - .sumBy(w => parseInt(w.balance)) + .sumBy((w) => parseInt(w.balance)) .value(); const wholeArk = this.totalBalance / constants.WALLET_UNIT_TO_SATOSHI; this.fiatBalance = @@ -315,14 +315,14 @@ export class WalletListPage implements OnInit, OnDestroy { "WEEK_DAY.FRIDAY", "WEEK_DAY.SATURDAY", ]) - .subscribe(translation => { + .subscribe((translation) => { if (lodash.isEmpty(this.wallets)) { return; } const days = lodash.values(translation); - this.settingsDataProvider.settings.subscribe(settings => { + this.settingsDataProvider.settings.subscribe((settings) => { if (this.marketDataProvider.cachedHistory) { this.setChartData( settings, @@ -333,7 +333,7 @@ export class WalletListPage implements OnInit, OnDestroy { this.marketDataProvider.onUpdateHistory$ .pipe(takeUntil(this.unsubscriber$)) - .subscribe(updatedHistory => + .subscribe((updatedHistory) => this.setChartData(settings, days, updatedHistory), ); this.marketDataProvider.fetchHistory().subscribe(); @@ -445,7 +445,7 @@ export class WalletListPage implements OnInit, OnDestroy { this.marketTicker = ticker; this.btcCurrency = ticker.getCurrency({ code: "btc" }); - this.settingsDataProvider.settings.subscribe(settings => { + this.settingsDataProvider.settings.subscribe((settings) => { const currency = !settings || !settings.currency ? this.settingsDataProvider.getDefaults().currency @@ -465,7 +465,7 @@ export class WalletListPage implements OnInit, OnDestroy { // now let's subscribe for any future changes this.marketDataProvider.onUpdateTicker$ .pipe(takeUntil(this.unsubscriber$)) - .subscribe(updatedTicker => this.setTicker(updatedTicker)); + .subscribe((updatedTicker) => this.setTicker(updatedTicker)); // let's get the up-to-date data from the internet now this.marketDataProvider.refreshTicker(); // finally update the data in a regular interval diff --git a/src/app/pipes/escape-html/escape-html.ts b/src/app/pipes/escape-html/escape-html.ts index 540e565a3..60c0f1ccc 100644 --- a/src/app/pipes/escape-html/escape-html.ts +++ b/src/app/pipes/escape-html/escape-html.ts @@ -8,7 +8,7 @@ export class EscapeHTMLPipe implements PipeTransform { if (!htmlString) { return htmlString; } - return htmlString.replace(/[&"<>]/g, c => { + return htmlString.replace(/[&"<>]/g, (c) => { return { "&": "&", '"': """, diff --git a/src/app/pipes/market-number/market-number.ts b/src/app/pipes/market-number/market-number.ts index 54cbc6b32..5f07e8c5e 100644 --- a/src/app/pipes/market-number/market-number.ts +++ b/src/app/pipes/market-number/market-number.ts @@ -23,9 +23,9 @@ export class MarketNumberPipe implements PipeTransform, OnDestroy { ) { this.marketDataProvider.ticker .pipe( - tap(ticker => (this.marketTicker = ticker)), + tap((ticker) => (this.marketTicker = ticker)), finalize(() => - this.settingsDataProvider.settings.subscribe(settings => + this.settingsDataProvider.settings.subscribe((settings) => this.updateCurrency(settings), ), ), @@ -34,10 +34,10 @@ export class MarketNumberPipe implements PipeTransform, OnDestroy { this.settingsDataProvider.onUpdate$ .pipe(takeUntil(this.unsubscriber$)) - .subscribe(settings => this.updateCurrency(settings)); + .subscribe((settings) => this.updateCurrency(settings)); this.marketDataProvider.onUpdateTicker$ .pipe(takeUntil(this.unsubscriber$)) - .subscribe(ticker => (this.marketTicker = ticker)); + .subscribe((ticker) => (this.marketTicker = ticker)); } transform(value: number | string, forceCurrency?: MarketCurrency) { diff --git a/src/app/pipes/timestamp-human/timestamp-human.ts b/src/app/pipes/timestamp-human/timestamp-human.ts index 4a395e410..0a6f228ec 100644 --- a/src/app/pipes/timestamp-human/timestamp-human.ts +++ b/src/app/pipes/timestamp-human/timestamp-human.ts @@ -11,13 +11,11 @@ export class TimestampHumanPipe implements PipeTransform { constructor(settingsDataProvider: SettingsDataProvider) { settingsDataProvider.settings.subscribe( - settings => (this.language = settings.language), + (settings) => (this.language = settings.language), ); } transform(value: string, ...args) { - return moment(value) - .locale(this.language) - .fromNow(); + return moment(value).locale(this.language).fromNow(); } } diff --git a/src/app/pipes/timezone/timezone.ts b/src/app/pipes/timezone/timezone.ts index d47acfd3f..780cffd5a 100644 --- a/src/app/pipes/timezone/timezone.ts +++ b/src/app/pipes/timezone/timezone.ts @@ -6,9 +6,6 @@ import moment from "moment"; }) export class TimezonePipe implements PipeTransform { transform(value: number) { - return moment - .unix(value) - .local() - .toString(); + return moment.unix(value).local().toString(); } } diff --git a/src/app/services/address-checker/address-checker.spec.ts b/src/app/services/address-checker/address-checker.spec.ts index 147e615d6..66f4e8035 100644 --- a/src/app/services/address-checker/address-checker.spec.ts +++ b/src/app/services/address-checker/address-checker.spec.ts @@ -49,34 +49,34 @@ describe("Address checker service", () => { }); describe("Check address", () => { - it("should check the address", done => { - addressChecker.checkAddress(INVALID_ADDRESS).subscribe(data => { + it("should check the address", (done) => { + addressChecker.checkAddress(INVALID_ADDRESS).subscribe((data) => { expect(data.message.key).toEqual("VALIDATION.INVALID_ADDRESS"); done(); }); }); - it("should return the check for own address", done => { + it("should return the check for own address", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); networkProvider.isValidAddress.and.returnValue(true); - addressChecker.checkAddress(WALLET_ADDRESS).subscribe(data => { + addressChecker.checkAddress(WALLET_ADDRESS).subscribe((data) => { expect(data.message.key).toEqual("VALIDATION.IS_OWN_ADDRESS"); done(); }); }); - it("should return the check for neo address", done => { + it("should return the check for neo address", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); const neoApiProvider = addressSpectator.get(NeoApiProvider); networkProvider.isValidAddress.and.returnValue(true); neoApiProvider.doesAddressExist.and.returnValue(of(true)); - addressChecker.checkAddress(WALLET_ADDRESS).subscribe(data => { + addressChecker.checkAddress(WALLET_ADDRESS).subscribe((data) => { expect(data.message.key).toEqual("VALIDATION.IS_OWN_ADDRESS"); done(); }); }); - it("should return the check for no transactions", done => { + it("should return the check for no transactions", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); const neoApiProvider = addressSpectator.get(NeoApiProvider); networkProvider.isValidAddress.and.returnValue(true); @@ -84,7 +84,7 @@ describe("Address checker service", () => { apiClient.getTransactionList.and.returnValue(of({})); addressChecker .checkAddress(walletsFixtures.wallet2.address) - .subscribe(data => { + .subscribe((data) => { expect(data.message.key).toEqual( "VALIDATION.NO_TRANSACTIONS", ); @@ -92,7 +92,7 @@ describe("Address checker service", () => { }); }); - it("should not throw error if the transaction request fails", done => { + it("should not throw error if the transaction request fails", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); const neoApiProvider = addressSpectator.get(NeoApiProvider); networkProvider.isValidAddress.and.returnValue(true); @@ -100,13 +100,13 @@ describe("Address checker service", () => { apiClient.getTransactionList.and.returnValue(throwError("ERROR")); addressChecker .checkAddress(walletsFixtures.wallet2.address) - .subscribe(data => { + .subscribe((data) => { expect(data).toBeUndefined(); done(); }); }); - it("should not throw error if the checked address has transactions", done => { + it("should not throw error if the checked address has transactions", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); const neoApiProvider = addressSpectator.get(NeoApiProvider); networkProvider.isValidAddress.and.returnValue(true); @@ -116,13 +116,13 @@ describe("Address checker service", () => { ); addressChecker .checkAddress(walletsFixtures.wallet3.address) - .subscribe(data => { + .subscribe((data) => { expect(data).toBeUndefined(); done(); }); }); - it("should use handler if it's an neo address", done => { + it("should use handler if it's an neo address", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); const neoApiProvider = addressSpectator.get(NeoApiProvider); networkProvider.isValidAddress.and.returnValue(true); @@ -130,13 +130,13 @@ describe("Address checker service", () => { addressChecker .checkAddress(walletsFixtures.wallet2.address) - .subscribe(data => { + .subscribe((data) => { expect(data).toBeUndefined(); done(); }); }); - it("should not use handler if it isn't an neo address", done => { + it("should not use handler if it isn't an neo address", (done) => { const networkProvider = addressSpectator.get(NetworkProvider); const neoApiProvider = addressSpectator.get(NeoApiProvider); networkProvider.isValidAddress.and.returnValue(true); @@ -146,7 +146,7 @@ describe("Address checker service", () => { addressChecker .checkAddress(walletsFixtures.wallet2.address) - .subscribe(data => { + .subscribe((data) => { expect(data).toBeUndefined(); done(); }); diff --git a/src/app/services/address-checker/address-checker.ts b/src/app/services/address-checker/address-checker.ts index aedfc6969..f81a4b79f 100644 --- a/src/app/services/address-checker/address-checker.ts +++ b/src/app/services/address-checker/address-checker.ts @@ -76,7 +76,7 @@ export class AddressCheckerProvider { } this.hasTransactions(address).subscribe( - hasTxs => { + (hasTxs) => { if (hasTxs) { handler.complete(); } else { @@ -91,7 +91,7 @@ export class AddressCheckerProvider { ); this.neoApiProvider.doesAddressExist(address).subscribe( - exists => { + (exists) => { if (exists) { handler.complete( AddressCheckerProvider.createWarning( @@ -118,6 +118,6 @@ export class AddressCheckerProvider { public hasTransactions(address: string): Observable { return this.arkApiProvider.client .getTransactionList(address) - .pipe(map(txs => txs?.transactions?.length > 0)); + .pipe(map((txs) => txs?.transactions?.length > 0)); } } diff --git a/src/app/services/ark-api/ark-api.ts b/src/app/services/ark-api/ark-api.ts index eb3ec38d7..b20e6f394 100644 --- a/src/app/services/ark-api/ark-api.ts +++ b/src/app/services/ark-api/ark-api.ts @@ -74,7 +74,7 @@ export class ArkApiProvider { ) { this.loadData(); - this.userDataService.onActivateNetwork$.subscribe(network => { + this.userDataService.onActivateNetwork$.subscribe((network) => { if (lodash.isEmpty(network)) { return; } @@ -152,7 +152,7 @@ export class ArkApiProvider { this.connectToRandomPeer() .pipe( - catchError(e => { + catchError((e) => { console.error(e); return throwError(e); }), @@ -165,7 +165,7 @@ export class ArkApiProvider { } public connectToRandomPeer(): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.refreshPeers().subscribe( () => { this.updateNetwork( @@ -176,7 +176,7 @@ export class ArkApiProvider { observer.next(); observer.complete(); }, - e => { + (e) => { this.updateNetwork(); observer.error(e); }, @@ -200,7 +200,7 @@ export class ArkApiProvider { let delegates: arkts.Delegate[] = []; - return new Observable(observer => { + return new Observable((observer) => { this.client .getDelegateList({ limit, page }) .pipe( @@ -211,7 +211,7 @@ export class ArkApiProvider { }); return page - 1 < totalPages ? next : EMPTY; }), - tap(response => { + tap((response) => { if (response.success && getAllDelegates) { numberDelegatesToGet = response.totalCount; } @@ -229,7 +229,7 @@ export class ArkApiProvider { observer.complete(); }), ) - .subscribe(data => { + .subscribe((data) => { if (data.success) { delegates = [...delegates, ...data.delegates]; } @@ -243,7 +243,7 @@ export class ArkApiProvider { secondKey: string, secondPassphrase: string, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { if ( !arkts.PublicKey.validateAddress( transaction.address, @@ -278,9 +278,7 @@ export class ArkApiProvider { return observer.complete(); } - const epochTime = moment(this._network.epoch) - .utc() - .valueOf(); + const epochTime = moment(this._network.epoch).utc().valueOf(); const now = moment().valueOf(); const keys = ArkCrypto.Identities.Keys.fromPassphrase(key); @@ -308,7 +306,7 @@ export class ArkApiProvider { this.getNextWalletNonce(wallet.address) .pipe( - tap(nonce => { + tap((nonce) => { if (this._network.aip11) { transaction.nonce = nonce; transaction.typeGroup = 1; @@ -364,7 +362,7 @@ export class ArkApiProvider { peer: arkts.Peer = this._network.activePeer, broadcast: boolean = true, ) { - return new Observable(observer => { + return new Observable((observer) => { const compressTransaction = JSON.parse(JSON.stringify(transaction)); this.client.postTransaction(compressTransaction, peer).subscribe( (result: arkts.TransactionPostResponse) => { @@ -393,7 +391,7 @@ export class ArkApiProvider { } observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } @@ -426,7 +424,9 @@ export class ArkApiProvider { let min = 1; let isStatic = true; - const feeDynamic = respDynamic.find(item => item.type === type); + const feeDynamic = respDynamic.find( + (item) => item.type === type, + ); if (feeDynamic) { isStatic = feeDynamic.fees.avgFee > max; @@ -456,9 +456,9 @@ export class ArkApiProvider { const { data, errors } = response; const anyDuplicate = errors && - Object.keys(errors).some(transactionId => { + Object.keys(errors).some((transactionId) => { return errors[transactionId].some( - item => item.type === "ERR_DUPLICATE", + (item) => item.type === "ERR_DUPLICATE", ); }); @@ -497,7 +497,7 @@ export class ArkApiProvider { ); this.fetchDelegates(this._network.activeDelegates * 2).subscribe( - data => { + (data) => { this._delegates = data; }, ); @@ -537,7 +537,7 @@ export class ArkApiProvider { return EMPTY; } - return new Observable(observer => { + return new Observable((observer) => { this.httpClient .get(`${this._network.getPeerAPIUrl()}/api/v2/node/fees?days=7`) .subscribe( @@ -546,7 +546,7 @@ export class ArkApiProvider { let feeStatistics: FeeStatistic[] = []; if (Array.isArray(data)) { - feeStatistics = data.map(fee => ({ + feeStatistics = data.map((fee) => ({ type: Number(fee.type), fees: { minFee: Number(fee.min), @@ -583,15 +583,15 @@ export class ArkApiProvider { this._network.feeStatistics = feeStatistics; observer.next(this._network.feeStatistics); }, - e => observer.error(e), + (e) => observer.error(e), ); }); } private fetchFees(): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.client.getTransactionFees().subscribe( - response => { + (response) => { if (response && response.success) { this._fees = response.fees; this.storageProvider.set( @@ -615,11 +615,11 @@ export class ArkApiProvider { private loadData() { this.storageProvider .getObject(constants.STORAGE_DELEGATES) - .subscribe(delegates => (this._delegates = delegates)); + .subscribe((delegates) => (this._delegates = delegates)); } private getNextWalletNonce(address: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this._client.getWallet(address).subscribe( (wallet: WalletResponse) => { const nonce = wallet.nonce || 0; @@ -633,7 +633,7 @@ export class ArkApiProvider { } private refreshPeers(): Observable { - return new Observable(observer => { + return new Observable((observer) => { const network = this._network; const networkLookup = ["mainnet", "devnet"]; const isKnowNetwork = lodash.includes(networkLookup, network.name); @@ -644,7 +644,7 @@ export class ArkApiProvider { : `${peerUrl}/api/peers`; this._peerDiscovery.find({ networkOrHost }).subscribe( - discovery => { + (discovery) => { discovery.withLatency(300).sortBy("latency", "asc"); discovery @@ -652,7 +652,7 @@ export class ArkApiProvider { additional: ["height", "latency", "version"], }) .pipe( - switchMap(peers => { + switchMap((peers) => { if (!peers.length) { return discovery.findPeersWithPlugin( "core-wallet-api", @@ -670,7 +670,7 @@ export class ArkApiProvider { }), ) .subscribe( - peers => { + (peers) => { if (peers.length) { this._network.peerList = peers; observer.next(); @@ -680,10 +680,10 @@ export class ArkApiProvider { ); } }, - e => observer.error(e), + (e) => observer.error(e), ); }, - e => observer.error(e), + (e) => observer.error(e), ); }); } diff --git a/src/app/services/auth/auth.spec.ts b/src/app/services/auth/auth.spec.ts index 3c7908b20..a741a0153 100644 --- a/src/app/services/auth/auth.spec.ts +++ b/src/app/services/auth/auth.spec.ts @@ -24,11 +24,11 @@ describe("Auth Service", () => { storageService = TestBed.inject(StorageProvider); }); - beforeEach(function() { + beforeEach(function () { storageService.clear(); }); - it("should login an user", done => { + it("should login an user", (done) => { const USER_ID = "12341231212312312312312"; authService .login(USER_ID) @@ -37,7 +37,7 @@ describe("Auth Service", () => { storageService.get(constants.STORAGE_ACTIVE_PROFILE), ), ) - .subscribe(id => { + .subscribe((id) => { expect(id).toBe(USER_ID); done(); }); @@ -53,14 +53,14 @@ describe("Auth Service", () => { expect(authService.loggedProfileId).toEqual(undefined); }); - it("should verify if user has seen intro", done => { - authService.hasSeenIntro().subscribe(data => { + it("should verify if user has seen intro", (done) => { + authService.hasSeenIntro().subscribe((data) => { expect(data).toBe(false); done(); }); }); - it("should set intro as seen", done => { + it("should set intro as seen", (done) => { authService .saveIntro() .pipe( @@ -68,22 +68,22 @@ describe("Auth Service", () => { storageService.get(constants.STORAGE_INTROSEEN), ), ) - .subscribe(introSeen => { + .subscribe((introSeen) => { expect(introSeen).toEqual("true"); done(); }); }); - it("should save and get the stored master password", done => { + it("should save and get the stored master password", (done) => { authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { - authService.getMasterPassword().subscribe(masterPassword => { + authService.getMasterPassword().subscribe((masterPassword) => { expect(masterPassword).not.toEqual(null); done(); }); }); }); - it("should get an error on master password validation", done => { + it("should get an error on master password validation", (done) => { // @ts-ignore spyOn(bcrypt, "compare").and.callFake((_, __, callback) => { callback(new Error("Failed")); @@ -99,22 +99,22 @@ describe("Auth Service", () => { }); }); - it("should validate the master password", done => { + it("should validate the master password", (done) => { authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { authService .validateMasterPassword(MASTER_PASSWORD) - .subscribe(result => { + .subscribe((result) => { expect(result).toEqual(true); done(); }); }); }); - it("should validate the master password with a wrong one", done => { + it("should validate the master password with a wrong one", (done) => { authService.saveMasterPassword(MASTER_PASSWORD).subscribe(() => { authService .validateMasterPassword("asjdaidsa") - .subscribe(result => { + .subscribe((result) => { expect(result).toEqual(false); done(); }); @@ -131,21 +131,21 @@ describe("Auth Service", () => { expect(authService.isWeakPassword(WEAK_PASSWORD)).toEqual(false); }); - it("should rerturn the unlock timestamp", done => { - authService.getUnlockTimestamp().subscribe(unlockTime => { + it("should rerturn the unlock timestamp", (done) => { + authService.getUnlockTimestamp().subscribe((unlockTime) => { expect(unlockTime).toEqual({}); done(); }); }); - it("should rerturn the attempts", done => { - authService.getAttempts().subscribe(attempts => { + it("should rerturn the attempts", (done) => { + authService.getAttempts().subscribe((attempts) => { expect(attempts).toEqual(null); done(); }); }); - it("should increase attemps", done => { + it("should increase attemps", (done) => { authService .increaseAttempts() .pipe( @@ -153,22 +153,22 @@ describe("Auth Service", () => { storageService.get(constants.STORAGE_AUTH_ATTEMPTS), ), ) - .subscribe(attempts => { + .subscribe((attempts) => { expect(attempts).toBe("1"); done(); }); }); - it("should increase unlock timestamp", done => { - authService.increaseUnlockTimestamp().then(newTimestamp => { + it("should increase unlock timestamp", (done) => { + authService.increaseUnlockTimestamp().then((newTimestamp) => { expect(newTimestamp).not.toBe(null); done(); }); }); - it("should clear attempts", done => { + it("should clear attempts", (done) => { authService.clearAttempts().subscribe(() => { - authService.getAttempts().subscribe(attempts => { + authService.getAttempts().subscribe((attempts) => { expect(attempts).toEqual(0); done(); }); diff --git a/src/app/services/auth/auth.ts b/src/app/services/auth/auth.ts index 605f875f3..6d152463b 100644 --- a/src/app/services/auth/auth.ts +++ b/src/app/services/auth/auth.ts @@ -47,10 +47,10 @@ export class AuthProvider { } hasSeenIntro(): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.storage .get(constants.STORAGE_INTROSEEN) - .subscribe(introSeen => { + .subscribe((introSeen) => { observer.next(introSeen === "true"); observer.complete(); }); @@ -72,10 +72,10 @@ export class AuthProvider { } validateMasterPassword(password: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.storage .get(constants.STORAGE_MASTERPASSWORD) - .subscribe(master => { + .subscribe((master) => { bcrypt.compare(password, master, (err, res) => { if (err) { observer.error(err); @@ -126,7 +126,7 @@ export class AuthProvider { increaseAttempts() { return this.getAttempts().pipe( - mergeMap(attempts => { + mergeMap((attempts) => { const increasedAttempts = Number(attempts) + 1; return this.storage .set(constants.STORAGE_AUTH_ATTEMPTS, increasedAttempts) @@ -136,8 +136,8 @@ export class AuthProvider { } increaseUnlockTimestamp(): Promise { - return new Promise(resolve => { - this.getAttempts().subscribe(attempts => { + return new Promise((resolve) => { + this.getAttempts().subscribe((attempts) => { const currentAttempt = Number(attempts) - constants.PIN_ATTEMPTS_LIMIT + 1; const lastTimestamp = moment(moment.now()); diff --git a/src/app/services/contacts/contacts.spec.ts b/src/app/services/contacts/contacts.spec.ts index 9d8ac0a8c..7e7e4ec14 100644 --- a/src/app/services/contacts/contacts.spec.ts +++ b/src/app/services/contacts/contacts.spec.ts @@ -18,7 +18,7 @@ describe("Contacts service", () => { let userDataService: UserDataService; let userProfile: Profile; - beforeEach(function() { + beforeEach(function () { TestBed.configureTestingModule({ imports: [IonicStorageModule.forRoot()], providers: [ @@ -38,7 +38,7 @@ describe("Contacts service", () => { }); describe("Add contact", () => { - it("should add a contact", done => { + it("should add a contact", (done) => { contactsService.addContact(VALID_ADDRESS, "Caio").subscribe(() => { const contact = contactsService.getContactByName("Caio"); expect(contact).toEqual({ @@ -49,20 +49,20 @@ describe("Contacts service", () => { }); }); - it("should throw invalid address error", done => { + it("should throw invalid address error", (done) => { contactsService.addContact(INVALID_ADDRESS, "b").subscribe( () => {}, - error => { + (error) => { expect(error.key).toEqual("CONTACTS_PAGE.INVALID_ADDRESS"); done(); }, ); }); - it("should throw invalid name empty error", done => { + it("should throw invalid name empty error", (done) => { contactsService.addContact(VALID_ADDRESS, null).subscribe( () => {}, - error => { + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_NAME_EMPTY", ); @@ -71,7 +71,7 @@ describe("Contacts service", () => { ); }); - it("should throw existent address error", done => { + it("should throw existent address error", (done) => { contactsService .addContact(VALID_ADDRESS, "Caio") .pipe( @@ -80,8 +80,8 @@ describe("Contacts service", () => { ), ) .subscribe( - data => {}, - error => { + (data) => {}, + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_EXISTS_ADDRESS", ); @@ -90,7 +90,7 @@ describe("Contacts service", () => { ); }); - it("should throw existent name error", done => { + it("should throw existent name error", (done) => { contactsService .addContact(VALID_ADDRESS, "Caio") .pipe( @@ -99,8 +99,8 @@ describe("Contacts service", () => { ), ) .subscribe( - data => {}, - error => { + (data) => {}, + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_EXISTS_NAME", ); @@ -111,11 +111,11 @@ describe("Contacts service", () => { }); describe("Edit contact", () => { - it("should edit a contact name", done => { + it("should edit a contact name", (done) => { contactsService.addContact(VALID_ADDRESS, "Caio"); contactsService .editContact(VALID_ADDRESS, "Katy") - .subscribe(data => { + .subscribe((data) => { const contact = contactsService.getContactByAddress( VALID_ADDRESS, ); @@ -127,11 +127,11 @@ describe("Contacts service", () => { }); }); - it("should throw inexistent address error", done => { + it("should throw inexistent address error", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { contactsService.editContact(VALID_ADDRESS_2, "Stich").subscribe( () => {}, - error => { + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_NOT_EXISTS_ADDRESS", ); @@ -141,11 +141,11 @@ describe("Contacts service", () => { }); }); - it("should throw existent name error", done => { + it("should throw existent name error", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { contactsService.editContact(VALID_ADDRESS_2, "Lilo").subscribe( () => {}, - error => { + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_EXISTS_NAME", ); @@ -155,11 +155,11 @@ describe("Contacts service", () => { }); }); - it("should throw empty contact name error", done => { + it("should throw empty contact name error", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { contactsService.editContact(VALID_ADDRESS, null).subscribe( () => {}, - error => { + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_NAME_EMPTY", ); @@ -169,11 +169,11 @@ describe("Contacts service", () => { }); }); - it("should throw empty contact address error", done => { + it("should throw empty contact address error", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { contactsService.editContact(null, "Lilo").subscribe( () => {}, - error => { + (error) => { expect(error.key).toEqual( "CONTACTS_PAGE.CONTACT_ADDRESS_EMPTY", ); @@ -185,7 +185,7 @@ describe("Contacts service", () => { }); describe("By address", () => { - it("should remove a contact by address", done => { + it("should remove a contact by address", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { contactsService .removeContactByAddress(VALID_ADDRESS) @@ -199,7 +199,7 @@ describe("Contacts service", () => { }); }); - it("should get a contact by address", done => { + it("should get a contact by address", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { const contact = contactsService.getContactByAddress( VALID_ADDRESS, @@ -212,7 +212,7 @@ describe("Contacts service", () => { }); }); - it("should return null if no address provided", done => { + it("should return null if no address provided", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { const contact = contactsService.getContactByAddress(null); expect(contact).toEqual(null); @@ -222,7 +222,7 @@ describe("Contacts service", () => { }); describe("By name", () => { - it("should get a contact by name", done => { + it("should get a contact by name", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { const contact = contactsService.getContactByName("Lilo"); expect(contact).toEqual({ @@ -233,7 +233,7 @@ describe("Contacts service", () => { }); }); - it("should return null if no name provided", done => { + it("should return null if no name provided", (done) => { contactsService.addContact(VALID_ADDRESS, "Lilo").subscribe(() => { const contact = contactsService.getContactByName(null); expect(contact).toEqual(null); diff --git a/src/app/services/contacts/contacts.ts b/src/app/services/contacts/contacts.ts index 6e77f5852..2ebe73860 100644 --- a/src/app/services/contacts/contacts.ts +++ b/src/app/services/contacts/contacts.ts @@ -114,7 +114,7 @@ export class ContactsProvider { return lodash .chain(profile.contacts) - .filter(c => c.name.toLowerCase() === name.toLowerCase()) + .filter((c) => c.name.toLowerCase() === name.toLowerCase()) .first() .value(); } diff --git a/src/app/services/event-bus/event-bus.spec.ts b/src/app/services/event-bus/event-bus.spec.ts index 43ad29bb1..ff8fc5ff9 100644 --- a/src/app/services/event-bus/event-bus.spec.ts +++ b/src/app/services/event-bus/event-bus.spec.ts @@ -10,11 +10,11 @@ describe("Event Bus Service", () => { beforeEach(() => (spectator = createService())); - it("should emit", async done => { + it("should emit", async (done) => { const key = "test"; const data = "value"; - spectator.service.$subject.subscribe(result => { + spectator.service.$subject.subscribe((result) => { expect(result).toEqual( jasmine.objectContaining({ key, diff --git a/src/app/services/market-data/market-data.ts b/src/app/services/market-data/market-data.ts index 6c76b0ef6..c1623c5f4 100644 --- a/src/app/services/market-data/market-data.ts +++ b/src/app/services/market-data/market-data.ts @@ -36,7 +36,7 @@ export class MarketDataProvider { this.loadData(); this.fetchTicker(); - settingsDataProvider.settings.subscribe(settings => { + settingsDataProvider.settings.subscribe((settings) => { this.settings = settings; this.fetchHistory(); }); @@ -69,7 +69,7 @@ export class MarketDataProvider { } refreshTicker(): void { - this.fetchTicker().subscribe(ticker => { + this.fetchTicker().subscribe((ticker) => { this.onUpdateTicker$.next(ticker); }); } @@ -81,7 +81,7 @@ export class MarketDataProvider { : this.settings.currency ).toUpperCase(); return this.http.get(url + "BTC").pipe( - map(btcResponse => btcResponse), + map((btcResponse) => btcResponse), flatMap((btcResponse: any) => this.http.get(url + myCurrencyCode).pipe( map((currencyResponse: any) => { @@ -110,7 +110,7 @@ export class MarketDataProvider { private fetchTicker(): Observable { const url = `${constants.API_MARKET_URL}/data/pricemultifull?fsyms=${this.marketTickerName}&tsyms=`; - const currenciesList = model.CURRENCIES_LIST.map(currency => { + const currenciesList = model.CURRENCIES_LIST.map((currency) => { return currency.code.toUpperCase(); }).join(","); @@ -138,7 +138,7 @@ export class MarketDataProvider { } private onUpdateSettings() { - this.settingsDataProvider.onUpdate$.subscribe(settings => { + this.settingsDataProvider.onUpdate$.subscribe((settings) => { this.settings = settings; this.marketHistory = null; }); @@ -147,7 +147,7 @@ export class MarketDataProvider { private loadData() { this.storageProvider .getObject(this.getKey(constants.STORAGE_MARKET_HISTORY)) - .subscribe(history => { + .subscribe((history) => { if (history) { this.marketHistory = new model.MarketHistory().deserialize( history, @@ -156,7 +156,7 @@ export class MarketDataProvider { }); this.storageProvider .getObject(this.getKey(constants.STORAGE_MARKET_TICKER)) - .subscribe(ticker => { + .subscribe((ticker) => { if (ticker) { this.marketTicker = new model.MarketTicker().deserialize( ticker, diff --git a/src/app/services/neo-api/neo-api.ts b/src/app/services/neo-api/neo-api.ts index b7ba738b5..c819ea14a 100644 --- a/src/app/services/neo-api/neo-api.ts +++ b/src/app/services/neo-api/neo-api.ts @@ -21,7 +21,7 @@ export class NeoApiProvider { // we use the getBalance call, because it's fast, if the address exists (i.e. has any transactions), the address is returned // we check if it's a real address (and not "not found") and return the result - return this.getBalance(address).pipe(map(res => res.length > 0)); + return this.getBalance(address).pipe(map((res) => res.length > 0)); } private getBalance(address: string): Observable { diff --git a/src/app/services/settings-data/settings-data.spec.ts b/src/app/services/settings-data/settings-data.spec.ts index 573efed54..b4771bcca 100644 --- a/src/app/services/settings-data/settings-data.spec.ts +++ b/src/app/services/settings-data/settings-data.spec.ts @@ -21,8 +21,8 @@ describe("Settings Service", () => { settingsService = TestBed.inject(SettingsDataProvider); }); - it("should return valid settings", done => { - settingsService.settings.subscribe(data => { + it("should return valid settings", (done) => { + settingsService.settings.subscribe((data) => { expect(data).toEqual( jasmine.objectContaining({ language: jasmine.any(String), @@ -75,7 +75,7 @@ describe("Settings Service", () => { ); }); - it("should update settings", done => { + it("should update settings", (done) => { const newSettings = new UserSettings(); newSettings.language = "pt-BR"; newSettings.currency = "BRL"; @@ -85,7 +85,7 @@ describe("Settings Service", () => { settingsService.save(newSettings); - settingsService.settings.subscribe(data => { + settingsService.settings.subscribe((data) => { expect(data).toEqual( jasmine.objectContaining({ language: "pt-BR", @@ -99,17 +99,17 @@ describe("Settings Service", () => { }); }); - it("should clear settings", done => { + it("should clear settings", (done) => { settingsService.settings .pipe( - switchMap(data => { + switchMap((data) => { expect(data.language).toEqual("pt-BR"); return settingsService .clearData() .pipe(switchMap(() => settingsService.settings)); }), ) - .subscribe(newData => { + .subscribe((newData) => { expect(newData.language).toEqual("en"); done(); }); diff --git a/src/app/services/settings-data/settings-data.ts b/src/app/services/settings-data/settings-data.ts index 3b3ddf8e0..4c18ec59c 100644 --- a/src/app/services/settings-data/settings-data.ts +++ b/src/app/services/settings-data/settings-data.ts @@ -65,7 +65,7 @@ export class SettingsDataProvider { private _storageProvider: StorageProvider, private translateService: TranslateService, ) { - this.load().subscribe(data => { + this.load().subscribe((data) => { this._settings = data; this.save(); }); @@ -117,10 +117,10 @@ export class SettingsDataProvider { } private load(): Observable { - return new Observable(observer => { + return new Observable((observer) => { this._storageProvider .getObject(constants.STORAGE_SETTINGS) - .subscribe(response => { + .subscribe((response) => { let data = response; if (lodash.isEmpty(data)) { diff --git a/src/app/services/storage/storage.spec.ts b/src/app/services/storage/storage.spec.ts index 7bf1ba0e2..acd799cca 100644 --- a/src/app/services/storage/storage.spec.ts +++ b/src/app/services/storage/storage.spec.ts @@ -34,24 +34,24 @@ describe("Storage service", () => { expect(result).toBeInstanceOf(Observable); }); - it("should retrieve the stored value from a key", done => { - storageProvider.getObject(TEST_STORAGE_KEY).subscribe(storedValue => { + it("should retrieve the stored value from a key", (done) => { + storageProvider.getObject(TEST_STORAGE_KEY).subscribe((storedValue) => { expect(storedValue).toEqual(OBJECT_TO_BE_STORED); done(); }); }); - it("should clear the storage", done => { + it("should clear the storage", (done) => { storageProvider .clear() .pipe(switchMapTo(storageProvider.getObject("TEST_STORAGE_KEY"))) - .subscribe(storedValue => { + .subscribe((storedValue) => { expect(storedValue).toEqual({}); done(); }); }); - it("should emit notification when storage is cleaned", done => { + it("should emit notification when storage is cleaned", (done) => { storageProvider.onClear$.subscribe(() => { expect().nothing(); done(); diff --git a/src/app/services/storage/storage.ts b/src/app/services/storage/storage.ts index 3d1df3fc6..ceb3e835a 100644 --- a/src/app/services/storage/storage.ts +++ b/src/app/services/storage/storage.ts @@ -16,7 +16,7 @@ export class StorageProvider { public getObject(key) { return from(this._storage.get(key)).pipe( - map(result => JSON.parse(result || "{}")), + map((result) => JSON.parse(result || "{}")), ); } diff --git a/src/app/services/toast/toast.ts b/src/app/services/toast/toast.ts index 549f6a6d1..516828847 100644 --- a/src/app/services/toast/toast.ts +++ b/src/app/services/toast/toast.ts @@ -86,7 +86,7 @@ export class ToastProvider { } this.translateService .get(message, parameters) - .subscribe(async translation => { + .subscribe(async (translation) => { const toast = await this.toastCtrl.create({ message: translation, duration: hideDelay || this.hideDelay, diff --git a/src/app/services/user-data/user-data.spec.ts b/src/app/services/user-data/user-data.spec.ts index 09d9904f8..9b02cc47a 100644 --- a/src/app/services/user-data/user-data.spec.ts +++ b/src/app/services/user-data/user-data.spec.ts @@ -61,7 +61,7 @@ describe("User Data Service", () => { }); describe("Profile", () => { - it("should add profile", done => { + it("should add profile", (done) => { const newProfile = new Profile().deserialize({ name: "Profile 3", networkId: "mainnet", @@ -94,11 +94,11 @@ describe("User Data Service", () => { ); }); - it("should remove profile by id", done => { + it("should remove profile by id", (done) => { userDataService .removeProfileById("profile1") .pipe(mapTo(userDataService.getProfileById("profile1"))) - .subscribe(profile => { + .subscribe((profile) => { expect(profile).toBeUndefined(); done(); }); @@ -114,7 +114,7 @@ describe("User Data Service", () => { ); }); - it("should remove the network by id", done => { + it("should remove the network by id", (done) => { userDataService.removeNetworkById("mainnet").subscribe(() => { expect( userDataService.getNetworkById("mainnet"), @@ -123,12 +123,12 @@ describe("User Data Service", () => { }); }); - it("should add network", done => { + it("should add network", (done) => { const customNetwork = new StoredNetwork(); customNetwork.name = "testnet"; userDataService .addOrUpdateNetwork(customNetwork) - .subscribe(result => { + .subscribe((result) => { expect(result).toEqual( jasmine.objectContaining({ id: jasmine.any(String), @@ -141,7 +141,7 @@ describe("User Data Service", () => { }); }); - it("should update network", done => { + it("should update network", (done) => { const id = "mainnet"; const network = new StoredNetwork(); network.name = "Custom Mainnet"; @@ -149,7 +149,7 @@ describe("User Data Service", () => { userDataService .addOrUpdateNetwork(network, id) .pipe(mapTo(userDataService.getNetworkById(id))) - .subscribe(result => { + .subscribe((result) => { expect(result).toEqual( jasmine.objectContaining({ name: network.name, @@ -175,27 +175,27 @@ describe("User Data Service", () => { expect(userDataService.currentWallet).toBeUndefined(); }); - it("should fail if the profile is not specified", done => { + it("should fail if the profile is not specified", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); userDataService .addWallet(wallet, null, null) - .subscribe(null, error => { + .subscribe(null, (error) => { expect(error).toBe("EMPTY_PROFILE_ID"); done(); }); }); - it("should fail if the profile is not found", done => { + it("should fail if the profile is not found", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); userDataService .addWallet(wallet, null, null, "custom") - .subscribe(null, error => { + .subscribe(null, (error) => { expect(error).toBe("PROFILE_NOT_FOUND"); done(); }); }); - it("should add wallet with encryption", done => { + it("should add wallet with encryption", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); const profileId = "profile1"; const passphrase = "ark"; @@ -206,7 +206,7 @@ describe("User Data Service", () => { userDataService .addWallet(wallet, passphrase, pinCode, profileId) .pipe(mapTo(userDataService.getProfileById(profileId))) - .subscribe(profile => { + .subscribe((profile) => { expect(Object.keys(profile.wallets).length).toBe(1); expect(profile.wallets[wallet.address]).toEqual( jasmine.objectContaining({ @@ -225,7 +225,7 @@ describe("User Data Service", () => { userDataService .addWallet(wallet, null, null, profileId) .pipe(mapTo(userDataService.getProfileById(profileId))) - .subscribe(profile => { + .subscribe((profile) => { expect(profile.wallets[wallet.address]).toEqual( jasmine.objectContaining(walletsFixtures.wallet1), ); @@ -253,7 +253,7 @@ describe("User Data Service", () => { }), mapTo(userDataService.getProfileById(profileId)), ) - .subscribe(profile => { + .subscribe((profile) => { expect(profile.wallets[wallet.address].label).not.toBe( "test", ); @@ -276,7 +276,7 @@ describe("User Data Service", () => { ); }); - it("should get the wallet label by address", done => { + it("should get the wallet label by address", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); wallet.label = "test"; const profileId = "profile1"; @@ -290,13 +290,13 @@ describe("User Data Service", () => { ), ), ) - .subscribe(label => { + .subscribe((label) => { expect(label).toEqual(wallet.label); done(); }); }); - it("should update the wallet", done => { + it("should update the wallet", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); const profileId = "profile1"; userDataService @@ -313,23 +313,23 @@ describe("User Data Service", () => { ), ), ) - .subscribe(wallet => { + .subscribe((wallet) => { expect(wallet.label).toEqual(wallet.label); done(); }); }); - it("should fail to update the wallet if no profileId is specified", done => { + it("should fail to update the wallet if no profileId is specified", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); userDataService .updateWallet(wallet, undefined) - .subscribe(null, error => { + .subscribe(null, (error) => { expect(error).toBe("EMPTY_PROFILE_ID"); done(); }); }); - it("should remove wallet by address", done => { + it("should remove wallet by address", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); const profileId = "profile1"; userDataService @@ -348,7 +348,7 @@ describe("User Data Service", () => { ), ), ) - .subscribe(wallet => { + .subscribe((wallet) => { expect(wallet).toBeNull(); done(); }); @@ -388,8 +388,8 @@ describe("User Data Service", () => { authService = spectator.get(AuthProvider); }); - it("should assign the current profile", done => { - userDataService.onSelectProfile$.subscribe(profile => { + it("should assign the current profile", (done) => { + userDataService.onSelectProfile$.subscribe((profile) => { expect(profile).toBeTruthy(); done(); }); @@ -429,7 +429,7 @@ describe("User Data Service", () => { expect(userDataService.isDevNet).toBe(true); }); - it("should set the wallet label", done => { + it("should set the wallet label", (done) => { const profileId = "profile1"; authService.onLogin$.next(profileId); const wallet = new Wallet().deserialize(walletsFixtures.wallet1); @@ -448,16 +448,16 @@ describe("User Data Service", () => { ), ), ) - .subscribe(wallet => { + .subscribe((wallet) => { expect(wallet.label).toEqual(label); done(); }); }); - it("should fail to set the wallet label if the wallet is not specified", done => { + it("should fail to set the wallet label if the wallet is not specified", (done) => { userDataService .setWalletLabel(undefined, "test") - .subscribe(null, error => { + .subscribe(null, (error) => { expect(error).toEqual( jasmine.objectContaining({ key: "VALIDATION.INVALID_WALLET", @@ -467,7 +467,7 @@ describe("User Data Service", () => { }); }); - it("should fail to set the wallet label if it already exists", done => { + it("should fail to set the wallet label if it already exists", (done) => { const profileId = "profile1"; authService.onLogin$.next(profileId); authService.loggedProfileId = profileId; @@ -489,7 +489,7 @@ describe("User Data Service", () => { userDataService.setWalletLabel(wallet2, "one"), ), ) - .subscribe(null, error => { + .subscribe(null, (error) => { expect(error).toEqual( jasmine.objectContaining({ key: "VALIDATION.LABEL_EXISTS", @@ -499,7 +499,7 @@ describe("User Data Service", () => { }); }); - it("should convert wallet into delegate", done => { + it("should convert wallet into delegate", (done) => { const profileId = "profile1"; authService.onLogin$.next(profileId); const wallet = new Wallet().deserialize(walletsFixtures.wallet1); @@ -520,7 +520,7 @@ describe("User Data Service", () => { ), ), ) - .subscribe(wallet => { + .subscribe((wallet) => { expect(wallet).toEqual( jasmine.objectContaining({ isDelegate: true, @@ -531,13 +531,13 @@ describe("User Data Service", () => { }); }); - it("should fail to convert wallet into delegate", done => { + it("should fail to convert wallet into delegate", (done) => { const wallet = new Wallet().deserialize(walletsFixtures.wallet1); userDataService .ensureWalletDelegateProperties(undefined, "delegate") .pipe( - catchError(error => { + catchError((error) => { expect(error).toBe("WALLET_EMPTY"); return userDataService.ensureWalletDelegateProperties( wallet, @@ -545,7 +545,7 @@ describe("User Data Service", () => { ); }), ) - .subscribe(null, error => { + .subscribe(null, (error) => { expect(error).toBe("USERNAME_EMPTY"); done(); }); diff --git a/src/app/services/user-data/user-data.ts b/src/app/services/user-data/user-data.ts index c635937e6..c97d1ed45 100644 --- a/src/app/services/user-data/user-data.ts +++ b/src/app/services/user-data/user-data.ts @@ -65,7 +65,7 @@ export class UserDataServiceImpl implements UserDataService { this.onClearStorage(); this.onUpdateNetwork$.subscribe( - network => (this.currentNetwork = network), + (network) => (this.currentNetwork = network), ); } @@ -375,7 +375,7 @@ export class UserDataServiceImpl implements UserDataService { if ( lodash.some( this.currentProfile.wallets, - w => + (w) => label && w.label && w.label.toLowerCase() === label.toLowerCase(), @@ -419,7 +419,7 @@ export class UserDataServiceImpl implements UserDataService { loadProfiles() { return this.storageProvider.getObject(constants.STORAGE_PROFILES).pipe( - map(profiles => { + map((profiles) => { // we have to create "real" contacts here, because the "address" property was not on the contact object // in the first versions of the app return lodash.mapValues(profiles, (profile, profileId) => ({ @@ -436,11 +436,11 @@ export class UserDataServiceImpl implements UserDataService { } loadNetworks(): Observable> { - return new Observable(observer => { + return new Observable((observer) => { // Return defaults networks from arkts this.storageProvider .getObject(constants.STORAGE_NETWORKS) - .subscribe(networks => { + .subscribe((networks) => { if (!networks || lodash.isEmpty(networks)) { const uniqueDefaults = {}; @@ -520,12 +520,12 @@ export class UserDataServiceImpl implements UserDataService { } private loadAllData() { - this.loadProfiles().subscribe(profiles => (this.profiles = profiles)); - this.loadNetworks().subscribe(networks => (this.networks = networks)); + this.loadProfiles().subscribe((profiles) => (this.profiles = profiles)); + this.loadNetworks().subscribe((networks) => (this.networks = networks)); } private onLogin() { - return this.authProvider.onLogin$.subscribe(id => { + return this.authProvider.onLogin$.subscribe((id) => { this.setCurrentProfile(id); this.setCurrentNetwork(); }); diff --git a/src/app/utils/ark-client.ts b/src/app/utils/ark-client.ts index 43c119dcb..2c6879fe9 100644 --- a/src/app/utils/ark-client.ts +++ b/src/app/utils/ark-client.ts @@ -43,7 +43,7 @@ export default class ApiClient { } getWallet(address: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get(`wallets/${address}`).subscribe( (response: any) => { if (response && response.data) { @@ -55,13 +55,13 @@ export default class ApiClient { } observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } getWalletVotes(address: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get(`wallets/${address}/votes`).subscribe( (response: any) => { const data = response.data; @@ -83,26 +83,26 @@ export default class ApiClient { this.getDelegateByPublicKey( delegatePublicKey, ).subscribe( - delegate => { + (delegate) => { observer.next({ success: true, delegates: [delegate], }); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); } else { observer.complete(); } }, - error => observer.error(error), + (error) => observer.error(error), ); }); } getTransactionList(address: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get(`wallets/${address}/transactions`, { params: { orderBy: "timestamp:desc", @@ -111,7 +111,7 @@ export default class ApiClient { (response: any) => { observer.next({ success: true, - transactions: response.data.map(transaction => ({ + transactions: response.data.map((transaction) => ({ ...transaction, recipientId: transaction.recipient, senderId: transaction.sender, @@ -123,13 +123,13 @@ export default class ApiClient { }); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } getTransactionFees(): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get("transactions/fees").subscribe( (response: any) => { const data = response.data; @@ -149,31 +149,31 @@ export default class ApiClient { }); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } getNodeCrypto(host: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get("node/configuration/crypto", {}, host).subscribe( (response: any) => { observer.next(response.data); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } getNodeConfiguration(host?: string): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get(`node/configuration`, {}, host).subscribe( (response: any) => { observer.next(response.data); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } @@ -182,7 +182,7 @@ export default class ApiClient { host: string, timeoutMs?: number, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get(`node/syncing`, {}, host, timeoutMs).subscribe( (response: any) => { observer.next({ @@ -191,13 +191,13 @@ export default class ApiClient { }); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } getPeerList(): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get("peers").subscribe( (response: any) => { observer.next({ @@ -207,7 +207,7 @@ export default class ApiClient { }); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } @@ -217,13 +217,13 @@ export default class ApiClient { host?: string, timeoutMs?: number, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get(`peers/${ip}`, null, host, timeoutMs).subscribe( (response: any) => { observer.next(response.data); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } @@ -233,7 +233,7 @@ export default class ApiClient { port: number, protocol: "http" | "https" = "http", ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.httpClient .get(`${protocol}://${ip}:4040/config`) .pipe(timeout(2000)) @@ -255,7 +255,7 @@ export default class ApiClient { this.getNodeConfiguration( `${protocol}://${ip}:${port}`, ).subscribe( - response => { + (response) => { const apiPort = lodash.find( response.ports, (_, key) => @@ -272,14 +272,14 @@ export default class ApiClient { apiPort, protocol, ).subscribe( - r => observer.next(r), - e => observer.error(e), + (r) => observer.next(r), + (e) => observer.error(e), ); } else { observer.error(); } }, - error => observer.error(error), + (error) => observer.error(error), ); }, ); @@ -293,7 +293,7 @@ export default class ApiClient { peer: Peer, protocol: "http" | "https" = "http", ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.post( "transactions", { transactions: [transaction] }, @@ -304,7 +304,7 @@ export default class ApiClient { observer.next(response); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } @@ -312,19 +312,19 @@ export default class ApiClient { getDelegateList( options: any = { page: 1, limit: 100, orderBy: "rank:asc" }, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.get("delegates", { params: options }).subscribe( (response: any) => { observer.next({ success: true, - delegates: response.data.map(delegate => + delegates: response.data.map((delegate) => this.__formatDelegateResponse(delegate), ), totalCount: parseInt(response.meta.totalCount), }); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } @@ -334,14 +334,14 @@ export default class ApiClient { return of(null); } - return new Observable(observer => { + return new Observable((observer) => { this.get(`delegates/${publicKey}`).subscribe( (response: any) => { const data = response.data; observer.next(this.__formatDelegateResponse(data)); observer.complete(); }, - error => observer.error(error), + (error) => observer.error(error), ); }); } diff --git a/src/app/utils/ark-peer-discovery.ts b/src/app/utils/ark-peer-discovery.ts index 05ae894d2..79a897a46 100644 --- a/src/app/utils/ark-peer-discovery.ts +++ b/src/app/utils/ark-peer-discovery.ts @@ -25,7 +25,7 @@ export class PeerDiscovery { networkOrHost: string; defaultPort?: number; }): Observable { - return new Observable(observer => { + return new Observable((observer) => { if (!networkOrHost || typeof networkOrHost !== "string") { observer.error("No network or host provided"); } @@ -33,26 +33,26 @@ export class PeerDiscovery { try { if (isUrl(networkOrHost)) { this.getSeedsFromHost(networkOrHost, defaultPort).subscribe( - response => { + (response) => { observer.next( new PeerDiscovery(this.httpClient, response), ); observer.complete(); }, - e => observer.error(e), + (e) => observer.error(e), ); } else { this.getSeedsFromRepository( networkOrHost, defaultPort, ).subscribe( - response => { + (response) => { observer.next( new PeerDiscovery(this.httpClient, response), ); observer.complete(); }, - e => observer.error(e), + (e) => observer.error(e), ); } } catch (error) { @@ -84,7 +84,7 @@ export class PeerDiscovery { } public findPeers(opts: any = {}): Observable { - return new Observable(observer => { + return new Observable((observer) => { if (!opts.retry) { opts.retry = { retries: 0 }; } @@ -137,7 +137,7 @@ export class PeerDiscovery { ); observer.complete(); }, - e => { + (e) => { observer.error(e); }, ); @@ -152,9 +152,9 @@ export class PeerDiscovery { name: string, opts: { additional?: string[] } = {}, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.findPeers(opts).subscribe( - response => { + (response) => { const peers: PeerApiResponse[] = []; for (const peer of response) { @@ -195,7 +195,7 @@ export class PeerDiscovery { observer.next(peers); observer.complete(); }, - e => observer.error(e), + (e) => observer.error(e), ); }); } @@ -204,7 +204,7 @@ export class PeerDiscovery { host: string, defaultPort: number, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.httpClient.get(host).subscribe( (body: any) => { const seeds: PeerApiResponse[] = []; @@ -229,7 +229,7 @@ export class PeerDiscovery { observer.next(seeds); observer.complete(); }, - e => observer.error(e), + (e) => observer.error(e), ); }); } @@ -238,7 +238,7 @@ export class PeerDiscovery { network: string, defaultPort: number, ): Observable { - return new Observable(observer => { + return new Observable((observer) => { this.httpClient .get( `https://raw.githubusercontent.com/ArkEcosystem/peers/master/${network}.json`, @@ -252,7 +252,7 @@ export class PeerDiscovery { observer.next(seeds); observer.complete(); }, - e => observer.error(e), + (e) => observer.error(e), ); }); } diff --git a/src/assets/i18n/pt-br.json b/src/assets/i18n/pt-br.json index 411a848e0..c34a81aff 100644 --- a/src/assets/i18n/pt-br.json +++ b/src/assets/i18n/pt-br.json @@ -15,13 +15,13 @@ "ADD_CONTACT_TEXT": "Clique no botão abaixo para adicionar um contato", "CONTACT": "Contato", "CONTACTS": "Contatos", - "INVALID_ADDRESS": "O endereço '{{ address }}' é inválido!", - "CONTACT_NAME_EMPTY": "O nome do contato está vazio!", - "CONTACT_EXISTS_ADDRESS": "Já existe um contato com o endereço '{{ address }}'!", - "CONTACT_NOT_EXISTS_ADDRESS": "Um contato com o endereço '{{ address }}' não existe!", - "CONTACT_EXISTS_NAME": "Já existe um contato com o nome '{{ name }}'!", - "DELETE_CONTACT": "Tem certeza de que deseja excluir o contato '{{ name }}'?", - "OVERWRITE_CONTACT": "Já existe um contato chamado '{{ name }}' com este endereço. Deseja sobrescrever o nome com '{{ newName }}'?" + "INVALID_ADDRESS": "O endereço '{{ address }}' é inválido!", + "CONTACT_NAME_EMPTY": "O nome do contato está vazio!", + "CONTACT_EXISTS_ADDRESS": "Já existe um contato com o endereço '{{ address }}'!", + "CONTACT_NOT_EXISTS_ADDRESS": "Um contato com o endereço '{{ address }}' não existe!", + "CONTACT_EXISTS_NAME": "Já existe um contato com o nome '{{ name }}'!", + "DELETE_CONTACT": "Tem certeza de que deseja excluir o contato '{{ name }}'?", + "OVERWRITE_CONTACT": "Já existe um contato chamado '{{ name }}' com este endereço. Deseja sobrescrever o nome com '{{ newName }}'?" }, "COPIED_CLIPBOARD": "Copiado para área de transferência", "COPY": "Copiar", diff --git a/src/assets/i18n/zh.json b/src/assets/i18n/zh.json index 571ca51da..ab2694467 100644 --- a/src/assets/i18n/zh.json +++ b/src/assets/i18n/zh.json @@ -1,335 +1,335 @@ { - "API": { - "BALANCE_TOO_LOW": "余额不足无法交易", - "BALANCE_TOO_LOW_DETAIL": "您钱包的余额不足! 所需交易费用为: {{ totalAmount }} ({{ amount }} + {{ fee }} 费用). 你的余额只有 {{ balance }}!", - "DESTINATION_ADDRESS_ERROR": "交易目的地地址 '{{ address }}' 不正确", - "PEER_LIST_ERROR": "无法获得同行列表", - "TRANSACTION_FAILED": "交易失败", - "TRANSACTION_SENT": "交易已发送" - }, - "ARE_YOU_SURE": "你确定吗?", - "BACK_BUTTON_TEXT": "后退", - "CANCEL": "取消", - "CONFIRM": "确定", - "CONTACTS_PAGE": { - "ADD_CONTACT_TEXT": "单击下面的按钮添加联系人", - "CONTACT": "联系人", - "CONTACTS": "联系人", - "INVALID_ADDRESS": "地址无效 '{{ address }}'!", - "CONTACT_NAME_EMPTY": "联系人姓名为空!", - "CONTACT_EXISTS_ADDRESS": "该地址已经存在联系人 '{{ address }}'!", - "CONTACT_NOT_EXISTS_ADDRESS": "该地址的联系人不存在 '{{ address }}'", - "CONTACT_EXISTS_NAME": "该姓名联系人已经存在 '{{ name }}'!", - "DELETE_CONTACT": "确定要删除该联系人吗 '{{ name }}'?", - "OVERWRITE_CONTACT": "该地址已经有叫 '{{ name }}' 的联系人存在,你确定要替换该联系人吗 '{{ newName }}'?" - }, - "COPIED_CLIPBOARD": "复制到剪贴板", - "COPY": "复制", - "COPY_CLIPBOARD_FAILED": "复制到剪切板失败", - "CREATE": "创建", - "CUSTOM_NETWORK": { - "ADDRESS_VERSION": "地址版本", - "API_SERVER_PORT": "种子服务器API端口", - "CHOOSE_EXISTING": "选择现有的自定义网络...", - "CONFIGURE": "组态", - "CONFIGURE_ERROR": "尝试从对等服务器检索网络设置时出错!", - "CONFIRM_DELETE": "您确定要删除此网络吗?", - "CUSTOM_NETWORK": "自定义网络", - "CREATE_NEW": "创建", - "CREATE_NETWORK": "创建自定义网络", - "DELETE_FAIL_NOT_EMPTY": "无法删除此网络,因为仍有使用此网络的配置文件。你必须先删除它们", - "DELETE_SUCCESSFUL": "成功删除网络!", - "EDIT": "编辑网络", - "EXPLORER": "浏览器", - "IS_VERSION_2": "版本2?", - "NAME": "姓名", - "NETHASH": "Nethash", - "MANAGE_NETWORKS": "管理自定义网络", - "MARKET_SYMBOL_NAME": "市场符号名称(用于获取美元,BTC等的价格)", - "NO_NETWORK_CONFIGURED": "尚未配置自定义网络。单击下面的按钮创建一个", - "OR_CREATE_NEW": "... 或创建一个新的自定义网络", - "SAVE_SUCCESSFUL": "成功保存了网络!", - "SEED_SERVER": "种子服务器URL", - "SEED_SERVER_IP": "种子服务器IP", - "SEED_SERVER_PORT": "种子服务器端口#", - "SYMBOL_NAME": "符号名称", - "TOKEN_NAME": "令牌名称" - }, - "DATE": "日期", - "DELEGATES_PAGE": { - "ACTIVE": "激活", - "APPROVAL": "批准", - "DELEGATE": "验证者”“验证人", - "DELEGATE_NAME": "代理姓名", - "DELEGATES": "代理", - "MISSED_BLOCKS": "错过的区块", - "NO_MATCHING_SEARCH": "没有匹配的代理", - "NOTE_COST_TEXT": "注册代理所需费用为", - "PRODUCED_BLOCKS": "区块建立完成", - "RANK": "Rank", - "REGISTER_DELEGATE": "注册代理", - "STANDBY": "待命", - "SUPPLY": "供应", - "TOTAL_FORGED": "全部伪造", - "UNVOTE": "取消选择", - "UNVOTE_CURRENT_DELEGATE": "你已经有了一个代表,你想首先取消 {{ delegate }} 吗?", + "API": { + "BALANCE_TOO_LOW": "余额不足无法交易", + "BALANCE_TOO_LOW_DETAIL": "您钱包的余额不足! 所需交易费用为: {{ totalAmount }} ({{ amount }} + {{ fee }} 费用). 你的余额只有 {{ balance }}!", + "DESTINATION_ADDRESS_ERROR": "交易目的地地址 '{{ address }}' 不正确", + "PEER_LIST_ERROR": "无法获得同行列表", + "TRANSACTION_FAILED": "交易失败", + "TRANSACTION_SENT": "交易已发送" + }, + "ARE_YOU_SURE": "你确定吗?", + "BACK_BUTTON_TEXT": "后退", + "CANCEL": "取消", + "CONFIRM": "确定", + "CONTACTS_PAGE": { + "ADD_CONTACT_TEXT": "单击下面的按钮添加联系人", + "CONTACT": "联系人", + "CONTACTS": "联系人", + "INVALID_ADDRESS": "地址无效 '{{ address }}'!", + "CONTACT_NAME_EMPTY": "联系人姓名为空!", + "CONTACT_EXISTS_ADDRESS": "该地址已经存在联系人 '{{ address }}'!", + "CONTACT_NOT_EXISTS_ADDRESS": "该地址的联系人不存在 '{{ address }}'", + "CONTACT_EXISTS_NAME": "该姓名联系人已经存在 '{{ name }}'!", + "DELETE_CONTACT": "确定要删除该联系人吗 '{{ name }}'?", + "OVERWRITE_CONTACT": "该地址已经有叫 '{{ name }}' 的联系人存在,你确定要替换该联系人吗 '{{ newName }}'?" + }, + "COPIED_CLIPBOARD": "复制到剪贴板", + "COPY": "复制", + "COPY_CLIPBOARD_FAILED": "复制到剪切板失败", + "CREATE": "创建", + "CUSTOM_NETWORK": { + "ADDRESS_VERSION": "地址版本", + "API_SERVER_PORT": "种子服务器API端口", + "CHOOSE_EXISTING": "选择现有的自定义网络...", + "CONFIGURE": "组态", + "CONFIGURE_ERROR": "尝试从对等服务器检索网络设置时出错!", + "CONFIRM_DELETE": "您确定要删除此网络吗?", + "CUSTOM_NETWORK": "自定义网络", + "CREATE_NEW": "创建", + "CREATE_NETWORK": "创建自定义网络", + "DELETE_FAIL_NOT_EMPTY": "无法删除此网络,因为仍有使用此网络的配置文件。你必须先删除它们", + "DELETE_SUCCESSFUL": "成功删除网络!", + "EDIT": "编辑网络", + "EXPLORER": "浏览器", + "IS_VERSION_2": "版本2?", + "NAME": "姓名", + "NETHASH": "Nethash", + "MANAGE_NETWORKS": "管理自定义网络", + "MARKET_SYMBOL_NAME": "市场符号名称(用于获取美元,BTC等的价格)", + "NO_NETWORK_CONFIGURED": "尚未配置自定义网络。单击下面的按钮创建一个", + "OR_CREATE_NEW": "... 或创建一个新的自定义网络", + "SAVE_SUCCESSFUL": "成功保存了网络!", + "SEED_SERVER": "种子服务器URL", + "SEED_SERVER_IP": "种子服务器IP", + "SEED_SERVER_PORT": "种子服务器端口#", + "SYMBOL_NAME": "符号名称", + "TOKEN_NAME": "令牌名称" + }, + "DATE": "日期", + "DELEGATES_PAGE": { + "ACTIVE": "激活", + "APPROVAL": "批准", + "DELEGATE": "验证者”“验证人", + "DELEGATE_NAME": "代理姓名", + "DELEGATES": "代理", + "MISSED_BLOCKS": "错过的区块", + "NO_MATCHING_SEARCH": "没有匹配的代理", + "NOTE_COST_TEXT": "注册代理所需费用为", + "PRODUCED_BLOCKS": "区块建立完成", + "RANK": "Rank", + "REGISTER_DELEGATE": "注册代理", + "STANDBY": "待命", + "SUPPLY": "供应", + "TOTAL_FORGED": "全部伪造", + "UNVOTE": "取消选择", + "UNVOTE_CURRENT_DELEGATE": "你已经有了一个代表,你想首先取消 {{ delegate }} 吗?", - "UPDATING": "上传中", - "UPTIME": "正常运行时间", - "USERNAME_ALREADY_EXISTS": "此用户名已存在", - "VOTE": "选择", - "VOTED": "已选择", - "VOTE_FETCH_ERROR": "无法获取当前选择", - "WARNING_SELECT_WALLET_FIRST": "你需要挑选一个钱包然后进行选择" - }, - "DELETE": "删除", - "DONE": "完成", - "EDIT": "编辑", - "SIGN_OUT": "登出", - "EXIT_APP_TEXT": "退出APP?", - "FAILED": "失败", - "GENERAL": "一般", - "GENERATE": "生成", - "IMPORT": "导入", - "INTRO_PAGE": { - "FAST_EASY": "快速便捷", - "GET_STARTED": "开始", - "SECURITY": "安全", - "TEXT_1": "我们提供您在全球任何时间,任何地点管理ARK硬币所需的所有工具!", + "UPDATING": "上传中", + "UPTIME": "正常运行时间", + "USERNAME_ALREADY_EXISTS": "此用户名已存在", + "VOTE": "选择", + "VOTED": "已选择", + "VOTE_FETCH_ERROR": "无法获取当前选择", + "WARNING_SELECT_WALLET_FIRST": "你需要挑选一个钱包然后进行选择" + }, + "DELETE": "删除", + "DONE": "完成", + "EDIT": "编辑", + "SIGN_OUT": "登出", + "EXIT_APP_TEXT": "退出APP?", + "FAILED": "失败", + "GENERAL": "一般", + "GENERATE": "生成", + "IMPORT": "导入", + "INTRO_PAGE": { + "FAST_EASY": "快速便捷", + "GET_STARTED": "开始", + "SECURITY": "安全", + "TEXT_1": "我们提供您在全球任何时间,任何地点管理ARK硬币所需的所有工具!", - "TEXT_2": "使用PBKDF2算法和受PIN码保护的AES-256加密安全地存储所有敏感数据", + "TEXT_2": "使用PBKDF2算法和受PIN码保护的AES-256加密安全地存储所有敏感数据", - "TEXT_3": "在个人资料和钱包之间切换,查看余额,发送和接收资金等等", - "WELCOME": "欢迎加入我们" - }, - "SIGN_IN_PAGE": { - "ARK_WALLET": "ARK钱包", - "CREATE_PROFILE": "创建账户", - "SLOGAN": "欢迎来到ARK生态系统" - }, - "SIGN_OUT_PROFILE_TEXT": "确定要登出当前账户?", - "MARKETS_PAGE": { - "MARKET_CAP": "市值", - "MARKET_DATA": "市场数据", - "PERCENTAGE_CHANGE": "24小时走势", - "PRICE": "价格", - "VOLUME": "交易量" - }, - "NAME": "姓名", - "NETWORKS_PAGE": { - "CHANGE_PEER": "改变代理", - "CHOOSE_ONE": "选择一种网络类型", + "TEXT_3": "在个人资料和钱包之间切换,查看余额,发送和接收资金等等", + "WELCOME": "欢迎加入我们" + }, + "SIGN_IN_PAGE": { + "ARK_WALLET": "ARK钱包", + "CREATE_PROFILE": "创建账户", + "SLOGAN": "欢迎来到ARK生态系统" + }, + "SIGN_OUT_PROFILE_TEXT": "确定要登出当前账户?", + "MARKETS_PAGE": { + "MARKET_CAP": "市值", + "MARKET_DATA": "市场数据", + "PERCENTAGE_CHANGE": "24小时走势", + "PRICE": "价格", + "VOLUME": "交易量" + }, + "NAME": "姓名", + "NETWORKS_PAGE": { + "CHANGE_PEER": "改变代理", + "CHOOSE_ONE": "选择一种网络类型", - "DELAY": "延迟", - "HEIGHT": "高峰", - "LOOKING_GOOD_PEER": "寻找一个好的代理", - "PEER_SUCCESSFULLY_CHANGED": "成功更换代理", - "NETWORK_STATUS": "网络状况", - "NETWORK_TYPE": "网络类型", - "INTERNET_DESCONNECTED": "无法连接到互联网!", - "PEER": "代理" - }, - "NEXT": "下一步", - "NO": "不", - "PASSPHRASE_TEST": { - "INFO": "请输入密码中所需的单词以验证钱包创建.", + "DELAY": "延迟", + "HEIGHT": "高峰", + "LOOKING_GOOD_PEER": "寻找一个好的代理", + "PEER_SUCCESSFULLY_CHANGED": "成功更换代理", + "NETWORK_STATUS": "网络状况", + "NETWORK_TYPE": "网络类型", + "INTERNET_DESCONNECTED": "无法连接到互联网!", + "PEER": "代理" + }, + "NEXT": "下一步", + "NO": "不", + "PASSPHRASE_TEST": { + "INFO": "请输入密码中所需的单词以验证钱包创建.", - "WRONG_WORD": "键入的单词不正确", - "DEVNET_WORDS_NOTICE": "Devnet会自动填写单词" - }, - "PIN_CODE": { - "CONFIRM": "确认您的PIN码", - "CREATE": "创建您的PIN码", - "DEFAULT_MESSAGE": "输入您的PIN码", - "WRONG_PIN_MANY_TIMES": "您输入错误的PIN次数太多了!", + "WRONG_WORD": "键入的单词不正确", + "DEVNET_WORDS_NOTICE": "Devnet会自动填写单词" + }, + "PIN_CODE": { + "CONFIRM": "确认您的PIN码", + "CREATE": "创建您的PIN码", + "DEFAULT_MESSAGE": "输入您的PIN码", + "WRONG_PIN_MANY_TIMES": "您输入错误的PIN次数太多了!", - "WAIT_TO_TRY": "请稍等 {{ time }} 后重试", - "SIGN_IN_ERROR": "使用您的PIN登录时出现问题", - "PIN_CREATED_ERROR_TEXT": "使用您的PIN登录时出现问题", - "PIN_CREATED_TEXT": "您的PIN已创建", - "PIN_UPDATED_ERROR_TEXT": "更新PIN码时出现问题", - "PIN_UPDATED_TEXT": "您的个人识别码已更新", - "TYPE_PIN_ENCRYPT_PASSPHRASE": "输入您的PIN以加密密码", - "TYPE_PIN_REMOVE_WALLET": "输入您的PIN码以删除钱包", - "TYPE_PIN_SIGN_TRANSACTION": "输入您的PIN码以签署交易", - "UPDATING": "更新所有配置文件和钱包的PIN码...", + "WAIT_TO_TRY": "请稍等 {{ time }} 后重试", + "SIGN_IN_ERROR": "使用您的PIN登录时出现问题", + "PIN_CREATED_ERROR_TEXT": "使用您的PIN登录时出现问题", + "PIN_CREATED_TEXT": "您的PIN已创建", + "PIN_UPDATED_ERROR_TEXT": "更新PIN码时出现问题", + "PIN_UPDATED_TEXT": "您的个人识别码已更新", + "TYPE_PIN_ENCRYPT_PASSPHRASE": "输入您的PIN以加密密码", + "TYPE_PIN_REMOVE_WALLET": "输入您的PIN码以删除钱包", + "TYPE_PIN_SIGN_TRANSACTION": "输入您的PIN码以签署交易", + "UPDATING": "更新所有配置文件和钱包的PIN码...", - "WRONG": "请输入正确的PIN码", - "WEAK_PIN": "密码弱", - "WEAK_PIN_DETAIL": "您输入的PIN被认为很脆弱且易于猜测。您确定要使用它吗?" - }, - "PROFILES_PAGE": { - "PROFILENAME_ALREADY_EXISTS": "已经有一个名称的个人资料 '{{ name }}'!", + "WRONG": "请输入正确的PIN码", + "WEAK_PIN": "密码弱", + "WEAK_PIN_DETAIL": "您输入的PIN被认为很脆弱且易于猜测。您确定要使用它吗?" + }, + "PROFILES_PAGE": { + "PROFILENAME_ALREADY_EXISTS": "已经有一个名称的个人资料 '{{ name }}'!", - "ADD_PROFILE_ERROR": "无法添加个人资料", + "ADD_PROFILE_ERROR": "无法添加个人资料", - "ADD_PROFILE_TEXT": "单击下面的按钮以创建配置个人资料", - "CREATE_PROFILE": "创建个人资料", - "CUSTOM": "选择", - "DELETE_NOT_EMPTY": "您无法删除包含1个或多个钱包的配置文件", - "GET_STARTED": "开始", - "SIGN_IN": "登入" - }, - "QR_CODE": { - "INVALID_QR_ERROR": "扫描QR码时出现问题", - "INVALID_QRCODE": "此QR码没有有效的地址或密码", - "PERMISSION_DENIED": "QR相机被拒绝了", + "ADD_PROFILE_TEXT": "单击下面的按钮以创建配置个人资料", + "CREATE_PROFILE": "创建个人资料", + "CUSTOM": "选择", + "DELETE_NOT_EMPTY": "您无法删除包含1个或多个钱包的配置文件", + "GET_STARTED": "开始", + "SIGN_IN": "登入" + }, + "QR_CODE": { + "INVALID_QR_ERROR": "扫描QR码时出现问题", + "INVALID_QRCODE": "此QR码没有有效的地址或密码", + "PERMISSION_DENIED": "QR相机被拒绝了", - "PERMISSION_PERMANENTLY_DENIED": "QR相机永久否认。转到“设备设置”进行更改.", - "PROBLEM_TEXT": "扫描QR码时出现问题" - }, - "RENAME": "重命名", - "SAVE": "保存", - "SEARCH": "搜索", - "SETTINGS_PAGE": { - "ABOUT": "关于", - "APPEARANCE": "出现", - "APPLICATION": "应用", - "CHANGE_PIN": "更改PIN", - "CLEAR_DATA": "清除数据", - "CLEAR_DATA_TEXT": "您的所有数据(包括已创建的个人资料,钱包和联系人)都将从应用中删除,并重置为默认值", - "CURRENCY": "币种", - "DARK_MODE": "暗模式", - "LANGUAGE": "语言", - "PRIVACY_POLICY": "隐私政策", - "SECURITY": "安全", - "NOT_AVAILABLE_WATCH_ONLY": "不适用于仅限观看地址", - "NOTIFICATIONS": "通知", - "SETTINGS": "设置", - "VERSION": "版本", - "WALLET_BACKUP": "钱包备份", - "WORDLIST_LANGUAGE": "密码短语" - }, - "SHOW_ADVANCED": "显示高级", + "PERMISSION_PERMANENTLY_DENIED": "QR相机永久否认。转到“设备设置”进行更改.", + "PROBLEM_TEXT": "扫描QR码时出现问题" + }, + "RENAME": "重命名", + "SAVE": "保存", + "SEARCH": "搜索", + "SETTINGS_PAGE": { + "ABOUT": "关于", + "APPEARANCE": "出现", + "APPLICATION": "应用", + "CHANGE_PIN": "更改PIN", + "CLEAR_DATA": "清除数据", + "CLEAR_DATA_TEXT": "您的所有数据(包括已创建的个人资料,钱包和联系人)都将从应用中删除,并重置为默认值", + "CURRENCY": "币种", + "DARK_MODE": "暗模式", + "LANGUAGE": "语言", + "PRIVACY_POLICY": "隐私政策", + "SECURITY": "安全", + "NOT_AVAILABLE_WATCH_ONLY": "不适用于仅限观看地址", + "NOTIFICATIONS": "通知", + "SETTINGS": "设置", + "VERSION": "版本", + "WALLET_BACKUP": "钱包备份", + "WORDLIST_LANGUAGE": "密码短语" + }, + "SHOW_ADVANCED": "显示高级", - "SKIP": "跳过", - "STATUS": "状态", - "TRANSACTIONS_PAGE": { - "2ND_SIGNATURE_CREATION": "第二次签名创作", - "ADD_ADDRESS_TO_CONTACTS": "添加 {{ address }} 到联系人", - "AMOUNT": "金额", - "CONFIRMATIONS": "确认", - "COPY_TXID": "复制TXID", - "CREATE_TRANSACTION_ERROR": "无法创建交易。检查互联网连接", - "DELEGATE_REGISTRATION": "代理注册", - "ENCRYPT_SAVE_SECOND_PASSPHRASE": "您想要加密并保存第二个密码吗?", - "EXISTING_CONTACT": "联系人", - "EXISTING_WALLET": "钱包", - "FEE": "费用", - "FETCHING_TRANSACTIONS": "获取交易", + "SKIP": "跳过", + "STATUS": "状态", + "TRANSACTIONS_PAGE": { + "2ND_SIGNATURE_CREATION": "第二次签名创作", + "ADD_ADDRESS_TO_CONTACTS": "添加 {{ address }} 到联系人", + "AMOUNT": "金额", + "CONFIRMATIONS": "确认", + "COPY_TXID": "复制TXID", + "CREATE_TRANSACTION_ERROR": "无法创建交易。检查互联网连接", + "DELEGATE_REGISTRATION": "代理注册", + "ENCRYPT_SAVE_SECOND_PASSPHRASE": "您想要加密并保存第二个密码吗?", + "EXISTING_CONTACT": "联系人", + "EXISTING_WALLET": "钱包", + "FEE": "费用", + "FETCHING_TRANSACTIONS": "获取交易", - "FROM": "来自", - "ID": "ID", - "INVALID_ADDRESS_ERROR": "无效地址", - "INVALID_CONTACT_ERROR": "无效联系人", - "INVALID_FORM_ERROR": "表单数据无效", + "FROM": "来自", + "ID": "ID", + "INVALID_ADDRESS_ERROR": "无效地址", + "INVALID_CONTACT_ERROR": "无效联系人", + "INVALID_FORM_ERROR": "表单数据无效", - "MULTISIGNATURE_CREATION": "多重签名创作", - "NEW_CONTACT_NAME": "新联系人姓名 (可选)", - "NEW_WALLET_LABEL": "钱包标签 (可选)", + "MULTISIGNATURE_CREATION": "多重签名创作", + "NEW_CONTACT_NAME": "新联系人姓名 (可选)", + "NEW_WALLET_LABEL": "钱包标签 (可选)", - "OPEN_EXPLORER": "在浏览器打开", - "PERFORMING_DESTINATION_ADDRESS_CHECKS": "执行目标地址检查...", - "QRCODE_COPY": "点击地址将其复制到剪贴板或单击图标以共享QR码。您也可以选择输入金额,然后将其包含在QR码中.", + "OPEN_EXPLORER": "在浏览器打开", + "PERFORMING_DESTINATION_ADDRESS_CHECKS": "执行目标地址检查...", + "QRCODE_COPY": "点击地址将其复制到剪贴板或单击图标以共享QR码。您也可以选择输入金额,然后将其包含在QR码中.", - "RECEIVE": "接收", - "RECEIVE_TOKEN": "接收 {{ Token }}", - "RECEIVED": "已接收", - "RECEIVED_FROM": "来自", - "RECIPIENT": "接收人", - "SECOND_SIGNATURE_CREATION": "第二次签名创作", + "RECEIVE": "接收", + "RECEIVE_TOKEN": "接收 {{ Token }}", + "RECEIVED": "已接收", + "RECEIVED_FROM": "来自", + "RECIPIENT": "接收人", + "SECOND_SIGNATURE_CREATION": "第二次签名创作", - "SECOND_PASSPHRASE_NOT_ENTERED": "尚未输入第二个密码", + "SECOND_PASSPHRASE_NOT_ENTERED": "尚未输入第二个密码", - "SEND": "发送", - "SEND_ALL": "发送所有", - "SEND_TOKEN_TO_ADDRESS": "发送 {{ token }} 到 {{ address }}", - "SENT": "已发送", - "SENT_TO": "已发送到", - "SEND_TRANSACTION": "发送交易", - "SENT_SUCCESS": "交易发送成功!", - "SMART_BRIDGE": "SmartBridge (可选)", - "TO": "To", - "TRANSACTION": "交易" - }, - "TYPE": "类别", - "VALIDATION": { - "INVALID_ADDRESS": "此地址无效!", - "IS_OWN_ADDRESS": "您确定要发送到自己的地址吗?", - "NO_TRANSACTIONS": "看来地址没有任何交易。你确定它是正确的吗?", - "IS_NEO_ADDRESS": "看起来这是一个'NEO'地址。你确定它是正确的吗?", - "LABEL_EXISTS": "已经有一个带有标签的钱包 '{{ label }}'!", - "INVALID_WALLET": "钱包无效或未设置!" - }, - "WALLETS_PAGE": { - "ADD_WALLET_ERROR": "添加钱包失败", - "ADD_WALLET_TEXT": "要导入或创建钱包,请单击下面的按钮", - "ADDRESS": "地址", - "ALERT_SUCCESSFULLY_ENCRYPTED_SECOND_PASSPHRASE": "第二个密码已成功加密", - "BACKUP_ACCOUNT": "重要!安全地备份这个'秘密密码',没有这些词你无法恢复钱包或发送交易,所有ARK硬币将丢失。.", - "BACKUP_PASSPHRASE": "安全地备份此密码,没有这些词语您无法恢复您的钱包.", - "BACKUP_SECOND_PASSPHRASE": "安全地备份第二个密码短语,没有这些话就无法移动你的资金.", - "BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT": "您可以编辑您选择的密码。记得安全备份,你需要重新输入验证", - "BALANCE": "余额", - "BIP38_SEED": "BIP38 SEED", - "CONVERT_TO_FULL_WALLET": "转换为完整钱包", - "CREATE_WALLET": "创建钱包", - "CUSTOM_PASSPHRASE": "自定义(非| BIP39 |)密码", - "ENTER_SECRET_PASSPHRASE": "输入您的秘密密码", - "ENTER_ADDRESS": "输入地址", - "ENTROPY": "熵", - "ENTROPY_RANDOM_BYTES": "滑动以生成随机字节", - "GENERATE_ENTROPY": "生成熵", - "IMPORT_INVALID_ADDRESS": "此地址无法导入此配置文件", - "IMPORT_WALLET": "导入钱包", - "INVALID_ADDRESS": "无效地址", - "INVALID_MNEMONIC": "无效的助记符", - "INVALID_WORD_NUMBER": "单词数无效", - "KEEP_SAFE": "保持安全", - "LABEL": "标签", - "MY_WALLET": "我的钱包", - "NEW_WALLET_NAME": "新钱包名字", - "NEW_TRANSACTION": "在 {{ profile }} 新的交易", - "NO_TRANSACTIONS": "没有交易存在", - "TYPE_PASSPHRASE_OR_ADDRESS": "或手动输入您的|秘密密码|或您的|地址|", - "PASSPHRASE": "密码", - "PASSPHRASE_NOT_MATCH": "输入的密码与您刚刚获得的密码不匹配", - "PUBLIC_ADDRESS": "公共地址", - "PUBLIC_ADDRESS_SHARE": "公共地址 (分享)", - "PUBLIC_KEY": "公共密匙", - "PASSPHRASE_NOT_BELONG_TO_ADDRESS": "输入的密码短语不属于该地址 '{{ address }}'!", - "PASSPHRASE_NOT_BIP39": "您尚未输入有效的BIP-39密码", - "PASSPHRASE_UNSUPPORTED_INPUT": "隐藏模式下不支持的输入,请更改密码短语可见性", - "RE_ENTER_PASSPHRASE": "重新输入您的密码", - "REMOVE_WALLET": "移除钱包", - "REMOVE_WALLET_TEXT": "您的钱包将被删除。确保您已备份,您需要原始密码才能恢复", - "REMOVE_WATCH_ONLY_WALLET_TEXT": "钱包将被删除,您将无法再看到它", - "SCAN_QRCODE": "扫描二维码", - "SCAN_QRCODE_TEXT": "使用二维码导入您的地址或密码,只需指向并扫描即可", - "SECOND_BIP38_SEED": "第二个BIP38种子", - "SECOND_PASSPHRASE": "第二个密码", - "SECOND_WIF": "第二个WIF", - "SECRET_PASSPHRASE": "秘密密码", - "SECRET_PASSPHRASE_KEEP_SAFE": "秘密密码短语 (保持安全)", - "SEED": "种子", - "TOP_WALLETS": "富豪榜", - "TOTAL_BALANCE": "全部余额", - "USERNAME": "用户名", - "VALID_ADDRESS": "有效的地址", - "VALID_PASSPHRASE": "有效的密码", - "WALLETS": "钱包", - "WIF": "WIF" - }, - "WATCH_ONLY": "仅限观看", - "WEEK_DAY": { - "FRIDAY": "星期五", - "MONDAY": "星期一", - "SATURDAY": "星期六", - "SUNDAY": "星期日", - "THURSDAY": "星期四", - "TUESDAY": "星期二", - "WEDNESDAY": "星期三" - }, - "WORD": "文字", - "YES": "是" + "SEND": "发送", + "SEND_ALL": "发送所有", + "SEND_TOKEN_TO_ADDRESS": "发送 {{ token }} 到 {{ address }}", + "SENT": "已发送", + "SENT_TO": "已发送到", + "SEND_TRANSACTION": "发送交易", + "SENT_SUCCESS": "交易发送成功!", + "SMART_BRIDGE": "SmartBridge (可选)", + "TO": "To", + "TRANSACTION": "交易" + }, + "TYPE": "类别", + "VALIDATION": { + "INVALID_ADDRESS": "此地址无效!", + "IS_OWN_ADDRESS": "您确定要发送到自己的地址吗?", + "NO_TRANSACTIONS": "看来地址没有任何交易。你确定它是正确的吗?", + "IS_NEO_ADDRESS": "看起来这是一个'NEO'地址。你确定它是正确的吗?", + "LABEL_EXISTS": "已经有一个带有标签的钱包 '{{ label }}'!", + "INVALID_WALLET": "钱包无效或未设置!" + }, + "WALLETS_PAGE": { + "ADD_WALLET_ERROR": "添加钱包失败", + "ADD_WALLET_TEXT": "要导入或创建钱包,请单击下面的按钮", + "ADDRESS": "地址", + "ALERT_SUCCESSFULLY_ENCRYPTED_SECOND_PASSPHRASE": "第二个密码已成功加密", + "BACKUP_ACCOUNT": "重要!安全地备份这个'秘密密码',没有这些词你无法恢复钱包或发送交易,所有ARK硬币将丢失。.", + "BACKUP_PASSPHRASE": "安全地备份此密码,没有这些词语您无法恢复您的钱包.", + "BACKUP_SECOND_PASSPHRASE": "安全地备份第二个密码短语,没有这些话就无法移动你的资金.", + "BACKUP_SECOND_PASSPHRASE_SECURELY_RETYPE_TEXT": "您可以编辑您选择的密码。记得安全备份,你需要重新输入验证", + "BALANCE": "余额", + "BIP38_SEED": "BIP38 SEED", + "CONVERT_TO_FULL_WALLET": "转换为完整钱包", + "CREATE_WALLET": "创建钱包", + "CUSTOM_PASSPHRASE": "自定义(非| BIP39 |)密码", + "ENTER_SECRET_PASSPHRASE": "输入您的秘密密码", + "ENTER_ADDRESS": "输入地址", + "ENTROPY": "熵", + "ENTROPY_RANDOM_BYTES": "滑动以生成随机字节", + "GENERATE_ENTROPY": "生成熵", + "IMPORT_INVALID_ADDRESS": "此地址无法导入此配置文件", + "IMPORT_WALLET": "导入钱包", + "INVALID_ADDRESS": "无效地址", + "INVALID_MNEMONIC": "无效的助记符", + "INVALID_WORD_NUMBER": "单词数无效", + "KEEP_SAFE": "保持安全", + "LABEL": "标签", + "MY_WALLET": "我的钱包", + "NEW_WALLET_NAME": "新钱包名字", + "NEW_TRANSACTION": "在 {{ profile }} 新的交易", + "NO_TRANSACTIONS": "没有交易存在", + "TYPE_PASSPHRASE_OR_ADDRESS": "或手动输入您的|秘密密码|或您的|地址|", + "PASSPHRASE": "密码", + "PASSPHRASE_NOT_MATCH": "输入的密码与您刚刚获得的密码不匹配", + "PUBLIC_ADDRESS": "公共地址", + "PUBLIC_ADDRESS_SHARE": "公共地址 (分享)", + "PUBLIC_KEY": "公共密匙", + "PASSPHRASE_NOT_BELONG_TO_ADDRESS": "输入的密码短语不属于该地址 '{{ address }}'!", + "PASSPHRASE_NOT_BIP39": "您尚未输入有效的BIP-39密码", + "PASSPHRASE_UNSUPPORTED_INPUT": "隐藏模式下不支持的输入,请更改密码短语可见性", + "RE_ENTER_PASSPHRASE": "重新输入您的密码", + "REMOVE_WALLET": "移除钱包", + "REMOVE_WALLET_TEXT": "您的钱包将被删除。确保您已备份,您需要原始密码才能恢复", + "REMOVE_WATCH_ONLY_WALLET_TEXT": "钱包将被删除,您将无法再看到它", + "SCAN_QRCODE": "扫描二维码", + "SCAN_QRCODE_TEXT": "使用二维码导入您的地址或密码,只需指向并扫描即可", + "SECOND_BIP38_SEED": "第二个BIP38种子", + "SECOND_PASSPHRASE": "第二个密码", + "SECOND_WIF": "第二个WIF", + "SECRET_PASSPHRASE": "秘密密码", + "SECRET_PASSPHRASE_KEEP_SAFE": "秘密密码短语 (保持安全)", + "SEED": "种子", + "TOP_WALLETS": "富豪榜", + "TOTAL_BALANCE": "全部余额", + "USERNAME": "用户名", + "VALID_ADDRESS": "有效的地址", + "VALID_PASSPHRASE": "有效的密码", + "WALLETS": "钱包", + "WIF": "WIF" + }, + "WATCH_ONLY": "仅限观看", + "WEEK_DAY": { + "FRIDAY": "星期五", + "MONDAY": "星期一", + "SATURDAY": "星期六", + "SUNDAY": "星期日", + "THURSDAY": "星期四", + "TUESDAY": "星期二", + "WEDNESDAY": "星期三" + }, + "WORD": "文字", + "YES": "是" } diff --git a/src/main.ts b/src/main.ts index ef0468206..33d4d60d8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,4 +12,4 @@ if (environment.production) { platformBrowserDynamic() .bootstrapModule(AppModule) - .catch(err => console.log(err)); + .catch((err) => console.log(err)); diff --git a/src/polyfills.ts b/src/polyfills.ts index 689723135..b63401053 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -69,6 +69,6 @@ import "zone.js/dist/zone"; // Included with Angular CLI. // @ts-ignore // tslint:disable-next-line: only-arrow-functions -window.__importDefault = function(mod) { +window.__importDefault = function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; diff --git a/test/helpers.ts b/test/helpers.ts index 9ededb0dc..b8f622483 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -9,4 +9,4 @@ export const removeLogs = () => { }; export const sleep = (ms: number) => - new Promise(resolve => setTimeout(resolve, ms)); + new Promise((resolve) => setTimeout(resolve, ms)); diff --git a/test/mocks.ts b/test/mocks.ts index ada3c5fa9..0395e13a6 100644 --- a/test/mocks.ts +++ b/test/mocks.ts @@ -39,7 +39,7 @@ export class QRScannerMock extends QRScanner { } scan(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.next(""); observer.complete(); }); @@ -63,13 +63,13 @@ export class KeyboardMock extends Keyboard { close(): void {} disableScroll(disable: boolean): void {} onKeyboardShow(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.next(""); observer.complete(); }); } onKeyboardHide(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.next(""); observer.complete(); }); @@ -81,19 +81,19 @@ export class NetworkMock extends Network { type = "cellular"; downlinkMax: string; onchange(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.next(""); observer.complete(); }); } onDisconnect(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.next(""); observer.complete(); }); } onConnect(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.next(""); observer.complete(); }); @@ -125,7 +125,7 @@ export class ScreenOrientationMock extends ScreenOrientation { ANY: string; }; onChange(): Observable { - return new Observable(observer => { + return new Observable((observer) => { observer.complete(); }); } From edbcb2cd4f62113929fffa3cf631ad02f7176d91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 27 Mar 2020 10:26:47 -0300 Subject: [PATCH 42/46] feat: developer mode (#544) * feat: add dev mode * fix: toast message * test: add viewer-log component and modal specs --- package-lock.json | 181 +++++++++++++++++- package.json | 3 + src/app/app.component.ts | 3 + src/app/app.module.ts | 5 +- src/app/components/pin-code/pin-code.ts | 3 + .../viewer-log/viewer-log.component.html | 13 ++ .../viewer-log/viewer-log.component.module.ts | 13 ++ .../viewer-log/viewer-log.component.spec.ts | 41 ++++ .../viewer-log/viewer-log.component.ts | 18 ++ .../viewer-log/viewer-log.modal.html | 23 +++ .../viewer-log/viewer-log.modal.module.ts | 14 ++ .../viewer-log/viewer-log.modal.spec.ts | 86 +++++++++ .../components/viewer-log/viewer-log.modal.ts | 45 +++++ .../viewer-log/viewer-log.stories.ts | 37 ++++ src/app/models/settings.ts | 2 + src/app/pages/settings/settings.html | 17 +- src/app/pages/settings/settings.module.ts | 2 + src/app/pages/settings/settings.ts | 33 +++- .../transaction-send/transaction-send.ts | 16 +- .../error-handler/error-handler.service.ts | 22 +++ src/app/services/logger/logger.service.ts | 41 ++++ src/app/services/toast/toast.ts | 8 - src/assets/i18n/en.json | 7 +- 23 files changed, 611 insertions(+), 22 deletions(-) create mode 100644 src/app/components/viewer-log/viewer-log.component.html create mode 100644 src/app/components/viewer-log/viewer-log.component.module.ts create mode 100644 src/app/components/viewer-log/viewer-log.component.spec.ts create mode 100644 src/app/components/viewer-log/viewer-log.component.ts create mode 100644 src/app/components/viewer-log/viewer-log.modal.html create mode 100644 src/app/components/viewer-log/viewer-log.modal.module.ts create mode 100644 src/app/components/viewer-log/viewer-log.modal.spec.ts create mode 100644 src/app/components/viewer-log/viewer-log.modal.ts create mode 100644 src/app/components/viewer-log/viewer-log.stories.ts create mode 100644 src/app/services/error-handler/error-handler.service.ts create mode 100644 src/app/services/logger/logger.service.ts diff --git a/package-lock.json b/package-lock.json index 8422836cb..e2009afe6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5266,6 +5266,23 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/pino": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@types/pino/-/pino-5.17.0.tgz", + "integrity": "sha512-L5DBGFBRY4DKc7ufjZqV4J61ji9FSn4zKvQ5CUBbWi0gE0uOSNwDBpj1t7VwRwdmrpG3QlFxAeXgpViGUOS5Bg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/pino-std-serializers": "*", + "@types/sonic-boom": "*" + } + }, + "@types/pino-std-serializers": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-2.4.0.tgz", + "integrity": "sha512-eAdu+NW1IkCdmp85SnhyKha+OOREQMT9lXaoICQxa7bhSauRiLzu3WSNt9Mf2piuJvWeXF/G0hGWHr63xNpIRA==", + "dev": true + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -5462,6 +5479,15 @@ "@types/node": "*" } }, + "@types/sonic-boom": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@types/sonic-boom/-/sonic-boom-0.7.0.tgz", + "integrity": "sha512-AfqR0fZMoUXUNwusgXKxcE9DPlHNDHQp6nKYUd4PSRpLobF5CCevSpyTEBcVZreqaWKCnGBr9KI1fHMTttoB7A==", + "dev": true, + "requires": { + "@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", @@ -6189,6 +6215,24 @@ "sprintf-js": "~1.0.2" } }, + "args": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz", + "integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==", + "requires": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + } + } + }, "argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", @@ -6787,6 +6831,11 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, "autoprefixer": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", @@ -9560,6 +9609,11 @@ "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", "dev": true }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + }, "dayjs": { "version": "1.8.23", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.23.tgz", @@ -11118,6 +11172,16 @@ "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" }, + "fast-redact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.0.0.tgz", + "integrity": "sha512-zxpkULI9W9MNTK2sJ3BpPQrTEXFNESd2X6O1tXMFpK/XM0G5c5Rll2EVYZH2TqI3xRGK/VaJ+eEOt7pnENJpeA==" + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, "fast-sort": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-1.6.0.tgz", @@ -11421,6 +11485,11 @@ } } }, + "flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "flatted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", @@ -13630,6 +13699,16 @@ } } }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + }, + "joycon": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz", + "integrity": "sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ==" + }, "jquery": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", @@ -13983,6 +14062,11 @@ "pify": "^4.0.1" } }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -15251,6 +15335,11 @@ "run-queue": "^1.0.3" } }, + "mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -16688,6 +16777,54 @@ "pinkie": "^2.0.0" } }, + "pino": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.17.0.tgz", + "integrity": "sha512-LqrqmRcJz8etUjyV0ddqB6OTUutCgQULPFg2b4dtijRHUsucaAdBgSUW58vY6RFSX+NT8963F+q0tM6lNwGShA==", + "requires": { + "fast-redact": "^2.0.0", + "fast-safe-stringify": "^2.0.7", + "flatstr": "^1.0.12", + "pino-std-serializers": "^2.4.2", + "quick-format-unescaped": "^3.0.3", + "sonic-boom": "^0.7.5" + } + }, + "pino-pretty": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-3.6.1.tgz", + "integrity": "sha512-S3bal+Yd313OEaPijbf7V+jPxVaTaRO5RQX8S/Mwdtb/8+JOgo1KolDeJTfMDTU2/k6+MHvEbxv+T1ZRfGlnjA==", + "requires": { + "@hapi/bourne": "^1.3.2", + "args": "^5.0.1", + "chalk": "^2.4.2", + "dateformat": "^3.0.3", + "fast-safe-stringify": "^2.0.7", + "jmespath": "^0.15.0", + "joycon": "^2.2.5", + "pump": "^3.0.0", + "readable-stream": "^3.4.0", + "split2": "^3.1.1", + "strip-json-comments": "^3.0.1" + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "pino-std-serializers": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", + "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==" + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -18140,6 +18277,11 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, + "quick-format-unescaped": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", + "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==" + }, "ramda": { "version": "0.21.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", @@ -21828,6 +21970,15 @@ } } }, + "sonic-boom": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.7.tgz", + "integrity": "sha512-Ei5YOo5J64GKClHIL/5evJPgASXFVpfVYbJV9PILZQytTK6/LCwHvsZJW2Ig4p9FMC2OrBrMnXKgRN/OEoAWfg==", + "requires": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -22022,6 +22173,26 @@ "extend-shallow": "^3.0.0" } }, + "split2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.1.1.tgz", + "integrity": "sha512-emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q==", + "requires": { + "readable-stream": "^3.0.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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -22509,7 +22680,6 @@ "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" }, @@ -22517,8 +22687,7 @@ "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 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -22560,8 +22729,7 @@ "strip-json-comments": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" }, "stubs": { "version": "3.0.0", @@ -23984,8 +24152,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util-promisify": { "version": "2.1.0", diff --git a/package.json b/package.json index 666eb5c98..5a128c938 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,8 @@ "ng2-charts": "^2.3.0", "ngx-filter-pipe": "^2.1.2", "node-forge": "^0.9.1", + "pino": "^5.17.0", + "pino-pretty": "^3.6.1", "rxjs": "^6.5.4", "rxjs-compat": "^6.5.4", "semver": "^7.1.3", @@ -116,6 +118,7 @@ "@types/lodash": "^4.14.149", "@types/node": "^13.9.1", "@types/node-forge": "^0.9.2", + "@types/pino": "^5.17.0", "@types/semver": "^7.1.0", "@typescript-eslint/eslint-plugin": "^2.23.0", "@typescript-eslint/parser": "^2.23.0", diff --git a/src/app/app.component.ts b/src/app/app.component.ts index ee5e4a5c4..7956187c6 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -40,6 +40,7 @@ import { UserDataService } from "@/services/user-data/user-data.interface"; import { ArkApiProvider } from "./services/ark-api/ark-api"; import { EventBusProvider } from "./services/event-bus/event-bus"; +import { LoggerService } from "./services/logger/logger.service"; import { SettingsDataProvider } from "./services/settings-data/settings-data"; @Component({ @@ -86,12 +87,14 @@ export class AppComponent implements OnDestroy, OnInit { private alertCtrl: AlertController, private config: Config, private keyboard: Keyboard, + private loggerService: LoggerService, ) { this.initializeApp(); } initializeApp() { this.platform.ready().then(() => { + this.loggerService.info("App is ready"); this.initTranslation(); this.initConfig(); this.initTheme(); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 9b4338f0a..a1af03175 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,5 +1,5 @@ import { HttpClient, HttpClientModule } from "@angular/common/http"; -import { NgModule } from "@angular/core"; +import { ErrorHandler, NgModule } from "@angular/core"; import { BrowserModule, HammerModule } from "@angular/platform-browser"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { RouteReuseStrategy } from "@angular/router"; @@ -18,6 +18,7 @@ import { ChartsModule } from "ng2-charts"; import { AppRoutingModule } from "./app-routing.module"; import { AppComponent } from "./app.component"; +import { GlobalErrorHandlerService } from "./services/error-handler/error-handler.service"; import { UserDataServiceImpl } from "./services/user-data/user-data"; import { UserDataService } from "./services/user-data/user-data.interface"; @@ -52,8 +53,10 @@ export function createTranslateLoader(http: HttpClient) { SocialSharing, Network, ScreenOrientation, + GlobalErrorHandlerService, { provide: UserDataService, useClass: UserDataServiceImpl }, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, + { provide: ErrorHandler, useClass: GlobalErrorHandlerService }, ], bootstrap: [AppComponent], }) diff --git a/src/app/components/pin-code/pin-code.ts b/src/app/components/pin-code/pin-code.ts index 72a06b5a4..3505a99ba 100644 --- a/src/app/components/pin-code/pin-code.ts +++ b/src/app/components/pin-code/pin-code.ts @@ -11,6 +11,7 @@ import { EnterSecondPassphraseModal } from "@/app/modals/enter-second-passphrase import { PinCodeModal } from "@/app/modals/pin-code/pin-code"; import { Wallet, WalletKeys } from "@/models/model"; import { AuthProvider } from "@/services/auth/auth"; +import { LoggerService } from "@/services/logger/logger.service"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataService } from "@/services/user-data/user-data.interface"; @@ -39,6 +40,7 @@ export class PinCodeComponent { private navCtrl: NavController, private loadingCtrl: LoadingController, private translateService: TranslateService, + private loggerService: LoggerService, ) {} async open( @@ -227,6 +229,7 @@ export class PinCodeComponent { onSuccess: (keys: WalletKeys) => any, keys?: WalletKeys, ): void { + this.loggerService.info("PIN code authorized"); if (onSuccess) { onSuccess(keys); } diff --git a/src/app/components/viewer-log/viewer-log.component.html b/src/app/components/viewer-log/viewer-log.component.html new file mode 100644 index 000000000..829c31701 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.component.html @@ -0,0 +1,13 @@ + +
+ [{{ log.time }}] ({{ log.level }}) - {{ log.msg }} +
+
diff --git a/src/app/components/viewer-log/viewer-log.component.module.ts b/src/app/components/viewer-log/viewer-log.component.module.ts new file mode 100644 index 000000000..b5e46c62d --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.component.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from "@angular/core"; +import { IonicModule } from "@ionic/angular"; + +import { SharedModule } from "@/app/shared.module"; + +import { ViewerLogComponent } from "./viewer-log.component"; + +@NgModule({ + declarations: [ViewerLogComponent], + imports: [IonicModule, SharedModule], + exports: [ViewerLogComponent], +}) +export class ViewerLogComponentModule {} diff --git a/src/app/components/viewer-log/viewer-log.component.spec.ts b/src/app/components/viewer-log/viewer-log.component.spec.ts new file mode 100644 index 000000000..bc5d63505 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.component.spec.ts @@ -0,0 +1,41 @@ +import { IonicModule } from "@ionic/angular"; +import { byTestId, createHostFactory, SpectatorHost } from "@ngneat/spectator"; + +import { removeLogs, sleep } from "@@/test/helpers"; + +import { ViewerLogComponent } from "./viewer-log.component"; + +describe("Viewer Log Component", () => { + let spectator: SpectatorHost; + const createHost = createHostFactory({ + component: ViewerLogComponent, + imports: [IonicModule.forRoot()], + }); + + beforeAll(() => removeLogs()); + + it("should show logs", async () => { + spectator = createHost( + ``, + { + hostProps: { + logs: [ + { + time: 1585241630529, + level: 45, + msg: "Error", + }, + { + time: 1585241630536, + level: 50, + msg: "Fail", + }, + ], + }, + }, + ); + await sleep(100); + const firstLog = spectator.query(byTestId("c-viewer-log__item__text")); + expect(firstLog).toHaveText("Error"); + }); +}); diff --git a/src/app/components/viewer-log/viewer-log.component.ts b/src/app/components/viewer-log/viewer-log.component.ts new file mode 100644 index 000000000..6f92d3853 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.component.ts @@ -0,0 +1,18 @@ +import { Component, Input } from "@angular/core"; + +export interface Log { + time: number; + level: number; + msg: string; +} + +@Component({ + selector: "viewer-log", + templateUrl: "viewer-log.component.html", +}) +export class ViewerLogComponent { + @Input() + public logs: Log[]; + + constructor() {} +} diff --git a/src/app/components/viewer-log/viewer-log.modal.html b/src/app/components/viewer-log/viewer-log.modal.html new file mode 100644 index 000000000..9e79d5af8 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.modal.html @@ -0,0 +1,23 @@ + + + {{ 'VIEWER_LOG.LOG_VIEWER' | translate }} + + + + + + + + + + + + + + diff --git a/src/app/components/viewer-log/viewer-log.modal.module.ts b/src/app/components/viewer-log/viewer-log.modal.module.ts new file mode 100644 index 000000000..d977f69de --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.modal.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from "@angular/core"; +import { IonicModule } from "@ionic/angular"; + +import { SharedModule } from "@/app/shared.module"; + +import { ViewerLogComponentModule } from "./viewer-log.component.module"; +import { ViewerLogModal } from "./viewer-log.modal"; + +@NgModule({ + declarations: [ViewerLogModal], + imports: [IonicModule, SharedModule, ViewerLogComponentModule], + exports: [ViewerLogModal], +}) +export class ViewerLogModalModule {} diff --git a/src/app/components/viewer-log/viewer-log.modal.spec.ts b/src/app/components/viewer-log/viewer-log.modal.spec.ts new file mode 100644 index 000000000..d341bf542 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.modal.spec.ts @@ -0,0 +1,86 @@ +import { Clipboard } from "@ionic-native/clipboard/ngx"; +import { IonicModule, ModalController } from "@ionic/angular"; +import { + byTestId, + createHostFactory, + createSpyObject, + mockProvider, + SpectatorHost, +} from "@ngneat/spectator"; +import { TranslateModule } from "@ngx-translate/core"; + +import { removeLogs, sleep } from "@@/test/helpers"; +import { LoggerService } from "@/services/logger/logger.service"; +import { ToastProvider } from "@/services/toast/toast"; + +import { ViewerLogComponent } from "./viewer-log.component"; +import { ViewerLogModal } from "./viewer-log.modal"; + +describe("Viewer Modal Component", () => { + let spectator: SpectatorHost; + const clipboardProvider = { + provide: Clipboard, + useValue: createSpyObject(Clipboard), + }; + const createHost = createHostFactory({ + component: ViewerLogModal, + declarations: [ViewerLogComponent], + imports: [IonicModule.forRoot(), TranslateModule.forRoot()], + mocks: [ModalController, ToastProvider], + componentProviders: [clipboardProvider], + providers: [ + clipboardProvider, + mockProvider(LoggerService, { + logs: [ + { + time: 1585241630529, + level: 45, + msg: "Error", + }, + ], + }), + ], + }); + + beforeAll(() => removeLogs()); + + it("should show logs from logger service", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const firstLog = spectator.query(byTestId("c-viewer-log__item__text")); + expect(firstLog).toHaveText("Error"); + }); + + it("should export to json", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const exportButton = spectator.query( + byTestId("m-viewer-log__buttons__export"), + ); + await sleep(100); + const clipboard = spectator.get(Clipboard); + clipboard.copy.and.resolveTo(); + spectator.click(exportButton); + + expect(clipboard.copy).toHaveBeenCalledWith(jasmine.any(String)); + }); + + it("should dismiss", async () => { + spectator = createHost( + ``, + ); + await sleep(100); + const dismissButton = spectator.query( + byTestId("m-viewer-log__buttons__close"), + ); + await sleep(100); + const modalCtrl = spectator.get(ModalController); + modalCtrl.dismiss.and.resolveTo(); + spectator.click(dismissButton); + expect(modalCtrl.dismiss).toHaveBeenCalled(); + }); +}); diff --git a/src/app/components/viewer-log/viewer-log.modal.ts b/src/app/components/viewer-log/viewer-log.modal.ts new file mode 100644 index 000000000..20628ece0 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.modal.ts @@ -0,0 +1,45 @@ +import { Component, Input, OnInit } from "@angular/core"; +import { Clipboard } from "@ionic-native/clipboard/ngx"; +import { ModalController } from "@ionic/angular"; + +import { LoggerService } from "@/services/logger/logger.service"; +import { ToastProvider } from "@/services/toast/toast"; + +import { Log } from "./viewer-log.component"; + +@Component({ + selector: "viewer-log-modal", + templateUrl: "viewer-log.modal.html", + providers: [Clipboard], +}) +export class ViewerLogModal implements OnInit { + @Input() + public logs: Log[] = []; + + constructor( + private loggerService: LoggerService, + private modalCtrl: ModalController, + private clipboard: Clipboard, + private toastProvider: ToastProvider, + ) {} + + ngOnInit() { + if (!this.logs.length) { + this.logs = this.loggerService.logs; + } + } + + handleExport() { + const raw = JSON.stringify(this.logs, null, 1); + this.clipboard.copy(raw).then( + () => { + this.toastProvider.log("COPIED_CLIPBOARD"); + }, + (error) => this.toastProvider.error(error), + ); + } + + dismiss() { + this.modalCtrl.dismiss(); + } +} diff --git a/src/app/components/viewer-log/viewer-log.stories.ts b/src/app/components/viewer-log/viewer-log.stories.ts new file mode 100644 index 000000000..8869293d8 --- /dev/null +++ b/src/app/components/viewer-log/viewer-log.stories.ts @@ -0,0 +1,37 @@ +import { IonicModule } from "@ionic/angular"; +import { moduleMetadata, storiesOf } from "@storybook/angular"; + +import { SharedModule } from "@/app/shared.module"; + +import { ViewerLogComponentModule } from "./viewer-log.component.module"; +import { ViewerLogModal } from "./viewer-log.modal"; + +storiesOf("viewer-log", module) + .addDecorator( + moduleMetadata({ + declarations: [ViewerLogModal], + imports: [IonicModule, SharedModule, ViewerLogComponentModule], + }), + ) + .add("Default", () => ({ + props: { + logs: [ + { + time: 1585241630529, + level: 45, + msg: "Error", + }, + { + time: 1585241630536, + level: 50, + msg: "Fail", + }, + ], + }, + component: ViewerLogModal, + template: ` + + + + `, + })); diff --git a/src/app/models/settings.ts b/src/app/models/settings.ts index 1ee5b25c2..156e16870 100644 --- a/src/app/models/settings.ts +++ b/src/app/models/settings.ts @@ -4,6 +4,7 @@ export class UserSettings { public wordlistLanguage: string; public darkMode: boolean; public notification: boolean; + public devMode: boolean; constructor() {} @@ -14,6 +15,7 @@ export class UserSettings { settings.wordlistLanguage = "english"; settings.darkMode = false; settings.notification = false; + settings.devMode = false; return settings; } diff --git a/src/app/pages/settings/settings.html b/src/app/pages/settings/settings.html index 80b1c8ff1..b216c9b30 100644 --- a/src/app/pages/settings/settings.html +++ b/src/app/pages/settings/settings.html @@ -108,6 +108,17 @@ + + + + + {{ 'SETTINGS_PAGE.VIEW_LOG_REPORT' | translate + }} + + + @@ -122,7 +133,11 @@ > {{ 'SETTINGS_PAGE.PRIVACY_POLICY' | translate }} - + void; public appVersion: number = packageJson.version; + public versionClicksCount = 0; public currentWallet; @@ -48,6 +52,7 @@ export class SettingsPage implements OnInit, OnDestroy { private modalCtrl: ModalController, private inAppBrowser: InAppBrowser, private userDataService: UserDataService, + private toastProvider: ToastProvider, ) { this.availableOptions = this.settingsDataProvider.AVALIABLE_OPTIONS; this.currentWallet = this.userDataService.currentWallet; @@ -115,6 +120,32 @@ export class SettingsPage implements OnInit, OnDestroy { }); } + async presentLogReport() { + const viewerLogModal = await this.modalCtrl.create({ + component: ViewerLogModal, + }); + + await viewerLogModal.present(); + } + + handleVersionClicks() { + if (this.currentSettings.devMode) { + return; + } + + this.versionClicksCount += 1; + if (this.versionClicksCount === 5) { + this.enableDevMode(); + } + } + + enableDevMode() { + this.versionClicksCount = 0; + this.currentSettings.devMode = true; + this.onUpdate(); + this.toastProvider.show("SETTINGS_PAGE.YOU_ARE_DEVELOPER"); + } + onUpdate() { this.settingsDataProvider.save(this.currentSettings); } diff --git a/src/app/pages/transaction/transaction-send/transaction-send.ts b/src/app/pages/transaction/transaction-send/transaction-send.ts index 993db8c1c..d77ae3533 100644 --- a/src/app/pages/transaction/transaction-send/transaction-send.ts +++ b/src/app/pages/transaction/transaction-send/transaction-send.ts @@ -29,6 +29,7 @@ import { TruncateMiddlePipe } from "@/pipes/truncate-middle/truncate-middle"; import { AddressCheckResult } from "@/services/address-checker/address-check-result"; import { AddressCheckerProvider } from "@/services/address-checker/address-checker"; import { ArkApiProvider } from "@/services/ark-api/ark-api"; +import { LoggerService } from "@/services/logger/logger.service"; import { ToastProvider } from "@/services/toast/toast"; import { UserDataService } from "@/services/user-data/user-data.interface"; import { ArkUtility } from "@/utils/ark-utility"; @@ -86,6 +87,7 @@ export class TransactionSendPage implements OnInit, OnDestroy { private ngZone: NgZone, private route: ActivatedRoute, private routerOutlet: IonRouterOutlet, + private loggerService: LoggerService, ) { this.currentWallet = this.userDataService.currentWallet; this.currentNetwork = this.userDataService.currentNetwork; @@ -315,16 +317,24 @@ export class TransactionSendPage implements OnInit, OnDestroy { result.loader.dismiss(); const amount = this.sendForm.get("amount").value; - const data: TransactionSend = { + + const prepareData = { amount: new SafeBigNumber(amount) .times(constants.WALLET_UNIT_TO_SATOSHI) .toNumber(), vendorField: this.sendForm.get("vendorField").value, - passphrase: result.keys.key, - secondPassphrase: result.keys.secondKey, recipientId: this.sendForm.get("recipientId").value, fee: this.fee, }; + + const data: TransactionSend = { + ...prepareData, + passphrase: result.keys.key, + secondPassphrase: result.keys.secondKey, + }; + + this.loggerService.info(prepareData); + this.arkApiProvider.transactionBuilder .createTransaction(data) .subscribe( diff --git a/src/app/services/error-handler/error-handler.service.ts b/src/app/services/error-handler/error-handler.service.ts new file mode 100644 index 000000000..85c8fecb9 --- /dev/null +++ b/src/app/services/error-handler/error-handler.service.ts @@ -0,0 +1,22 @@ +import { ErrorHandler, Injectable, Injector } from "@angular/core"; +import { Router } from "@angular/router"; + +import { LoggerService } from "../logger/logger.service"; + +@Injectable() +export class GlobalErrorHandlerService extends ErrorHandler { + constructor( + private injector: Injector, + private loggerService: LoggerService, + ) { + super(); + } + + handleError(error: any) { + const router = this.injector.get(Router); + const url = router?.url; + + this.loggerService.error([url, error]); + super.handleError(error); + } +} diff --git a/src/app/services/logger/logger.service.ts b/src/app/services/logger/logger.service.ts new file mode 100644 index 000000000..33f03090b --- /dev/null +++ b/src/app/services/logger/logger.service.ts @@ -0,0 +1,41 @@ +import { Injectable } from "@angular/core"; +import pino, { Logger } from "pino"; +import { inspect } from "util"; + +@Injectable({ providedIn: "root" }) +export class LoggerService { + public logs: any[] = []; + + private logger: Logger; + + constructor() { + this.logger = pino({ + prettyPrint: true, + browser: { + serialize: true, + write: (o) => { + this.logs.push(o); + }, + }, + }); + } + + public error(message: any): void { + this.log("error", message); + } + + public warn(message: any): void { + this.log("warn", message); + } + + public info(message: any): void { + this.log("info", message); + } + + private log(level: string, message: any): void { + if (typeof message !== "string") { + message = inspect(message, { depth: 1 }); + } + this.logger[level](message); + } +} diff --git a/src/app/services/toast/toast.ts b/src/app/services/toast/toast.ts index 516828847..9c4e0e877 100644 --- a/src/app/services/toast/toast.ts +++ b/src/app/services/toast/toast.ts @@ -60,14 +60,6 @@ export class ToastProvider { this.show(message, this.typeEnum.LOG, hideDelay, position); } - debug( - message: string | TranslatableObject, - hideDelay?: number, - position?: string, - ): void { - this.show(message, this.typeEnum.DEBUG, hideDelay, position); - } - show( messageOrObj: string | TranslatableObject, type?: number, diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 9f246c692..c84b959e5 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1,4 +1,7 @@ { + "VIEWER_LOG": { + "LOG_VIEWER": "Log Viewer" + }, "API": { "BALANCE_TOO_LOW": "Balance too low for transaction", "BALANCE_TOO_LOW_DETAIL": "Not enough {{ token }} in your wallet! The transaction costs are: {{ totalAmount }} ({{ amount }} + {{ fee }} fee). However your wallet balance is only {{ balance }}!", @@ -210,7 +213,9 @@ "SETTINGS": "Settings", "VERSION": "Version", "WALLET_BACKUP": "Wallet Backup", - "WORDLIST_LANGUAGE": "Passphrase language" + "WORDLIST_LANGUAGE": "Passphrase language", + "VIEW_LOG_REPORT": "View log report", + "YOU_ARE_DEVELOPER": "You are now a developer!" }, "SHOW_ADVANCED": "Show Advanced", "SKIP": "Skip", From 7ce1b0ce85e24ae55c627b5eed95caa4623eb362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 27 Mar 2020 10:50:47 -0300 Subject: [PATCH 43/46] fix: passphrase confirmation style tweaks (#545) --- .../passphrase-input/passphrase-input.html | 6 +++--- .../enter-second-passphrase.html | 18 ++++++++++-------- .../passphrase-word-tester.html | 10 +++++++--- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/app/components/passphrase-input/passphrase-input.html b/src/app/components/passphrase-input/passphrase-input.html index 223ba5176..2aaff98e7 100644 --- a/src/app/components/passphrase-input/passphrase-input.html +++ b/src/app/components/passphrase-input/passphrase-input.html @@ -34,18 +34,18 @@ diff --git a/src/app/modals/enter-second-passphrase/enter-second-passphrase.html b/src/app/modals/enter-second-passphrase/enter-second-passphrase.html index 2f1c050a2..197e968f7 100644 --- a/src/app/modals/enter-second-passphrase/enter-second-passphrase.html +++ b/src/app/modals/enter-second-passphrase/enter-second-passphrase.html @@ -11,24 +11,26 @@ - +
- {{ 'WALLETS_PAGE.ENTER_SECRET_PASSPHRASE' | translate - }} + + {{ 'WALLETS_PAGE.ENTER_SECRET_PASSPHRASE' | translate }} + - + > + +
diff --git a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html index 3fddf3e1c..651ed9162 100644 --- a/src/app/modals/passphrase-word-tester/passphrase-word-tester.html +++ b/src/app/modals/passphrase-word-tester/passphrase-word-tester.html @@ -11,9 +11,13 @@ - -

{{ 'PASSPHRASE_TEST.INFO' | translate }}

- + +

{{ 'PASSPHRASE_TEST.INFO' | translate }}

+

{{ 'PASSPHRASE_TEST.DEVNET_WORDS_NOTICE' | translate }}

From fe95cdba7b63a836ba60f39bd36de979c040d649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BAcio=20Rubens?= <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 27 Mar 2020 13:39:54 -0300 Subject: [PATCH 44/46] fix: back button in the wallet dashboard screen (#547) --- src/app/app.component.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 7956187c6..a8b6fec49 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -193,6 +193,8 @@ export class AppComponent implements OnDestroy, OnInit { this.showConfirmation(this.signOutText).then(() => { this.logout(); }); + } else if (path.startsWith("/wallets/dashboard")) { + this.navController.navigateRoot("/wallets"); } } }); From 17e46b22f9c952d8ebb34a8c00502356779e8915 Mon Sep 17 00:00:00 2001 From: Lucio Rubens <4539235+luciorubeens@users.noreply.github.com> Date: Fri, 27 Mar 2020 13:56:42 -0300 Subject: [PATCH 45/46] fix: import passphrase screen style --- .../wallet-import-manual.html | 44 ++++++++++--------- .../wallet-import-manual.scss | 6 +++ 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html index 12fdbffe4..c027f96ff 100644 --- a/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html +++ b/src/app/pages/wallet/wallet-import-manual/wallet-import-manual.html @@ -53,6 +53,7 @@ slot="end" (click)="showHidePassphrase()" style="height: 100%;" + class="ml-2" >

- {{ (useAddress ? 'WALLETS_PAGE.VALID_ADDRESS' : - 'WALLETS_PAGE.VALID_PASSPHRASE') | translate }} + 'WALLETS_PAGE.VALID_PASSPHRASE') | translate }} +

- {{ 'WALLETS_PAGE.INVALID_WORD_NUMBER' | translate }} - + {{ 'WALLETS_PAGE.INVALID_MNEMONIC' | translate }} + {{ 'WALLETS_PAGE.INVALID_MNEMONIC' | translate }} +

- {{ 'WALLETS_PAGE.INVALID_ADDRESS' | translate }} - +

- {{ 'WALLETS_PAGE.CUSTOM_PASSPHRASE' | translate | - translateCut:0 }} + + {{ 'WALLETS_PAGE.CUSTOM_PASSPHRASE' | translate | translateCut:0 + }} {{ 'WALLETS_PAGE.CUSTOM_PASSPHRASE' | translate | - translateCut:1 }} + translateCut:1 }} + {{ 'WALLETS_PAGE.CUSTOM_PASSPHRASE' | translate | translateCut:2 - }} + }} + Date: Fri, 27 Mar 2020 14:45:19 -0300 Subject: [PATCH 46/46] chore: bump version to 1.8.0 --- config.xml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config.xml b/config.xml index 33a978bf9..b12136b19 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + Ark Mobile ARK Ark Ecosystem diff --git a/package.json b/package.json index 5a128c938..e50c34e5d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ark-mobile", - "version": "1.7.1", + "version": "1.8.0", "author": "Ark Ecosystem ", "homepage": "https://github.com/ArkEcosystem/mobile-wallet#readme", "scripts": {