From 51573d0dfc2b31d01511bdeb31da77cd0cead6a2 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Fri, 7 Jun 2019 15:12:53 +0500 Subject: [PATCH 001/137] DEV-722 Handle email sorting at backend. --- .../mail-folder/generic-folder/generic-folder.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts index f20d39514..355ec9f50 100644 --- a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts +++ b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts @@ -71,7 +71,6 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { this.showProgress = !mailState.loaded || mailState.inProgress; if (this.fetchMails) { this.MAX_EMAIL_PAGE_LIMIT = mailState.total_mail_count; - this.mails = this.sharedService.sortByDate(mailState.mails, 'created_at'); } }); From 5ed123bef3bd75fd216d28cb46737c05835589b7 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Fri, 7 Jun 2019 15:31:15 +0500 Subject: [PATCH 002/137] DEV-722 fix mail sorting issues --- .../mail-folder/generic-folder/generic-folder.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts index 355ec9f50..5933cca60 100644 --- a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts +++ b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts @@ -71,6 +71,7 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { this.showProgress = !mailState.loaded || mailState.inProgress; if (this.fetchMails) { this.MAX_EMAIL_PAGE_LIMIT = mailState.total_mail_count; + this.mails = [...mailState.mails]; } }); From 70d32e8fd6b1ba848f3287477d228f74d43553e1 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Fri, 7 Jun 2019 16:44:13 +0500 Subject: [PATCH 003/137] DEV-720 Fix sent emails sender display empty issue --- src/app/store/reducers/mail.reducers.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/app/store/reducers/mail.reducers.ts b/src/app/store/reducers/mail.reducers.ts index 966fbffd8..616072982 100755 --- a/src/app/store/reducers/mail.reducers.ts +++ b/src/app/store/reducers/mail.reducers.ts @@ -235,7 +235,12 @@ export function reducer( } }); if (newEntry && state.currentFolder === action.payload.folder) { - state.mails = [...state.mails, action.payload]; + const mail = action.payload; + mail.receiver_list = mail.receiver_display.map((item: EmailDisplay) => item.name).join(', '); + mail.thread_count = mail.children_count + ((action.payload.folder !== MailFolderType.TRASH + || (action.payload.folder === MailFolderType.TRASH && mail.folder === MailFolderType.TRASH)) ? 1 : 0); + + state.mails = [mail, ...state.mails]; } return { ...state, mails: [...state.mails], noUnreadCountChange: true }; } From f520f8f7cc28426da540cfa9228bfbbef751f1ad Mon Sep 17 00:00:00 2001 From: Ahsin Siddique Date: Fri, 7 Jun 2019 18:52:43 +0500 Subject: [PATCH 004/137] add translations tags to home-page, update en and fr translations. --- src/app/app.component.html | 2 +- .../home-features.component.html | 28 +++++++++---------- .../home-welcome/home-welcome.component.html | 2 +- src/assets/i18n/en.json | 15 +++++++--- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index 5a79dec1e..7169a2645 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -21,6 +21,6 @@ - Help + Help \ No newline at end of file diff --git a/src/app/home/home-features/home-features.component.html b/src/app/home/home-features/home-features.component.html index 9d5351688..83b277920 100644 --- a/src/app/home/home-features/home-features.component.html +++ b/src/app/home/home-features/home-features.component.html @@ -10,11 +10,9 @@ Lock Icon -
Encrypted
-

- We use 4096 bit encryption. - This protects users from current cryptography cracking techniques and future - hypothetical attacks. +

Encrypted
+

+ We use 4096 bit encryption. This protects users from current cryptography cracking techniques and future hypothetical attacks.

@@ -26,12 +24,12 @@ Documents Icon -
100% Anonymous
+
100% Anonymous

We never track your IP address, keep logs on your usage or record any identifying information at any time. We prove this by making our code readily available -
(view code) +
(view code)

@@ -43,12 +41,13 @@ Sheild Icon -
World's Strongest Legal Protection
+
World's Strongest Legal Protection

+ Iceland has the world’s strongest data privacy laws, so by using our Icelandic servers, your data has the strongest legal protection in the world. - Drop your Swiss data plans now
- (read more) + Drop your Swiss data plans now

+ (read more)

@@ -60,10 +59,11 @@ Tower Icon -
4 Wall Protection
-

CTemplar’s exclusive 4 Wall Protection guarantees complete - wall-to-wall protection of your data -
(read more)

+
4 Wall Protection
+

+ CTemplar’s exclusive 4 Wall Protection guarantees complete + wall-to-wall protection of your data +
(read more)

diff --git a/src/app/home/home-welcome/home-welcome.component.html b/src/app/home/home-welcome/home-welcome.component.html index 09271e8e7..b085268be 100644 --- a/src/app/home/home-welcome/home-welcome.component.html +++ b/src/app/home/home-welcome/home-welcome.component.html @@ -2,7 +2,7 @@
-

+

Armored Email
Anonymous
Encrypted diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 74e1abb3e..e0997fbfa 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -235,16 +235,23 @@ "signup": "Sign up" }, "home_page": { + "title": "Armored Email
Anonymous
Encrypted", "signup_for_free": "Sign up for free", "latest_from_our_blog": "Latest From Our Blog", "related_post": "Related Post", "read_more_from_our_blog": "Read more from our blog" }, "home_feature": { - "end_to_end_PKI_encryption": "4096 bit end-to-end encryption keeps your private information safe from governments, corporations, and hackers-for-hire.", - "safely_send_your_financial": "Securely send your financial records, contracts, lab results, investigative journalism and more, even to non-CTemplar email accounts, with anonymous email signup, no IP logging, and unmatched password security.", - "iceland_based_server": "Iceland has the world’s strongest data privacy laws, so by using our Icelandic servers, your data has the strongest legal protection in the world.", - "easy_to_use_responsive": "CTemplar’s exclusive 4 Wall Watch guarantees complete wall-to-wall protection of your data.", + "encrypted": "Encrypted", + "anonymous": "Anonymous", + "view_code": "view code", + "legal_protection": "World's Strongest Legal Protection", + "read_more": "read more", + "4_Wall_Protection": "4 Wall Protection", + "end_to_end_PKI_encryption": "We use 4096 bit encryption. This protects users from current cryptography cracking techniques and future hypothetical attacks.", + "track_your_ip": "We never track your IP address, keep logs on your usage or record any identifying information at any time. We prove this by making our code readily available ", + "iceland_based_server": "Iceland has the world’s strongest data privacy laws, so by using our Icelandic servers,your data has the strongest legal protection in the world.Drop your Swiss data plans now", + "exclusive_4_wall": "CTemplar’s exclusive 4 Wall Protection guarantees complete wall-to-wall protection of your data.", "learn_more_about_ctempler": "Learn more about the security features of CTemplar" }, "footer": { From a543f6658f6994521c24ef43bf605c4bdf0369f4 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 15:00:13 +0500 Subject: [PATCH 005/137] Update to angular version 8 --- package-lock.json | 4270 +++++++++++++-------------------- package.json | 35 +- src/app/app-routing.module.ts | 2 +- src/polyfills.ts | 21 +- tsconfig.json | 4 +- tslint.json | 8 +- 6 files changed, 1756 insertions(+), 2584 deletions(-) diff --git a/package-lock.json b/package-lock.json index beeeb6d7d..ae17cb580 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,19 +20,19 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.0.tgz", - "integrity": "sha512-oDBrWlfKh/0t2ag4T8gz9xzPMItxfctinlsHxhw7dPQ+etq1mIcWgQkiKiDrz4l46YiGipBRlC55j+6f37omAA==", + "version": "0.800.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.2.tgz", + "integrity": "sha512-251GOQwI3254AtnGWZoHmjOMFcz7h6M3fPmRHpYuuhRPIwZnQCKaszYI7gaP9zR7uArLUwsuPo+YYz8lb6Giwg==", "dev": true, "requires": { - "@angular-devkit/core": "7.3.0", - "rxjs": "6.3.3" + "@angular-devkit/core": "8.0.2", + "rxjs": "6.4.0" }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -41,59 +41,80 @@ } }, "@angular-devkit/build-angular": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.13.0.tgz", - "integrity": "sha512-JjoSXbmwOsuDJxngyChr6aOSZ2qsrvSL1MHwqgXhZswmC/KghBF0aZ7y8Wzr27zDCQ174Axts7+IAk6b+aWIqw==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.13.0", - "@angular-devkit/build-optimizer": "0.13.0", - "@angular-devkit/build-webpack": "0.13.0", - "@angular-devkit/core": "7.3.0", - "@ngtools/webpack": "7.3.0", - "ajv": "6.7.0", - "autoprefixer": "9.4.6", + "version": "0.800.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.800.2.tgz", + "integrity": "sha512-RlYPEp5FVKosgzWhbI7llM3lGIxAYuCwEPloeUL4XaDasNe2zmLNUlYDVTrF7GpZRoAgiIejmT0HvvKfEuZNZQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.2", + "@angular-devkit/build-optimizer": "0.800.2", + "@angular-devkit/build-webpack": "0.800.2", + "@angular-devkit/core": "8.0.2", + "@ngtools/webpack": "8.0.2", + "ajv": "6.10.0", + "autoprefixer": "9.5.1", + "browserslist": "4.5.5", + "caniuse-api": "3.0.0", "circular-dependency-plugin": "5.0.2", "clean-css": "4.2.1", - "copy-webpack-plugin": "4.6.0", + "copy-webpack-plugin": "5.0.2", + "core-js": "3.0.1", "file-loader": "3.0.1", "glob": "7.1.3", - "istanbul": "0.4.5", "istanbul-instrumenter-loader": "3.0.1", - "karma-source-map-support": "1.3.0", + "karma-source-map-support": "1.4.0", "less": "3.9.0", "less-loader": "4.1.0", - "license-webpack-plugin": "2.1.0", + "license-webpack-plugin": "2.1.1", "loader-utils": "1.2.3", - "mini-css-extract-plugin": "0.5.0", + "mini-css-extract-plugin": "0.6.0", "minimatch": "3.0.4", - "node-sass": "4.11.0", - "opn": "5.4.0", + "open": "6.2.0", "parse5": "4.0.0", "postcss": "7.0.14", "postcss-import": "12.0.1", "postcss-loader": "3.0.0", "raw-loader": "1.0.0", - "rxjs": "6.3.3", + "rxjs": "6.4.0", + "sass": "1.19.0", "sass-loader": "7.1.0", - "semver": "5.6.0", + "semver": "6.0.0", "source-map-loader": "0.2.4", - "source-map-support": "0.5.10", - "speed-measure-webpack-plugin": "1.3.0", + "source-map-support": "0.5.12", + "speed-measure-webpack-plugin": "1.3.1", "stats-webpack-plugin": "0.7.0", "style-loader": "0.23.1", "stylus": "0.54.5", "stylus-loader": "3.0.2", - "terser-webpack-plugin": "1.2.1", + "terser-webpack-plugin": "1.2.3", "tree-kill": "1.2.1", - "webpack": "4.29.0", - "webpack-dev-middleware": "3.5.1", - "webpack-dev-server": "3.1.14", + "webpack": "4.30.0", + "webpack-dev-middleware": "3.6.2", + "webpack-dev-server": "3.3.1", "webpack-merge": "4.2.1", "webpack-sources": "1.3.0", - "webpack-subresource-integrity": "1.1.0-rc.6" + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.1.0" }, "dependencies": { + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "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" + } + }, + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -101,25 +122,47 @@ "dev": true }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } } } }, "@angular-devkit/build-optimizer": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.13.0.tgz", - "integrity": "sha512-fhWuzbMVV/UNYE7rHSKutrWTCZle34N5cdtFz6qhK1k/wn7Vmtg9cFOwzx0SPdIlOEn576NB4DS/4UG3B5WCUQ==", + "version": "0.800.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.800.2.tgz", + "integrity": "sha512-A/lX7Fjfeh5PspGURV8fJeOsrIYM/7why7mC6v78zdxaErd4S18wUXJDfndjx3qiKyuq76Uu4cQcS7XfClpb8Q==", "dev": true, "requires": { "loader-utils": "1.2.3", "source-map": "0.5.6", - "typescript": "3.2.4", + "typescript": "3.4.4", "webpack-sources": "1.3.0" }, "dependencies": { @@ -128,24 +171,31 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", "dev": true + }, + "typescript": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", + "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.13.0.tgz", - "integrity": "sha512-idtFoSbQ3Y3WqXlDlU7oTPV9TIU1kjLqce0nK1Kst+t40GTc+Q4iUJJ7KsKE3nV6TPyrL1N/IvIF7+hSJnYm8A==", + "version": "0.800.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.800.2.tgz", + "integrity": "sha512-Bd/sazcriUTFQCGFDyUkjXSmpn8hRLIyLIXBLAn+5coH4Y4xNy8PXt+hnr6ffwu92h/WnyxKIJi44+5aoUBURA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.13.0", - "@angular-devkit/core": "7.3.0", - "rxjs": "6.3.3" + "@angular-devkit/architect": "0.800.2", + "@angular-devkit/core": "8.0.2", + "rxjs": "6.4.0", + "webpack-merge": "4.2.1" }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -154,22 +204,34 @@ } }, "@angular-devkit/core": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.0.tgz", - "integrity": "sha512-b0qtAUpgqLpWY8W6vWRv1aj6bXkZCP1rvywl8i8TbGMY67CWRcy5J3fNAMmjiZS+LJixFlIXYf4iOydglyJMfg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.2.tgz", + "integrity": "sha512-S2OPYe6Qu7qTS8Q2lzf4qNjXdbN/J2YVnd3wGauMI8Tih5tY/NzUW3h5ds09nRcjsdBDuT0qgf3IMlCZWIABvQ==", "dev": true, "requires": { - "ajv": "6.7.0", - "chokidar": "2.0.4", + "ajv": "6.10.0", "fast-json-stable-stringify": "2.0.0", - "rxjs": "6.3.3", + "magic-string": "0.25.2", + "rxjs": "6.4.0", "source-map": "0.7.3" }, "dependencies": { + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "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" + } + }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -178,19 +240,19 @@ } }, "@angular-devkit/schematics": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.3.0.tgz", - "integrity": "sha512-glOduymftH0LmJhITWgWUJK8QCDUltgTZ943/OyArIvLXTLL/8zCb+G6xL+3k33EQjwJicgQ3WIjonJmeTK/Ww==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.2.tgz", + "integrity": "sha512-v+g0MOPADJJ5QNNmojCyh2sw1GOzadlbHPdTFqZOm77b2Bi79dRm+yuYMuY6a2nUt7DIcioLRcOFwV8UctajRg==", "dev": true, "requires": { - "@angular-devkit/core": "7.3.0", - "rxjs": "6.3.3" + "@angular-devkit/core": "8.0.2", + "rxjs": "6.4.0" }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -199,9 +261,9 @@ } }, "@angular/animations": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.3.tgz", - "integrity": "sha512-5WoiDnVS2OhGgJ1oepFNF2UcfR4sJj97KRnTmLWQ0S4N4WpXX83CoOQVXvXwfotyb8uNtl4zRi2NuvN/MIuFuA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.0.0.tgz", + "integrity": "sha512-hggSRi83rmocLwzrKZtmFcqPdivKSJqp2yiYaiNmJ2yQWJ1JW/Lurypv9H347RWxmwCCwC2kV8embTGbOXIFDQ==", "requires": { "tslib": "^1.9.0" } @@ -216,50 +278,77 @@ } }, "@angular/cli": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.3.0.tgz", - "integrity": "sha512-6+NoHsW1MYG7GBHUg71zaWIFeIRps/SVksCmRFCpW0RXqErCQmzf0GZuDTZZ2Yo4RzU01150sVp1R8wEvEZfZQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.0.2.tgz", + "integrity": "sha512-xXSCwTKonC6nMqKPDlEFhXjKBu85jVB+KYo2tLU+RKtgFeIF/hTaUWQTvWXRwRsQAfBhB1cwe0oijdljOItTgw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.13.0", - "@angular-devkit/core": "7.3.0", - "@angular-devkit/schematics": "7.3.0", - "@schematics/angular": "7.3.0", - "@schematics/update": "0.13.0", + "@angular-devkit/architect": "0.800.2", + "@angular-devkit/core": "8.0.2", + "@angular-devkit/schematics": "8.0.2", + "@schematics/angular": "8.0.2", + "@schematics/update": "0.800.2", "@yarnpkg/lockfile": "1.1.0", + "debug": "^4.1.1", "ini": "1.3.5", - "inquirer": "6.2.1", + "inquirer": "6.3.1", "npm-package-arg": "6.1.0", - "opn": "5.4.0", - "pacote": "9.4.0", - "semver": "5.6.0", - "symbol-observable": "1.2.0" + "open": "6.2.0", + "pacote": "9.5.0", + "read-package-tree": "5.2.2", + "semver": "6.0.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "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 + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } } }, "@angular/common": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.3.tgz", - "integrity": "sha512-VZOTZdvkitaKEhkxL6daHxPcKqAFwNJm0U4NFB4LRP9KspsFTE60QFVB63o129PTIH9iOQ2D3HRKSRl4o78ZKg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.0.0.tgz", + "integrity": "sha512-iOAJZ0+1zTRHnHE/5G30+4Q66W1pfZkSkxZIXvgijZ+wtuNloYdWNy/IdZ/m7ayBI7A6FsYEhyMUoWz2HVEJNw==", "requires": { "tslib": "^1.9.0" } }, "@angular/compiler": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.3.tgz", - "integrity": "sha512-UM6n4MyZkR5+VVjlwhLH8IfqdWBkdFcF5at4ckJXOJ/gkIUq97irbis9pGj1b0TO7MAl8uhF4b68xe5lk8b49g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.0.0.tgz", + "integrity": "sha512-4rKsVFMNykF83tPL1VE1+j9kZ3cWHUsLOAB/VqmF64EcR/GsbjKog2v23rSso5kqUtPiVq/FWGYllW6qMdxtJA==", "requires": { "tslib": "^1.9.0" } }, "@angular/compiler-cli": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.2.3.tgz", - "integrity": "sha512-31hcfTrU2GW66cvvaS629dNVPfiUrUWPncI28optvmKHBaH0mFqkdYNgabuslsXZV5AeidKMUJvR7GITjtvkQA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.0.0.tgz", + "integrity": "sha512-Z0U0Ih8A7V3J1gq7AXnXbrGAD2ERmz7JbREJJRHDWiUNxIqGQiV3Odo1V8FL5n/cKvLwSYM2Ubvk10gb0+3njA==", "dev": true, "requires": { "canonical-path": "1.0.0", - "chokidar": "^1.4.2", + "chokidar": "^2.1.1", "convert-source-map": "^1.5.1", "dependency-graph": "^0.7.2", "magic-string": "^0.25.0", @@ -268,246 +357,53 @@ "shelljs": "^0.8.1", "source-map": "^0.6.1", "tslib": "^1.9.0", - "yargs": "9.0.1" + "yargs": "13.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", "dev": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", + "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": "^2.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, - "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": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "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 }, - "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=", + "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 }, - "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": { - "is-extglob": "^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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "path-type": { + "require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -515,102 +411,82 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "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": "^3.0.0" + "ansi-regex": "^4.1.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "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 - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true }, "yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", "dev": true, "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.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": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" } }, "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "@angular/core": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.3.tgz", - "integrity": "sha512-6Ql+sJJnrsxh8O0/IgIP1GgT4eLOHk+dlBs7zBbjstmLuhaQdY+awO9WKoQow+TiD1Go7FW1J3vZ2PTWXKxqjQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.0.0.tgz", + "integrity": "sha512-mrkP1PTzqCmZGLYll+TDyawLXHzi+FcRPqSuRxCmDMthUUE93SLXT2yISDkx9aMPtFKgFr6KfrIkKuCz16BP/g==", "requires": { "tslib": "^1.9.0" } }, "@angular/forms": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.3.tgz", - "integrity": "sha512-mZpyonfSmRwSvM6efvwFwkLJkK6wHQrm7X4OhVVu3s9i7BI253eLDY7WIRXFvoxJ/5jWIIarVnd/9UA7GINZGw==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/http": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-7.2.3.tgz", - "integrity": "sha512-wzvBKbO/TcSR3U8AQbsGftH8x1OdAgVGHlfXQPmZL1KjIDHrM1VpnkSvgqIt8coG+4OPfWcNklUCrTdEGwqMqw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.0.0.tgz", + "integrity": "sha512-T6XdG3mALWzvnrN3fA1hAmfwvraiF1SPMWNXgPk2riuMf8CFdoro+tQZ4eo1islHrTTw5QzmqN8JJALfhAG6bg==", "requires": { "tslib": "^1.9.0" } }, "@angular/language-service": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.2.3.tgz", - "integrity": "sha512-9FBVYbKaNx4Ap+Suz/2ZFBPca1voinZMOCN8LjXRYnfS2MHLQASQlTlK4qeZcomyRfy0FxWmO9R02S7YJ06cnw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.0.0.tgz", + "integrity": "sha512-vGk14oWroEo6ycO4cooznx57nn2sASmCQ/sdE8UVwySUKl940TsVzijgaGqapTepFof9sMqN77y2G15eRKQeAQ==", "dev": true }, "@angular/material": { @@ -622,25 +498,25 @@ } }, "@angular/platform-browser": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.3.tgz", - "integrity": "sha512-DH0Y2lgEgcrP1I/DUQB/krL7Ob7yL685fu4sRapW17SndTQa2pqSFMBVf+mN3FupTXp7nJHSvlIktzedIk04+g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.0.0.tgz", + "integrity": "sha512-fTD+pTMbq+On9Uv3VXiei2lfuX7GX31dngm/Y4yWTFeW6eXy0+7kkfflzpLOb0hykCZvcXzarqCuEBBYNLrrOg==", "requires": { "tslib": "^1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.3.tgz", - "integrity": "sha512-M8Kiz5FUhnFybJuk/mgOhBjVbRgKDC4bGWKWH9Z9SXBR2dS/FL3QOJsLIthQcWlHOzSoJdEoPBRhn0R4pyLBSw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.0.tgz", + "integrity": "sha512-dx7W7JoSFbsveexjZ/BPlsXbMDLWVLmRCo7IqLvibMrTbdpaaOCNJIXJk1X+f7JJrQ7SwlZaVkoLCMoDWw6fmA==", "requires": { "tslib": "^1.9.0" } }, "@angular/router": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.3.tgz", - "integrity": "sha512-SH7H2I9WTj1puei4m4g5n0/Cp28HS14q4r8lOgW0gLWuT6Ls7MqH/nDjOMiW924iRR6zjQQs7G+WbhL1jmZc2A==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.0.0.tgz", + "integrity": "sha512-DGUTb8qpndE5m716xh00GxuC8o7qamlqbUruGB+SQD6ynU7s5yLGxtKffxqb1BT63+YewpsVxc2Koruvb1qjDw==", "requires": { "tslib": "^1.9.0" } @@ -674,22 +550,22 @@ "integrity": "sha512-t+8K1IG8+MvFqLIuRSM+ZE1EkZIuUExJ0JsqZR4r4K3MRPRoGy1ZqlStBWYaYLumEToesiCOGxuJYQ4zyVwlZg==" }, "@ngtools/webpack": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.3.0.tgz", - "integrity": "sha512-U/By0Jlwy7nYwrGNtFirTg1aAsEHBL/9DhfFxPI0iu27FWiMttROuN6hmKbbnOmpbiYAVl5qTy3WXPXUIJjG1A==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.0.2.tgz", + "integrity": "sha512-5P0FHF4p5H/G9xGjOG9meDViXcdW3RPdJa2nX1gGpii3/dhFhmU4pxjKn1Bfs4x+PB9FQQvhSvGIBLNf+B4y5Q==", "dev": true, "requires": { - "@angular-devkit/core": "7.3.0", + "@angular-devkit/core": "8.0.2", "enhanced-resolve": "4.1.0", - "rxjs": "6.3.3", + "rxjs": "6.4.0", "tree-kill": "1.2.1", "webpack-sources": "1.3.0" }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -714,51 +590,65 @@ } }, "@schematics/angular": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.0.tgz", - "integrity": "sha512-fOjP/3Rz+Nqrgc+YVaiN88uhPX0FZgUjmMKgMp06lc3xmoc1ScGxoz8AF1fV50Zkvh0Etykzy1LTUczzEUJQqw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.0.2.tgz", + "integrity": "sha512-mN9qsoBVpbY1Q7BP8WaiHsyDv+kl5WrIHw/9OASLrGZcoVY7+oj2CfznVq0XRwvVjDtm6ZFor5ruxLF9dQUOSw==", "dev": true, "requires": { - "@angular-devkit/core": "7.3.0", - "@angular-devkit/schematics": "7.3.0", - "typescript": "3.2.2" - }, - "dependencies": { - "typescript": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", - "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==", - "dev": true - } + "@angular-devkit/core": "8.0.2", + "@angular-devkit/schematics": "8.0.2" } }, "@schematics/update": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.13.0.tgz", - "integrity": "sha512-HGpZdIL/0w46UyaxpnIAg6SBwzKfaRixHIEihmgJUqA0DG8GZUixRPr1L0YIWC1EZ81cQ+yWL85XhkKBYR+wQg==", + "version": "0.800.2", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.800.2.tgz", + "integrity": "sha512-HPjbzr/LfFLdMzi6zMQK8mPyLw+nt+m7OQsdoeOkFgHkHVfHrKQWcOGt4A0D6keDJ6K2g7W5CsqFR6/GMac7Mg==", "dev": true, "requires": { - "@angular-devkit/core": "7.3.0", - "@angular-devkit/schematics": "7.3.0", + "@angular-devkit/core": "8.0.2", + "@angular-devkit/schematics": "8.0.2", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", - "pacote": "9.4.0", - "rxjs": "6.3.3", - "semver": "5.6.0", + "pacote": "9.5.0", + "rxjs": "6.4.0", + "semver": "6.0.0", "semver-intersect": "1.4.0" }, "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==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "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/grecaptcha": { "version": "2.0.36", "resolved": "https://registry.npmjs.org/@types/grecaptcha/-/grecaptcha-2.0.36.tgz", @@ -780,6 +670,12 @@ "@types/jasmine": "*" } }, + "@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": "6.0.118", "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.118.tgz", @@ -836,175 +732,179 @@ } }, "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "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": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "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.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "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.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "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 }, "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "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": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "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.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true + "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": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "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.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "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": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" } }, "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "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" } }, "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", "dev": true, "requires": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "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.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "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": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@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" } }, "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "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": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@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" } }, "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "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.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" } }, "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "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, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@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" } }, "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "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.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@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" } }, "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "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": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" } }, "@xtuc/ieee754": { @@ -1014,9 +914,9 @@ "dev": true }, "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "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": { @@ -1035,12 +935,6 @@ "through": ">=2.2.7 <3" } }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, "accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", @@ -1052,9 +946,9 @@ } }, "acorn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.6.tgz", - "integrity": "sha512-5M3G/A4uBSMIlfJ+h9W125vJvPFH/zirISsW5qfxF5YzEvXJCtolLoQvM5yZft0DvMcUrPGKPOlgEu55I6iUtA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", "dev": true }, "acorn-dynamic-import": { @@ -1127,9 +1021,9 @@ "dev": true }, "ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", "dev": true }, "amdefine": { @@ -1182,9 +1076,9 @@ } }, "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, "ansi-escapes": { @@ -1225,9 +1119,9 @@ } }, "app-root-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", - "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "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": { @@ -1245,16 +1139,6 @@ "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": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1264,6 +1148,24 @@ "sprintf-js": "~1.0.2" } }, + "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" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + } + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -1282,13 +1184,6 @@ "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=", - "dev": true, - "optional": true - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -1338,8 +1233,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true + "dev": true }, "asmcrypto.js": { "version": "0.22.0", @@ -1366,11 +1260,12 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -1410,25 +1305,27 @@ "dev": true, "optional": true }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "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 }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true, - "optional": true - }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -1448,16 +1345,16 @@ "dev": true }, "autoprefixer": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.6.tgz", - "integrity": "sha512-Yp51mevbOEdxDUy5WjiKtpQaecqYq9OqZSL04rSoCiry7Tc5I9FEyo3bfxiTJc1DfHeKwSFCUYbBAiOQ2VGfiw==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", + "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", "dev": true, "requires": { - "browserslist": "^4.4.1", - "caniuse-lite": "^1.0.30000929", + "browserslist": "^4.5.4", + "caniuse-lite": "^1.0.30000957", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.13", + "postcss": "^7.0.14", "postcss-value-parser": "^3.3.1" } }, @@ -1495,6 +1392,15 @@ } } }, + "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-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -1808,16 +1714,6 @@ "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "optional": true, - "requires": { - "inherits": "~2.0.0" - } - }, "blocking-proxy": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.5.tgz", @@ -1875,6 +1771,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, + "optional": true, "requires": { "hoek": "2.x.x" } @@ -2000,14 +1897,14 @@ } }, "browserslist": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", - "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000929", - "electron-to-chromium": "^1.3.103", - "node-releases": "^1.1.3" + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" } }, "buffer": { @@ -2057,7 +1954,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", - "dev": true + "dev": true, + "optional": true }, "buffer-xor": { "version": "1.0.3", @@ -2115,24 +2013,42 @@ "dev": true }, "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "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.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } } }, "cache-base": { @@ -2159,27 +2075,27 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true, - "optional": true + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "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, - "optional": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, "caniuse-lite": { - "version": "1.0.30000933", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000933.tgz", - "integrity": "sha512-d3QXv7eFTU40DSedSP81dV/ajcGSKpT+GW+uhtWmLvQm9bPk0KK++7i1e2NSW/CXGZhWFt2mFbFtCJ5I5bMuVA==", + "version": "1.0.30000974", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", + "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", "dev": true }, "canonical-path": { @@ -2250,9 +2166,9 @@ "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "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, "requires": { "tslib": "^1.9.0" @@ -2336,14 +2252,31 @@ "dev": true }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "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": "^1.0.1", - "strip-ansi": "^3.0.1", + "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=", + "dev": true + }, + "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" + } + } } }, "clone": { @@ -2376,17 +2309,20 @@ "dev": true }, "codelyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.5.0.tgz", - "integrity": "sha512-oO6vCkjqsVrEsmh58oNlnJkRXuA30hF8cdNAQV9DytEalDwyOFRvHMnlKFzmOStNerOmPGZU9GAHnBo4tGvtiQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.1.0.tgz", + "integrity": "sha512-QiyY2/oDQnYx4mAVEDqr+z9MwrOto18tQFjExiuRChXCy0yvngS5fQpWIxvAGpbOmZFiR1PRTRLbEI71u10maA==", "dev": true, "requires": { - "app-root-path": "^2.1.0", - "css-selector-tokenizer": "^0.7.0", + "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.1" + "sprintf-js": "^1.1.2" }, "dependencies": { "source-map": { @@ -2452,14 +2388,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2485,37 +2413,37 @@ "dev": true }, "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", "dev": true, "requires": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.40.0 < 2" + }, + "dependencies": { + "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==", + "dev": true + } } }, "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.14", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" } }, - "compressjs": { - "version": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", - "from": "github:openpgpjs/compressjs", - "requires": { - "amdefine": "~1.0.0", - "commander": "~2.8.1" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2584,12 +2512,6 @@ "date-now": "^0.1.4" } }, - "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", @@ -2597,10 +2519,13 @@ "dev": true }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true + "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" + } }, "content-type": { "version": "1.0.4", @@ -2650,19 +2575,30 @@ "dev": true }, "copy-webpack-plugin": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw==", "dev": true, "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", + "cacache": "^11.3.1", + "find-cache-dir": "^2.0.0", + "glob-parent": "^3.1.0", "globby": "^7.1.1", "is-glob": "^4.0.0", "loader-utils": "^1.1.0", "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" + "normalize-path": "^3.0.0", + "p-limit": "^2.1.0", + "serialize-javascript": "^1.4.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "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 + } } }, "core-js": { @@ -2686,18 +2622,6 @@ "js-yaml": "^3.9.0", "parse-json": "^4.0.0", "require-from-string": "^2.0.1" - }, - "dependencies": { - "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" - } - } } }, "create-ecdh": { @@ -2738,13 +2662,15 @@ } }, "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "optional": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", "which": "^1.2.9" } }, @@ -2814,16 +2740,6 @@ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "optional": true, - "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", @@ -2836,6 +2752,12 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "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", @@ -2885,6 +2807,12 @@ "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", @@ -2911,15 +2839,16 @@ "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 + "dev": true, + "optional": true }, "default-gateway": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", - "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "dev": true, "requires": { - "execa": "^0.10.0", + "execa": "^1.0.0", "ip-regex": "^2.1.0" } }, @@ -2995,17 +2924,18 @@ } }, "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", "dev": true, "requires": { + "@types/glob": "^7.1.1", "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" + "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": { @@ -3028,6 +2958,30 @@ "dev": true } } + }, + "is-path-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", + "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } } } }, @@ -3037,12 +2991,6 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -3086,6 +3034,16 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "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" + } + }, "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -3169,9 +3127,9 @@ "optional": true }, "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "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", @@ -3197,9 +3155,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.111", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.111.tgz", - "integrity": "sha512-I2QjmmxWULp89fEHlFwRpKXSw4Y/Igo3u41py4MkzJTrgDOf/S4oq/IMuTUHze/5TTPpwem74oQiPMEgFtuDRA==", + "version": "1.3.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.152.tgz", + "integrity": "sha512-Ah10cGMWIXYD8aUTH2Y7lGRhaOFQLyWuxvXmCPCZCbUIGJ4swnNmT6P4aA8RTgUmNw9kmcDL6SoU8TZC4YuZGg==", "dev": true }, "elliptic": { @@ -3220,6 +3178,12 @@ "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.0.3.tgz", "integrity": "sha512-kUlSC06PVvvjlMRpNIl3kR1NRXLEe86VQ7N0bQeaCZb2g+InShCeHQp/JvyYNTugMnRN2NvJhHlc3q12MWbbpg==" }, + "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 + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -3392,6 +3356,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, + "optional": true, "requires": { "esprima": "^2.7.1", "estraverse": "^1.9.1", @@ -3413,9 +3378,9 @@ } }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "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", @@ -3434,7 +3399,8 @@ "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true + "dev": true, + "optional": true }, "esrecurse": { "version": "4.2.1", @@ -3457,7 +3423,8 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true + "dev": true, + "optional": true }, "esutils": { "version": "2.0.2", @@ -3502,33 +3469,18 @@ } }, "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "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": "^3.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" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } } }, "exit": { @@ -3622,100 +3574,184 @@ } } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "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" - } - } - } - }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "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.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.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "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": { + "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-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true + }, + "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": { + "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" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "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 + }, + "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": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "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==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "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 + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "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" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } } } }, @@ -3859,7 +3895,8 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "dev": true, + "optional": true }, "fastparse": { "version": "1.1.2", @@ -3908,12 +3945,6 @@ "dev": true, "optional": true }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", @@ -3948,48 +3979,62 @@ } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "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.2", - "statuses": "~1.4.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" + }, + "dependencies": { + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } } }, "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "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": "^1.0.0", - "pkg-dir": "^2.0.0" + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "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": "^2.0.0" + "locate-path": "^3.0.0" } }, "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, "follow-redirects": { @@ -4085,9 +4130,9 @@ } }, "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", "dev": true, "requires": { "minipass": "^2.2.1" @@ -4131,7 +4176,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4152,12 +4198,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": 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" @@ -4172,17 +4220,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4299,7 +4350,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4311,6 +4363,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4325,6 +4378,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4332,12 +4386,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": 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" @@ -4356,6 +4412,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4436,7 +4493,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4448,6 +4506,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4533,7 +4592,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4569,6 +4629,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4588,6 +4649,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4631,27 +4693,17 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", @@ -4699,32 +4751,6 @@ } } }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": 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" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "optional": true, - "requires": { - "globule": "^1.0.0" - } - }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -4757,17 +4783,14 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, "get-uri": { "version": "2.0.3", @@ -4844,42 +4867,6 @@ "path-is-absolute": "^1.0.0" } }, - "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": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "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": { - "is-glob": "^2.0.0" - } - }, - "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 - }, - "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": { - "is-extglob": "^1.0.0" - } - } - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -4919,18 +4906,14 @@ "ignore": "^3.3.5", "pify": "^3.0.0", "slash": "^1.0.0" - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dev": true, - "optional": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "graceful-fs": { @@ -4938,11 +4921,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, "handle-thing": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", @@ -5032,12 +5010,6 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "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 - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5127,7 +5099,8 @@ "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true + "dev": true, + "optional": true }, "homedir-polyfill": { "version": "1.0.1", @@ -5233,15 +5206,15 @@ } }, "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "dev": true, "requires": { - "http-proxy": "^1.16.2", + "http-proxy": "^1.17.0", "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" + "lodash": "^4.17.11", + "micromatch": "^3.1.10" } }, "http-signature": { @@ -5260,6 +5233,7 @@ "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", "dev": true, + "optional": true, "requires": { "httpreq": ">=0.4.22", "underscore": "~1.7.0" @@ -5269,7 +5243,8 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", - "dev": true + "dev": true, + "optional": true }, "https-browserify": { "version": "1.0.0", @@ -5381,60 +5356,6 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "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==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } } }, "imurmurhash": { @@ -5442,23 +5363,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true, - "optional": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "optional": true, - "requires": { - "repeating": "^2.0.0" - } - }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -5494,86 +5398,51 @@ "dev": true }, "inquirer": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", - "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^3.0.0", + "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rxjs": "^6.1.0", + "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "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=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "string-width": { - "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" - }, - "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" - } - } - } - }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "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.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", - "dev": true - } + "ansi-regex": "^4.1.0" } } } }, "internal-ip": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", - "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "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": "^2.6.0", - "ipaddr.js": "^1.5.2" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" } }, "interpret": { @@ -5592,9 +5461,9 @@ } }, "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "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 }, "ip": { @@ -5610,9 +5479,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "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==", "dev": true }, "is-accessor-descriptor": { @@ -5656,15 +5525,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^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", @@ -5710,21 +5570,6 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5747,13 +5592,10 @@ } }, "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" - } + "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 }, "is-glob": { "version": "4.0.0", @@ -5829,6 +5671,12 @@ "path-is-inside": "^1.0.1" } }, + "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", @@ -5838,18 +5686,6 @@ "isobject": "^3.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -5860,7 +5696,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true + "dev": true, + "optional": true }, "is-stream": { "version": "1.1.0", @@ -5894,89 +5731,37 @@ }, "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==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^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==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" } }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, "istanbul-api": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", @@ -6198,13 +5983,6 @@ "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", "dev": true }, - "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", - "dev": true, - "optional": true - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -6266,9 +6044,9 @@ "dev": true }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "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": { @@ -6384,9 +6162,9 @@ } }, "karma-source-map-support": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", - "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", + "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" @@ -6405,12 +6183,12 @@ "dev": true }, "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, "less": { @@ -6448,6 +6226,14 @@ "clone": "^2.1.1", "loader-utils": "^1.1.0", "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 + } } }, "levn": { @@ -6455,6 +6241,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, + "optional": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -6464,13 +6251,15 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY=", - "dev": true + "dev": true, + "optional": true }, "libmime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/libmime/-/libmime-3.0.0.tgz", "integrity": "sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY=", "dev": true, + "optional": true, "requires": { "iconv-lite": "0.4.15", "libbase64": "0.1.0", @@ -6481,7 +6270,8 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true + "dev": true, + "optional": true } } }, @@ -6489,39 +6279,19 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=", - "dev": true + "dev": true, + "optional": true }, "license-webpack-plugin": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.0.tgz", - "integrity": "sha512-vDiBeMWxjE9n6TabQ9J4FH8urFdsRK0Nvxn1cit9biCiR9aq1zBR0X2BlAkEiIG6qPamLeU0GzvIgLkrFc398A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz", + "integrity": "sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", "webpack-sources": "^1.2.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=", - "dev": true, - "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" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -6540,12 +6310,12 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "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": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, @@ -6555,13 +6325,6 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true, - "optional": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -6574,12 +6337,11 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true, - "optional": true + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true }, "lodash.tail": { "version": "4.1.1", @@ -6587,6 +6349,12 @@ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", "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 + }, "log4js": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.11.0.tgz", @@ -6808,9 +6576,9 @@ } }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.2.tgz", + "integrity": "sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==", "dev": true }, "loose-envify": { @@ -6822,17 +6590,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=", - "dev": true, - "optional": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -6844,12 +6601,12 @@ } }, "magic-string": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", - "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.1" + "sourcemap-codec": "^1.4.4" } }, "mailcomposer": { @@ -6904,12 +6661,13 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, "make-error": { @@ -6935,86 +6693,14 @@ "promise-retry": "^1.1.1", "socks-proxy-agent": "^4.0.0", "ssri": "^6.0.0" - }, - "dependencies": { - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "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.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - } - } - }, - "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" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "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" - } - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "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", @@ -7030,12 +6716,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -7045,12 +6725,6 @@ "object-visit": "^1.0.0" } }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -7069,13 +6743,13 @@ "dev": true }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "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": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, @@ -7089,25 +6763,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "optional": true, - "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" - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -7173,18 +6828,19 @@ } }, "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mini-css-extract-plugin": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", - "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", "dev": true, "requires": { "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" } @@ -7242,9 +6898,9 @@ } }, "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "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", @@ -7253,7 +6909,7 @@ "flush-write-stream": "^1.0.0", "from2": "^2.1.0", "parallel-transform": "^1.1.0", - "pump": "^2.0.1", + "pump": "^3.0.0", "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" @@ -7403,9 +7059,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "netmask": { @@ -7440,9 +7096,9 @@ } }, "ngx-chips": { - "version": "1.9.8", - "resolved": "https://registry.npmjs.org/ngx-chips/-/ngx-chips-1.9.8.tgz", - "integrity": "sha512-gU8hXByb0QcNLbDi5KuLsEgfuIoaKDDMHWdUPwtnY4gjGGEsg5afUo++raeKPHHc1igp/kYTghmI0xzOpMkqQg==", + "version": "2.0.0-beta.0", + "resolved": "https://registry.npmjs.org/ngx-chips/-/ngx-chips-2.0.0-beta.0.tgz", + "integrity": "sha512-TND8OAaD1FBt5RG0TS8vhDOpVIXakQSTucQKD8GDhaNSz+92ba2WAZA5snzI5exVs52hjfCdUTAjam6d/OO9Ug==", "requires": { "ng2-material-dropdown": "0.10.1", "tslib": "^1.9.0" @@ -7467,6 +7123,70 @@ "zone.js": "~0.8.26" }, "dependencies": { + "@angular/animations": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.15.tgz", + "integrity": "sha512-8oBt3HLgd2+kyJHUgsd7OzKCCss67t2sch15XNoIWlOLfxclqU+EfFE6t/vCzpT8/+lpZS6LU9ZrTnb+UBj5jg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/common": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.15.tgz", + "integrity": "sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.15.tgz", + "integrity": "sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/core": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.15.tgz", + "integrity": "sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz", + "integrity": "sha512-p0kcIQLtBBC1qeTA6M3nOuXf/k91E80FKquVM9zEsO2kDjI0oZJVfFYL2UMov5samlJOPN+t6lRHEIUa7ApPsw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.15.tgz", + "integrity": "sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz", + "integrity": "sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.15.tgz", + "integrity": "sha512-qAubRJRQanguUqJQ76J9GSZ4JFtoyhJKRmX5P23ANZJXpB6YLzF2fJmOGi+E6cV8F0tKBMEq1pjxFTisx0MXwQ==", + "requires": { + "tslib": "^1.9.0" + } + }, "rxjs": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", @@ -7474,6 +7194,11 @@ "requires": { "tslib": "^1.9.0" } + }, + "zone.js": { + "version": "0.8.29", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz", + "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" } } }, @@ -7543,36 +7268,6 @@ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", "dev": true }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "optional": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "optional": true - } - } - }, "node-libs-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", @@ -7604,100 +7299,42 @@ "vm-browserify": "0.0.4" }, "dependencies": { - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-localstorage": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz", - "integrity": "sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==", - "requires": { - "write-file-atomic": "^1.1.4" - } - }, - "node-releases": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.6.tgz", - "integrity": "sha512-lODUVHEIZutZx+TDdOk47qLik8FJMXzJ+WnyUGci1MTvTOyzZrz5eVPIIpc5Hb3NfHZGeGHeuwrRYVI1PEITWg==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } - }, - "node-sass": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", - "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", - "dev": true, - "optional": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.3.2", - "lodash.mergewith": "^4.6.0", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.10.0", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "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, - "optional": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, - "optional": 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" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^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, - "optional": true + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true } } }, + "node-localstorage": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz", + "integrity": "sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==", + "requires": { + "write-file-atomic": "^1.1.4" + } + }, + "node-releases": { + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", + "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, "nodemailer": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.7.2.tgz", @@ -7749,13 +7386,15 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=", - "dev": true + "dev": true, + "optional": true }, "nodemailer-shared": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", "dev": true, + "optional": true, "requires": { "nodemailer-fetch": "1.6.0" } @@ -7788,25 +7427,17 @@ "version": "0.1.10", "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U=", - "dev": true - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, - "requires": { - "abbrev": "1" - } + "optional": true }, "normalize-package-data": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.2.tgz", - "integrity": "sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw==", + "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", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -7826,10 +7457,21 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, + "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==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, "npm-bundled": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "dev": true }, "npm-package-arg": { @@ -7845,9 +7487,9 @@ } }, "npm-packlist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "dev": true, "requires": { "ignore-walk": "^3.0.1", @@ -7888,18 +7530,6 @@ "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" - } - }, "null-check": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", @@ -7976,27 +7606,6 @@ "isobject": "^3.0.0" } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -8022,9 +7631,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "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": { @@ -8043,6 +7652,23 @@ "dev": true, "requires": { "mimic-fn": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" } }, "openpgp": { @@ -8055,19 +7681,28 @@ "asn1.js": "^5.0.0", "bn.js": "^4.11.8", "buffer": "^5.0.8", - "compressjs": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", - "elliptic": "github:openpgpjs/elliptic#e187e706e11fa51bcd20e46e5119054be4e2a4a6", + "elliptic": "elliptic@github:openpgpjs/elliptic#e187e706e11fa51bcd20e46e5119054be4e2a4a6", "hash.js": "^1.1.3", "node-fetch": "^2.1.2", "node-localstorage": "~1.3.0", "pako": "^1.0.6", "rusha": "^0.8.12" + }, + "dependencies": { + "compressjs": { + "version": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", + "from": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", + "requires": { + "amdefine": "~1.0.0", + "commander": "~2.8.1" + } + } } }, "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "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" @@ -8102,6 +7737,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, + "optional": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.4", @@ -8139,13 +7775,14 @@ "dev": true }, "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "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, - "optional": true, "requires": { - "lcid": "^1.0.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, "os-tmpdir": { @@ -8177,39 +7814,39 @@ "dev": true }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "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": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "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 }, "pac-proxy-agent": { @@ -8263,9 +7900,9 @@ } }, "pacote": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.4.0.tgz", - "integrity": "sha512-WQ1KL/phGMkedYEQx9ODsjj7xvwLSpdFJJdEXrLyw5SILMxcTNt5DTxT2Z93fXuLFYJBlZJdnwdalrQdB/rX5w==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", "dev": true, "requires": { "bluebird": "^3.5.3", @@ -8297,37 +7934,6 @@ "which": "^1.3.1" }, "dependencies": { - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "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.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "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" - } - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -8337,58 +7943,6 @@ "yallist": "^3.0.2" } }, - "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" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "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" - } - }, - "tar": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "dev": 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" - } - }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", @@ -8419,9 +7973,9 @@ "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" }, "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -8445,42 +7999,14 @@ } } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "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 - }, - "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": { - "is-extglob": "^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=", + "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.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "parse-passwd": { @@ -8599,6 +8125,14 @@ "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": { @@ -8621,9 +8155,9 @@ "dev": true }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pinkie": { @@ -8642,12 +8176,12 @@ } }, "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "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": "^2.1.0" + "find-up": "^3.0.0" } }, "portfinder": { @@ -8659,6 +8193,14 @@ "async": "^1.5.2", "debug": "^2.2.0", "mkdirp": "0.5.x" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } } }, "posix-character-classes": { @@ -8730,12 +8272,13 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "dev": true, + "optional": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, "process": { @@ -8915,13 +8458,13 @@ } }, "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "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==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" + "ipaddr.js": "1.9.0" } }, "proxy-agent": { @@ -9000,9 +8543,9 @@ } }, "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "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", @@ -9018,6 +8561,18 @@ "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": { @@ -9044,6 +8599,17 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "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==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "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", @@ -9085,29 +8651,10 @@ "fast-diff": "1.1.2" } }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -9168,65 +8715,30 @@ } } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "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=", - "dev": true - } - } - }, - "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=", + "read-package-json": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz", + "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.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=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" } }, "readable-stream": { @@ -9244,6 +8756,18 @@ "util-deprecate": "~1.0.1" } }, + "readdir-scoped-modules": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz", + "integrity": "sha1-n6+jfShr5dksuuve4DDcm19AZ0c=", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, "readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -9264,17 +8788,6 @@ "resolve": "^1.1.6" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "optional": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, "redis": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", @@ -9319,15 +8832,6 @@ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -9474,10 +8978,13 @@ "dev": true }, "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } }, "resolve-cwd": { "version": "2.0.0", @@ -9565,9 +9072,9 @@ "integrity": "sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo=" }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", "requires": { "tslib": "^1.9.0" } @@ -9593,17 +9100,13 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "sass": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.19.0.tgz", + "integrity": "sha512-8kzKCgxCzh8/zEn3AuRwzLWVSSFj8omkiGwqdJdeOufjM+I88dXxu9LYJ/Gw4rRTHXesN0r1AixBuqM6yLQUJw==", "dev": true, - "optional": true, "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" + "chokidar": "^2.0.0" } }, "sass-loader": { @@ -9618,6 +9121,14 @@ "neo-async": "^2.5.0", "pify": "^3.0.0", "semver": "^5.5.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 + } } }, "saucelabs": { @@ -9675,29 +9186,6 @@ "ajv-keywords": "^3.1.0" } }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "optional": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -9761,9 +9249,9 @@ } }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { "debug": "2.6.9", @@ -9773,26 +9261,57 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "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": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "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 + }, + "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 + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true } } }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", "dev": true }, "serve-index": { @@ -9811,15 +9330,23 @@ } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "dependencies": { + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + } } }, "set-blocking": { @@ -9956,6 +9483,7 @@ "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", "dev": true, + "optional": true, "requires": { "httpntlm": "1.6.1", "nodemailer-shared": "1.1.0" @@ -10196,9 +9724,9 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -10223,6 +9751,15 @@ "socks": "~2.2.0" } }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -10243,17 +9780,6 @@ "requires": { "async": "^2.5.0", "loader-utils": "^1.1.0" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - } } }, "source-map-resolve": { @@ -10326,9 +9852,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, "spdy": { @@ -10354,9 +9880,9 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -10385,15 +9911,15 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -10404,9 +9930,9 @@ } }, "speed-measure-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-b9Yd0TrzceMVYSbuamM1sFsGM1oVfyFTM22gOoyLhymNvBVApuYpkdFOgYkKJpN/KhTpcCYcTGHg7X+FJ33Vvw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", "dev": true, "requires": { "chalk": "^2.0.1" @@ -10445,12 +9971,12 @@ } }, "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "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": { - "safe-buffer": "^5.1.1" + "figgy-pudding": "^3.5.1" } }, "static-extend": { @@ -10489,16 +10015,6 @@ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "optional": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -10567,15 +10083,37 @@ } } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "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=", + "dev": true + }, + "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" + } + } } }, "string_decoder": { @@ -10618,16 +10156,6 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "optional": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -10710,38 +10238,49 @@ "dev": true }, "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz", + "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==", "dev": true, - "optional": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.5", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } } }, "terser": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", - "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", "dev": true, "requires": { - "commander": "~2.17.1", + "commander": "^2.19.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.6" + "source-map-support": "~0.5.10" }, "dependencies": { "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, "source-map": { @@ -10753,9 +10292,9 @@ } }, "terser-webpack-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", - "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", "dev": true, "requires": { "cacache": "^11.0.2", @@ -10763,153 +10302,16 @@ "schema-utils": "^1.0.0", "serialize-javascript": "^1.4.0", "source-map": "^0.6.1", - "terser": "^3.8.1", + "terser": "^3.16.1", "webpack-sources": "^1.1.0", "worker-farm": "^1.5.2" }, "dependencies": { - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "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.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "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" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "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==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "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 - }, - "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" - } - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true } } }, @@ -11027,6 +10429,12 @@ "repeat-string": "^1.6.1" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -11051,29 +10459,12 @@ "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true, - "optional": true - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.2" - } - }, "ts-node": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.1.0.tgz", @@ -11196,6 +10587,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, + "optional": true, "requires": { "prelude-ls": "~1.1.2" } @@ -11217,9 +10609,9 @@ "dev": true }, "typescript": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", - "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", "dev": true }, "uglify-js": { @@ -11259,7 +10651,8 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true + "dev": true, + "optional": true }, "union-value": { "version": "1.0.0", @@ -11314,6 +10707,34 @@ "imurmurhash": "^0.1.4" } }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.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 + } + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -11617,15 +11038,15 @@ } }, "webpack": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.0.tgz", - "integrity": "sha512-pxdGG0keDBtamE1mNvT5zyBdx+7wkh6mh7uzMOo/uRQ/fhsdj5FXkh/j5mapzs060forql1oXqXN9HJGju+y7w==", + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.30.0.tgz", + "integrity": "sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", "acorn": "^6.0.5", "acorn-dynamic-import": "^4.0.0", "ajv": "^6.1.0", @@ -11641,23 +11062,11 @@ "mkdirp": "~0.5.0", "neo-async": "^2.5.0", "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", + "schema-utils": "^1.0.0", "tapable": "^1.1.0", "terser-webpack-plugin": "^1.1.0", "watchpack": "^1.5.0", "webpack-sources": "^1.3.0" - }, - "dependencies": { - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } } }, "webpack-core": { @@ -11688,325 +11097,115 @@ } }, "webpack-dev-middleware": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.5.1.tgz", - "integrity": "sha512-4dwCh/AyMOYAybggUr8fiCkRnjVDp+Cqlr9c+aaNB3GJYgRGYQWJ1YX/WAKUNA9dPNHZ6QSN2lYDKqjKSI8Vqw==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz", + "integrity": "sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg==", "dev": true, "requires": { - "memory-fs": "~0.4.1", + "memory-fs": "^0.4.1", "mime": "^2.3.1", "range-parser": "^1.0.3", "webpack-log": "^2.0.0" }, "dependencies": { "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true } } }, "webpack-dev-server": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", - "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz", + "integrity": "sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==", "dev": true, "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^2.0.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "express": "^4.16.2", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", + "chokidar": "^2.1.5", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.0", + "express": "^4.16.4", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", "import-local": "^2.0.0", - "internal-ip": "^3.0.1", + "internal-ip": "^4.2.0", "ip": "^1.1.5", - "killable": "^1.0.0", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", + "killable": "^1.0.1", + "loglevel": "^1.6.1", + "opn": "^5.5.0", + "portfinder": "^1.0.20", "schema-utils": "^1.0.0", - "selfsigned": "^1.9.1", - "semver": "^5.6.0", - "serve-index": "^1.7.2", + "selfsigned": "^1.10.4", + "semver": "^6.0.0", + "serve-index": "^1.9.1", "sockjs": "0.3.19", "sockjs-client": "1.3.0", "spdy": "^4.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "3.4.0", + "webpack-dev-middleware": "^3.6.2", "webpack-log": "^2.0.0", - "yargs": "12.0.2" + "yargs": "12.0.5" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "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==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.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" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "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" } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "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" } }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "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" - } - }, - "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 - }, - "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 - }, - "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" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", - "dev": true - }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "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==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { + "normalize-path": { "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" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "string-width": { - "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" - }, - "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" - } - } - } - }, - "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" - } - }, - "webpack-dev-middleware": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", - "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", - "dev": true, - "requires": { - "memory-fs": "~0.4.1", - "mime": "^2.3.1", - "range-parser": "^1.0.3", - "webpack-log": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "semver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", "dev": true }, - "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" - } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true } } }, @@ -12088,20 +11287,10 @@ } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true, - "optional": 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, - "requires": { - "string-width": "^1.0.2 || 2" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "with-callback": { "version": "1.0.2", @@ -12114,17 +11303,27 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "dev": true, + "optional": true }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" } }, + "worker-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.1.0.tgz", + "integrity": "sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -12133,6 +11332,28 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.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" + } + } } }, "wrappy": { @@ -12192,12 +11413,6 @@ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", "dev": true }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, "xss": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.3.tgz", @@ -12233,60 +11448,33 @@ "dev": true }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, - "optional": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "optional": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true, - "optional": true - } + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, - "optional": true, "requires": { - "camelcase": "^3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "optional": true - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "yeast": { @@ -12302,9 +11490,9 @@ "dev": true }, "zone.js": { - "version": "0.8.29", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz", - "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" } } } diff --git a/package.json b/package.json index e536ef94b..cfdb23430 100644 --- a/package.json +++ b/package.json @@ -13,17 +13,16 @@ }, "private": true, "dependencies": { - "@angular/animations": "7.2.3", + "@angular/animations": "8.0.0", "@angular/cdk": "7.3.0", - "@angular/common": "7.2.3", - "@angular/compiler": "7.2.3", - "@angular/core": "7.2.3", - "@angular/forms": "7.2.3", - "@angular/http": "7.2.3", + "@angular/common": "8.0.0", + "@angular/compiler": "8.0.0", + "@angular/core": "8.0.0", + "@angular/forms": "8.0.0", "@angular/material": "7.3.0", - "@angular/platform-browser": "7.2.3", - "@angular/platform-browser-dynamic": "7.2.3", - "@angular/router": "7.2.3", + "@angular/platform-browser": "8.0.0", + "@angular/platform-browser-dynamic": "8.0.0", + "@angular/router": "8.0.0", "@ng-bootstrap/ng-bootstrap": "^4.0.2", "@ngrx/effects": "^7.2.0", "@ngrx/router-store": "^7.2.0", @@ -39,29 +38,29 @@ "moment-timezone": "^0.5.21", "ng-recaptcha": "^4.2.1", "ngrx-store-freeze": "^0.2.2", - "ngx-chips": "^1.8.2", + "ngx-chips": "^2.0.0-beta.0", "ngx-push-notifications": "^7.0.2", "ngx-take-until-destroy": "^3.0.0", "ngx-virtual-keyboard": "^1.0.56", "ngx7-material-keyboard": "^0.1.2", "openpgp": "^3.0.7", "quill": "^1.3.6", - "rxjs": "^6.4.0", + "rxjs": "^6.5.2", "tslib": "^1.9.0", "xss": "^1.0.3", - "zone.js": "^0.8.29" + "zone.js": "~0.9.1" }, "devDependencies": { "@angular-builders/custom-webpack": "^7.2.0", "@angular-builders/dev-server": "^7.2.1", - "@angular-devkit/build-angular": "~0.13.0", - "@angular/cli": "7.3.0", - "@angular/compiler-cli": "7.2.3", - "@angular/language-service": "7.2.3", + "@angular-devkit/build-angular": "~0.800.0", + "@angular/cli": "8.0.2", + "@angular/compiler-cli": "8.0.0", + "@angular/language-service": "8.0.0", "@types/jasmine": "~2.8.3", "@types/jasminewd2": "~2.0.2", "@types/node": "~6.0.60", - "codelyzer": "^4.0.1", + "codelyzer": "^5.0.1", "jasmine-core": "~2.8.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~2.0.0", @@ -72,6 +71,6 @@ "protractor": "~5.1.2", "ts-node": "~4.1.0", "tslint": "~5.9.1", - "typescript": "3.2.4" + "typescript": "3.4.5" } } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 6351b002e..bf9822597 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -8,7 +8,7 @@ const routes: Routes = [ { path: '', component: HomeComponent }, { path: 'mail', - loadChildren: 'app/mail/mail.module#MailModule' + loadChildren: () => import('app/mail/mail.module').then(m => m.MailModule) } ]; @NgModule({ diff --git a/src/polyfills.ts b/src/polyfills.ts index de3bf0f33..0fbdc6ec9 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -11,28 +11,13 @@ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. * - * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + * Learn more in https://angular.io/guide/browser-support */ /*************************************************************************************************** - * BROWSER POLYFILLS - */ +* BROWSER POLYFILLS +*/ -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ -import 'core-js/es6/symbol'; -import 'core-js/es6/object'; -import 'core-js/es6/function'; -import 'core-js/es6/parse-int'; -import 'core-js/es6/parse-float'; -import 'core-js/es6/number'; -import 'core-js/es6/math'; -import 'core-js/es6/string'; -import 'core-js/es6/date'; -import 'core-js/es6/array'; -import 'core-js/es6/regexp'; -import 'core-js/es6/map'; -import 'core-js/es6/weak-map'; -import 'core-js/es6/set'; /** diff --git a/tsconfig.json b/tsconfig.json index 8cd9a30b0..2a7021c68 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,7 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "es5", + "target": "es2015", "typeRoots": [ "node_modules/@types" ], @@ -16,7 +16,7 @@ "es2017", "dom" ], - "module": "es2015", + "module": "esnext", "baseUrl": "./" } } \ No newline at end of file diff --git a/tslint.json b/tslint.json index 5e52a9953..d8513cc2d 100644 --- a/tslint.json +++ b/tslint.json @@ -126,12 +126,12 @@ "kebab-case" ], "no-output-on-prefix": true, - "use-input-property-decorator": true, - "use-output-property-decorator": true, - "use-host-property-decorator": true, + "no-inputs-metadata-property": true, + "no-outputs-metadata-property": true, + "no-host-metadata-property": true, "no-input-rename": true, "no-output-rename": true, - "use-life-cycle-interface": true, + "use-lifecycle-interface": true, "use-pipe-transform-interface": true, "component-class-suffix": true, "directive-class-suffix": true From f4c275ad0d2e974e372f1b9efeeb63dc611f744d Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 19:34:53 +0500 Subject: [PATCH 006/137] DEV-633 Migration related changes --- angular.json | 97 +++++++++---------- package-lock.json | 52 +++++++--- package.json | 4 +- src/app/app.module.ts | 2 +- .../mail-contact/mail-contact.component.ts | 2 +- .../save-contact/save-contact.component.ts | 2 +- .../mail/mail-detail/mail-detail.component.ts | 4 +- .../generic-folder.component.ts | 2 +- .../custom-domains.component.scss | 78 --------------- .../custom-domains.component.ts | 2 +- .../folders/folders.component.ts | 2 +- .../mail-autoresponder.component.ts | 4 +- .../mail-filters/mail-filters.component.ts | 4 +- .../mail-forwarding.component.ts | 4 +- .../mail-settings/mail-settings.component.ts | 4 +- .../organization-users.component.ts | 4 +- .../save-list-contact.component.ts | 2 +- .../security/security.component.ts | 2 +- .../compose-mail-dialog.component.ts | 4 +- .../compose-mail/compose-mail.component.ts | 14 +-- src/app/mail/mail.component.ts | 2 +- src/app/mail/mail.module.ts | 4 +- .../pricing-plans/pricing-plans.component.ts | 2 +- src/app/store/services/auth.guard.ts | 4 +- .../store/services/notification.service.ts | 2 +- .../reply-secure-message.component.ts | 4 +- .../users-sign-in/users-sign-in.component.ts | 6 +- src/styles/components.styles.scss | 81 ++++++++++++++++ src/tsconfig.app.json | 2 +- tsconfig.json | 12 +-- 30 files changed, 215 insertions(+), 193 deletions(-) diff --git a/angular.json b/angular.json index 5bb429c45..9fd762fec 100644 --- a/angular.json +++ b/angular.json @@ -4,18 +4,25 @@ "newProjectRoot": "projects", "projects": { "CTemplar": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, "root": "", "sourceRoot": "src", - "projectType": "application", + "prefix": "app", "architect": { "build": { - "builder": "@angular-builders/custom-webpack:browser", + "builder": "@angular-devkit/build-angular:browser", "options": { "outputPath": "dist", "index": "src/index.html", "main": "src/main.ts", "tsConfig": "src/tsconfig.app.json", "polyfills": "src/polyfills.ts", + "aot": false, "assets": [ "src/assets", "src/README.md", @@ -41,6 +48,12 @@ }, "configurations": { "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], "optimization": true, "outputHashing": "all", "sourceMap": false, @@ -50,17 +63,18 @@ "extractLicenses": true, "vendorChunk": false, "buildOptimizer": true, - "fileReplacements": [ + "budgets": [ { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" } ] } } }, "serve": { - "builder": "@angular-builders/dev-server:generic", + "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "CTemplar:build" }, @@ -80,21 +94,9 @@ "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", - "karmaConfig": "./karma.conf.js", "polyfills": "src/polyfills.ts", "tsConfig": "src/tsconfig.spec.json", - "scripts": [ - "node_modules/openpgp/dist/openpgp.min.js", - "node_modules/quill/dist/quill.min.js", - "node_modules/moment/min/moment.min.js", - "node_modules/moment-timezone/builds/moment-timezone.min.js", - "node_modules/bcryptjs/dist/bcrypt.js" - ], - "styles": [ - "src/styles.scss", - "node_modules/quill/dist/quill.snow.css", - "src/styles/material-theme.scss" - ], + "karmaConfig": "./karma.conf.js", "assets": [ "src/assets", "src/README.md", @@ -104,6 +106,18 @@ "input": "node_modules/openpgp/dist", "output": "/" } + ], + "styles": [ + "src/styles.scss", + "node_modules/quill/dist/quill.snow.css", + "src/styles/material-theme.scss" + ], + "scripts": [ + "node_modules/openpgp/dist/openpgp.min.js", + "node_modules/quill/dist/quill.min.js", + "node_modules/moment/min/moment.min.js", + "node_modules/moment-timezone/builds/moment-timezone.min.js", + "node_modules/bcryptjs/dist/bcrypt.js" ] } }, @@ -118,43 +132,20 @@ "**/node_modules/**" ] } - } - } - }, - "CTemplar-e2e": { - "root": "e2e", - "sourceRoot": "e2e", - "projectType": "application", - "architect": { - "e2e": { + }, + "CTemplar-e2e": { "builder": "@angular-devkit/build-angular:protractor", "options": { - "protractorConfig": "./protractor.conf.js", + "protractorConfig": "e2e/protractor.conf.js", "devServerTarget": "CTemplar:serve" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "e2e/tsconfig.e2e.json" - ], - "exclude": [ - "**/node_modules/**" - ] + }, + "configurations": { + "production": { + "devServerTarget": "CTemplar:serve:production" + } } } } - } - }, - "defaultProject": "CTemplar", - "schematics": { - "@schematics/angular:component": { - "prefix": "app", - "styleext": "scss" - }, - "@schematics/angular:directive": { - "prefix": "app" - } - } -} \ No newline at end of file + }}, + "defaultProject": "CTemplar" +} diff --git a/package-lock.json b/package-lock.json index ae17cb580..b21d60820 100644 --- a/package-lock.json +++ b/package-lock.json @@ -269,9 +269,9 @@ } }, "@angular/cdk": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.3.0.tgz", - "integrity": "sha512-8fH3wQ4WpOxgU06kxKf2MKelYBAq9ha6QrkXjtyb0ns6mJgsooSLX773G0dP9sAQn7rrqdsQh6SNj9zgvyRBDw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.0.0.tgz", + "integrity": "sha512-2vsRWEHNARe0iRmqgzvM67gwfRy+aKvdef4Qu9L+ndSsTrrZT3tSgG8SMn1v9SfBHnx5G8mo4d1AMquXG69AuQ==", "requires": { "parse5": "^5.0.0", "tslib": "^1.7.1" @@ -490,9 +490,9 @@ "dev": true }, "@angular/material": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.3.0.tgz", - "integrity": "sha512-wWf7dSX8pu9dY9GWiXJfYLA3LTSBREtHLr1NxhN26tQWxGKQ7NJBXth1GTgvojmwt5GzL2j4uyfq/PPvnp95iw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.0.0.tgz", + "integrity": "sha512-c7O7GhZd46xF2WB6T/YPam5lJkTgQLdIS53IqwZIFhL427+SEfPvejVzRnVfZCI3NdrKiWt/5VsvtQZwWzlGvw==", "requires": { "tslib": "^1.7.1" } @@ -2388,6 +2388,14 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2444,6 +2452,14 @@ "vary": "~1.1.2" } }, + "compressjs": { + "version": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", + "from": "github:openpgpjs/compressjs", + "requires": { + "amdefine": "~1.0.0", + "commander": "~2.8.1" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3163,6 +3179,7 @@ "elliptic": { "version": "6.4.0", "resolved": "github:openpgpjs/elliptic#e187e706e11fa51bcd20e46e5119054be4e2a4a6", + "dev": true, "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -4921,6 +4938,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, "handle-thing": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", @@ -7681,7 +7703,8 @@ "asn1.js": "^5.0.0", "bn.js": "^4.11.8", "buffer": "^5.0.8", - "elliptic": "elliptic@github:openpgpjs/elliptic#e187e706e11fa51bcd20e46e5119054be4e2a4a6", + "compressjs": "github:openpgpjs/compressjs", + "elliptic": "github:openpgpjs/elliptic", "hash.js": "^1.1.3", "node-fetch": "^2.1.2", "node-localstorage": "~1.3.0", @@ -7689,12 +7712,17 @@ "rusha": "^0.8.12" }, "dependencies": { - "compressjs": { - "version": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", - "from": "github:openpgpjs/compressjs#bfbb371a34d1750afa34bfa49156461acdab79a9", + "elliptic": { + "version": "github:openpgpjs/elliptic#1beea74833b48bd5698ed079c75fd21f0eb70b1c", + "from": "github:openpgpjs/elliptic", "requires": { - "amdefine": "~1.0.0", - "commander": "~2.8.1" + "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" } } } diff --git a/package.json b/package.json index cfdb23430..eebaaa4b3 100644 --- a/package.json +++ b/package.json @@ -14,12 +14,12 @@ "private": true, "dependencies": { "@angular/animations": "8.0.0", - "@angular/cdk": "7.3.0", + "@angular/cdk": "8.0.0", "@angular/common": "8.0.0", "@angular/compiler": "8.0.0", "@angular/core": "8.0.0", "@angular/forms": "8.0.0", - "@angular/material": "7.3.0", + "@angular/material": "8.0.0", "@angular/platform-browser": "8.0.0", "@angular/platform-browser-dynamic": "8.0.0", "@angular/router": "8.0.0", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 0bc6e2969..1d361a6f0 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,4 +1,4 @@ -import { MatButtonModule } from '@angular/material'; +import { MatButtonModule } from '@angular/material/button'; // Angular import { BrowserModule } from '@angular/platform-browser'; import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common/http'; diff --git a/src/app/mail/mail-contact/mail-contact.component.ts b/src/app/mail/mail-contact/mail-contact.component.ts index 08820926e..4bbcd5726 100644 --- a/src/app/mail/mail-contact/mail-contact.component.ts +++ b/src/app/mail/mail-contact/mail-contact.component.ts @@ -30,7 +30,7 @@ export enum ContactsProviderType { export class MailContactComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; - @ViewChild('importContactsModal') importContactsModal; + @ViewChild('importContactsModal', { static: false }) importContactsModal; contactsProviderType = ContactsProviderType; public userState: UserState; diff --git a/src/app/mail/mail-contact/save-contact/save-contact.component.ts b/src/app/mail/mail-contact/save-contact/save-contact.component.ts index 7bd1f4165..09897bbfd 100644 --- a/src/app/mail/mail-contact/save-contact/save-contact.component.ts +++ b/src/app/mail/mail-contact/save-contact/save-contact.component.ts @@ -17,7 +17,7 @@ export class SaveContactComponent implements OnInit, OnDestroy, OnChanges { @Input() selectedContact: Contact; @Output() userSaved = new EventEmitter(); - @ViewChild('newContactForm') newContactForm: NgForm; + @ViewChild('newContactForm', { static: false }) newContactForm: NgForm; newContactModel: Contact = { name: '', email: '', diff --git a/src/app/mail/mail-detail/mail-detail.component.ts b/src/app/mail/mail-detail/mail-detail.component.ts index 488bee2bc..29d9ebd24 100644 --- a/src/app/mail/mail-detail/mail-detail.component.ts +++ b/src/app/mail/mail-detail/mail-detail.component.ts @@ -24,8 +24,8 @@ import { SummarySeparator } from '../../shared/config'; export class MailDetailComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; - @ViewChild('forwardAttachmentsModal') forwardAttachmentsModal; - @ViewChild('incomingHeadersModal') incomingHeadersModal; + @ViewChild('forwardAttachmentsModal', { static: false }) forwardAttachmentsModal; + @ViewChild('incomingHeadersModal', { static: false }) incomingHeadersModal; mail: Mail; composeMailData: any = {}; diff --git a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts index 5933cca60..c87132a5f 100644 --- a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts +++ b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts @@ -35,7 +35,7 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { @Input() showProgress: boolean; @Input() fetchMails: boolean; - @ViewChild('confirmEmptyTrashModal') confirmEmptyTrashModal; + @ViewChild('confirmEmptyTrashModal', { static: false }) confirmEmptyTrashModal; customFolders: Folder[]; diff --git a/src/app/mail/mail-settings/custom-domains/custom-domains.component.scss b/src/app/mail/mail-settings/custom-domains/custom-domains.component.scss index 3b93d30a8..bdcedb219 100644 --- a/src/app/mail/mail-settings/custom-domains/custom-domains.component.scss +++ b/src/app/mail/mail-settings/custom-domains/custom-domains.component.scss @@ -176,88 +176,10 @@ background-color: #3ab05d } -/deep/ .mat-stepper-vertical, .mat-stepper-horizontal { - font-family: "Lato", Helvetica, Arial, sans-serif; - word-break: break-all; -} - -/deep/ .mat-step { - &:nth-of-type(1) { - .mat-step-header .mat-step-icon { - background-color: #e74c3c; - } - } - &:nth-of-type(2) { - .mat-step-header .mat-step-icon { - background-color: #e74c3c; - } - } - &:nth-of-type(3) { - .mat-step-header .mat-step-icon { - background-color: #e74c3c; - } - } -} - -/deep/ .mat-step-header .mat-step-icon { - width: 1.875rem; - height: 1.875rem; - background-color: rgba(0, 0, 0, 0.38); - - @include media("<=sm") { - width: 1.5625rem; - height: 1.5625rem; - } -} - .green { color: #3ab05d !important; } -/deep/ .mat-vertical-content-container.mat-stepper-vertical-line { - margin-left: 36px; - @include media("<=sm") { - margin-left: 0; - } -} - -/deep/ div.mat-vertical-content-container { - margin-left: 36px; - @include media("<=sm") { - margin-left: 0; - } -} - -/deep/ .mat-vertical-stepper-header.mat-step-header { - pointer-events: none !important; -} - -/deep/ .mat-step-header .mat-step-icon-not-touched { - width: 1.875rem; - height: 1.875rem; - @include media("<=sm") { - width: 1.5625rem; - height: 1.5625rem; - } -} - -/deep/ .mat-step-header .mat-step-label { - font-size: 1.125rem; - width: 100%; - @include media("<=sm") { - font-size: 1rem; - } -} - -/deep/ .mat-step-header .mat-step-label { - color: rgba(0, 0, 0, 0.87); - - &.mat-step-label-active { - &.mat-step-label-selected { - color: #e74c3c; - } - } -} .copy-btn { float: right !important; diff --git a/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts b/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts index 4d4a94a03..29814f62b 100644 --- a/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts +++ b/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts @@ -23,7 +23,7 @@ export class CustomDomainsComponent implements OnInit, OnDestroy { @Output() onGotoTab = new EventEmitter(); - @ViewChild('confirmDeleteModal') confirmDeleteModal; + @ViewChild('confirmDeleteModal', { static: false }) confirmDeleteModal; userState: UserState; authState: AuthState; diff --git a/src/app/mail/mail-settings/folders/folders.component.ts b/src/app/mail/mail-settings/folders/folders.component.ts index 7b2ec86d5..25e7157e2 100644 --- a/src/app/mail/mail-settings/folders/folders.component.ts +++ b/src/app/mail/mail-settings/folders/folders.component.ts @@ -20,7 +20,7 @@ export class FoldersComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; folders: Array = []; userState: UserState; - @ViewChild('confirmationModal') confirmationModal; + @ViewChild('confirmationModal', { static: false }) confirmationModal; confirmModalRef: NgbModalRef; selectedFolder: Folder; diff --git a/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts b/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts index 8e65befed..5d98a0b4d 100644 --- a/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts +++ b/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts @@ -18,8 +18,8 @@ import { DateTimeUtilService } from '../../../store/services/datetime-util.servi export class MailAutoresponderComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; - @ViewChild('startDatePicker') startDatePicker: NgbDatepicker; - @ViewChild('endDatePicker') endDatePicker: NgbDatepicker; + @ViewChild('startDatePicker', { static: false }) startDatePicker: NgbDatepicker; + @ViewChild('endDatePicker', { static: false }) endDatePicker: NgbDatepicker; userState: UserState; settings: Settings; diff --git a/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts b/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts index 33d4b7b52..62db51ce7 100644 --- a/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts +++ b/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts @@ -25,8 +25,8 @@ export class MailFiltersComponent implements OnInit, OnDestroy { [MailFolderType.SPAM]: 'icon-warning' }; - @ViewChild('customFilterModal') customFilterModal; - @ViewChild('deleteFilterModal') deleteFilterModal; + @ViewChild('customFilterModal', { static: false }) customFilterModal; + @ViewChild('deleteFilterModal', { static: false }) deleteFilterModal; mailFolderType = MailFolderType; filterCondition = FilterCondition; diff --git a/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts b/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts index ecca95fd1..19ddf9eea 100644 --- a/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts +++ b/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts @@ -18,8 +18,8 @@ import { takeUntil } from 'rxjs/operators'; export class MailForwardingComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; - @ViewChild('addAddressModal') addAddressModal; - @ViewChild('confirmDeleteAddressModal') confirmDeleteAddressModal; + @ViewChild('addAddressModal', { static: false }) addAddressModal; + @ViewChild('confirmDeleteAddressModal', { static: false }) confirmDeleteAddressModal; userState: UserState; settings: Settings; diff --git a/src/app/mail/mail-settings/mail-settings.component.ts b/src/app/mail/mail-settings/mail-settings.component.ts index 4d0404bfc..abb39ac67 100644 --- a/src/app/mail/mail-settings/mail-settings.component.ts +++ b/src/app/mail/mail-settings/mail-settings.component.ts @@ -49,8 +49,8 @@ export class MailSettingsComponent implements OnInit, OnDestroy { readonly championAnnualPriceTotal = 450; readonly planType = PlanType; - @ViewChild('deleteAccountInfoModal') deleteAccountInfoModal; - @ViewChild('confirmDeleteAccountModal') confirmDeleteAccountModal; + @ViewChild('deleteAccountInfoModal', { static: false }) deleteAccountInfoModal; + @ViewChild('confirmDeleteAccountModal', { static: false }) confirmDeleteAccountModal; selectedIndex = -1; // Assuming no element are selected initially userState: UserState; diff --git a/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts b/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts index 83b6038a6..7ac7751ec 100644 --- a/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts +++ b/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts @@ -26,8 +26,8 @@ import { }) export class OrganizationUsersComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; - @ViewChild('addUserModal') addUserModal; - @ViewChild('confirmDeleteModal') confirmDeleteModal; + @ViewChild('addUserModal', { static: false }) addUserModal; + @ViewChild('confirmDeleteModal', { static: false }) confirmDeleteModal; users: OrganizationUser[]; addUserForm: FormGroup; diff --git a/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts b/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts index 787310dce..9e47bf3ee 100644 --- a/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts +++ b/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts @@ -23,7 +23,7 @@ export class SaveListContactComponent implements OnInit, OnDestroy { @Output() public closed = new EventEmitter(); - @ViewChild('modalContent') modalContent: any; + @ViewChild('modalContent', { static: false }) modalContent: any; public contactForm: FormGroup; public showFormErrors: boolean; diff --git a/src/app/mail/mail-settings/security/security.component.ts b/src/app/mail/mail-settings/security/security.component.ts index 1ec855241..a7f4b68c7 100644 --- a/src/app/mail/mail-settings/security/security.component.ts +++ b/src/app/mail/mail-settings/security/security.component.ts @@ -20,7 +20,7 @@ import { takeUntil } from 'rxjs/operators'; export class SecurityComponent implements OnInit, OnDestroy { readonly destroyed$: Observable; private changePasswordModalRef: NgbModalRef; - @ViewChild('changePasswordModal') changePasswordModal; + @ViewChild('changePasswordModal', { static: false }) changePasswordModal; settings: any; changePasswordForm: FormGroup; diff --git a/src/app/mail/mail-sidebar/compose-mail-dialog/compose-mail-dialog.component.ts b/src/app/mail/mail-sidebar/compose-mail-dialog/compose-mail-dialog.component.ts index 0292b117e..91a065139 100644 --- a/src/app/mail/mail-sidebar/compose-mail-dialog/compose-mail-dialog.component.ts +++ b/src/app/mail/mail-sidebar/compose-mail-dialog/compose-mail-dialog.component.ts @@ -17,8 +17,8 @@ export class ComposeMailDialogComponent { @Output() public minimize = new EventEmitter(); @Output() public fullScreen = new EventEmitter(); - @ViewChild(ComposeMailComponent) composeMail: ComposeMailComponent; - @ViewChild('confirmDiscardModal') confirmDiscardModal; + @ViewChild(ComposeMailComponent, { static: false }) composeMail: ComposeMailComponent; + @ViewChild('confirmDiscardModal', { static: false }) confirmDiscardModal; isMinimized: boolean; isFullScreen: boolean; diff --git a/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts b/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts index 68df3fb0b..115ddd462 100644 --- a/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts +++ b/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts @@ -133,13 +133,13 @@ export class ComposeMailComponent implements OnInit, AfterViewInit, OnDestroy { @Output() hide: EventEmitter = new EventEmitter(); - @ViewChild('editor') editor; - @ViewChild('toolbar') toolbar; - @ViewChild('attachImagesModal') attachImagesModal; - @ViewChild('selfDestructModal') selfDestructModal; - @ViewChild('delayedDeliveryModal') delayedDeliveryModal; - @ViewChild('deadManTimerModal') deadManTimerModal; - @ViewChild('encryptionModal') encryptionModal; + @ViewChild('editor', { static: false }) editor; + @ViewChild('toolbar', { static: false }) toolbar; + @ViewChild('attachImagesModal', { static: false }) attachImagesModal; + @ViewChild('selfDestructModal', { static: false }) selfDestructModal; + @ViewChild('delayedDeliveryModal', { static: false }) delayedDeliveryModal; + @ViewChild('deadManTimerModal', { static: false }) deadManTimerModal; + @ViewChild('encryptionModal', { static: false }) encryptionModal; draftId: number; colors = COLORS; diff --git a/src/app/mail/mail.component.ts b/src/app/mail/mail.component.ts index c93c8691a..15e0e624f 100644 --- a/src/app/mail/mail.component.ts +++ b/src/app/mail/mail.component.ts @@ -22,7 +22,7 @@ import { takeUntil } from 'rxjs/operators'; export class MailComponent implements OnDestroy, OnInit, AfterViewInit { readonly destroyed$: Observable; - @ViewChild('composeMailContainer', { read: ViewContainerRef }) composeMailContainer: ViewContainerRef; + @ViewChild('composeMailContainer', { static: false, read: ViewContainerRef }) composeMailContainer: ViewContainerRef; private isLoadedData: boolean; constructor(private store: Store, diff --git a/src/app/mail/mail.module.ts b/src/app/mail/mail.module.ts index 9bc466a6c..5ee56a421 100644 --- a/src/app/mail/mail.module.ts +++ b/src/app/mail/mail.module.ts @@ -4,7 +4,9 @@ import { CommonModule } from '@angular/common'; // Bootstrap import { NgbModalModule, NgbModule } from '@ng-bootstrap/ng-bootstrap'; // Angular Material -import { MatButtonModule, MatCheckboxModule, MatStepperModule } from '@angular/material'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatStepperModule } from '@angular/material/stepper'; import { MailRoutingModule } from './mail-routing.module'; // component diff --git a/src/app/shared/components/pricing-plans/pricing-plans.component.ts b/src/app/shared/components/pricing-plans/pricing-plans.component.ts index cb9d5022e..ade46a5fe 100644 --- a/src/app/shared/components/pricing-plans/pricing-plans.component.ts +++ b/src/app/shared/components/pricing-plans/pricing-plans.component.ts @@ -36,7 +36,7 @@ export class PricingPlansComponent implements OnInit, OnChanges, OnDestroy { @Input() selectedEmailAddress: number = this.defaultEmailAddress; @Input() selectedCustomDomain: number = this.defaultCustomDomain; - @ViewChild('billingInfoModal') billingInfoModal; + @ViewChild('billingInfoModal', { static: false }) billingInfoModal; private billingInfoModalRef: NgbModalRef; diff --git a/src/app/store/services/auth.guard.ts b/src/app/store/services/auth.guard.ts index cdb89f3d8..53000ee78 100644 --- a/src/app/store/services/auth.guard.ts +++ b/src/app/store/services/auth.guard.ts @@ -1,10 +1,8 @@ // Angular -import { CanActivate, Router } from '@angular/router'; +import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router'; import { Injectable } from '@angular/core'; - // Services import { UsersService } from './users.service'; -import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router/src/router_state'; @Injectable() export class AuthGuard implements CanActivate { diff --git a/src/app/store/services/notification.service.ts b/src/app/store/services/notification.service.ts index 9bee11cd7..5d7a007ba 100644 --- a/src/app/store/services/notification.service.ts +++ b/src/app/store/services/notification.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { MatSnackBar, MatSnackBarConfig } from '@angular/material'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; import { AppState } from '../datatypes'; import { Store } from '@ngrx/store'; import { UndoDeleteMail } from '../actions'; diff --git a/src/app/users/reply-secure-message/reply-secure-message.component.ts b/src/app/users/reply-secure-message/reply-secure-message.component.ts index f3f16c0c1..2042b7eee 100644 --- a/src/app/users/reply-secure-message/reply-secure-message.component.ts +++ b/src/app/users/reply-secure-message/reply-secure-message.component.ts @@ -71,8 +71,8 @@ export class ReplySecureMessageComponent implements OnInit, AfterViewInit, OnDes @Output() cancel: EventEmitter = new EventEmitter(); @Output() replySuccess: EventEmitter = new EventEmitter(); - @ViewChild('editor') editor; - @ViewChild('toolbar') toolbar; + @ViewChild('editor', { static: false }) editor; + @ViewChild('toolbar', { static: false }) toolbar; colors = COLORS; fonts = FONTS; diff --git a/src/app/users/users-sign-in/users-sign-in.component.ts b/src/app/users/users-sign-in/users-sign-in.component.ts index 47bae9008..7978d0bef 100644 --- a/src/app/users/users-sign-in/users-sign-in.component.ts +++ b/src/app/users/users-sign-in/users-sign-in.component.ts @@ -44,9 +44,9 @@ export class UsersSignInComponent implements OnDestroy, OnInit { isGeneratingKeys: boolean; isRecoveryCodeSent: boolean; - @ViewChild('usernameVC') usernameVC: ElementRef; - @ViewChild('passwordVC') passwordVC: ElementRef; - @ViewChild('resetPasswordModal') resetPasswordModal; + @ViewChild('usernameVC', { static: false }) usernameVC: ElementRef; + @ViewChild('passwordVC', { static: false }) passwordVC: ElementRef; + @ViewChild('resetPasswordModal', { static: false }) resetPasswordModal; private _keyboardRef: MatKeyboardRef; private defaultLocale: string = 'US International'; diff --git a/src/styles/components.styles.scss b/src/styles/components.styles.scss index bb666eaee..3f070604b 100644 --- a/src/styles/components.styles.scss +++ b/src/styles/components.styles.scss @@ -35,3 +35,84 @@ font-size: 16px; color: $brand-danger; } + +app-custom-domains { + .mat-stepper-vertical, .mat-stepper-horizontal { + font-family: "Lato", Helvetica, Arial, sans-serif; + word-break: break-all; + } + + .mat-step { + &:nth-of-type(1) { + .mat-step-header .mat-step-icon { + background-color: #e74c3c; + } + } + &:nth-of-type(2) { + .mat-step-header .mat-step-icon { + background-color: #e74c3c; + } + } + &:nth-of-type(3) { + .mat-step-header .mat-step-icon { + background-color: #e74c3c; + } + } + } + + .mat-step-header .mat-step-icon { + width: 1.875rem; + height: 1.875rem; + background-color: rgba(0, 0, 0, 0.38); + + @include media("<=sm") { + width: 1.5625rem; + height: 1.5625rem; + } + } + + .mat-vertical-content-container.mat-stepper-vertical-line { + margin-left: 36px; + @include media("<=sm") { + margin-left: 0; + } + } + + div.mat-vertical-content-container { + margin-left: 36px; + @include media("<=sm") { + margin-left: 0; + } + } + + .mat-vertical-stepper-header.mat-step-header { + pointer-events: none !important; + } + + .mat-step-header .mat-step-icon-not-touched { + width: 1.875rem; + height: 1.875rem; + @include media("<=sm") { + width: 1.5625rem; + height: 1.5625rem; + } + } + + .mat-step-header .mat-step-label { + font-size: 1.125rem; + width: 100%; + @include media("<=sm") { + font-size: 1rem; + } + } + + .mat-step-header .mat-step-label { + color: rgba(0, 0, 0, 0.87); + + &.mat-step-label-active { + &.mat-step-label-selected { + color: #e74c3c; + } + } + } +} diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json index 39ba8dbac..8a9839914 100644 --- a/src/tsconfig.app.json +++ b/src/tsconfig.app.json @@ -3,7 +3,7 @@ "compilerOptions": { "outDir": "../out-tsc/app", "baseUrl": "./", - "module": "es2015", + "module": "esnext", "types": [] }, "exclude": [ diff --git a/tsconfig.json b/tsconfig.json index 2a7021c68..6ec9ceb17 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,22 @@ { "compileOnSave": false, "compilerOptions": { - "importHelpers": true, + "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, + "module": "esnext", "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, + "importHelpers": true, "target": "es2015", "typeRoots": [ "node_modules/@types" ], "lib": [ - "es2017", + "es2018", "dom" - ], - "module": "esnext", - "baseUrl": "./" + ] } -} \ No newline at end of file +} From 3d0f211c98feda0fc20e3010b51dcdcf603a42f4 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 19:35:07 +0500 Subject: [PATCH 007/137] DEV-633 fix quill related blot issue --- .../reply-secure-message.component.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/app/users/reply-secure-message/reply-secure-message.component.ts b/src/app/users/reply-secure-message/reply-secure-message.component.ts index 2042b7eee..0896815be 100644 --- a/src/app/users/reply-secure-message/reply-secure-message.component.ts +++ b/src/app/users/reply-secure-message/reply-secure-message.component.ts @@ -1,7 +1,6 @@ import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { Store } from '@ngrx/store'; import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import * as Parchment from 'parchment'; import * as QuillNamespace from 'quill'; import { Observable } from 'rxjs'; import { COLORS, FONTS } from '../../shared/config'; @@ -26,12 +25,7 @@ Quill.register(Quill.import('attributors/style/color'), true); const QuillBlockEmbed = Quill.import('blots/block/embed'); -class BlockEmbed extends Parchment.default.Embed { -} - -BlockEmbed.prototype = QuillBlockEmbed.prototype; - -class ImageBlot extends BlockEmbed { +class ImageBlot extends QuillBlockEmbed { static create(value) { const node: any = super.create(value); node.setAttribute('src', value.url); From 135fddf4bdd60967784e549fe8509f625d10e9cd Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 20:44:42 +0500 Subject: [PATCH 008/137] DEV-633 Upgrade take until destroy and use its new version in all places --- package-lock.json | 15 +++----- package.json | 2 +- src/app/app.component.ts | 17 ++++----- src/app/header/header.component.ts | 12 ++----- src/app/home/home.component.ts | 9 ++--- .../create-folder/create-folder.component.ts | 13 +++---- .../mail-contact/mail-contact.component.ts | 13 +++---- .../save-contact/save-contact.component.ts | 11 ++---- .../mail/mail-detail/mail-detail.component.ts | 18 ++++------ .../mail/mail-footer/mail-footer.component.ts | 8 ++--- .../mail/mail-header/mail-header.component.ts | 17 ++++----- .../generic-folder.component.ts | 17 ++++----- src/app/mail/mail-list/mail-list.component.ts | 17 ++++----- .../addresses-signature.component.ts | 17 ++++----- .../custom-domains.component.ts | 12 +++---- .../folders/folders.component.ts | 10 ++---- .../mail-autoresponder.component.ts | 10 ++---- .../mail-filters/mail-filters.component.ts | 12 +++---- .../mail-forwarding.component.ts | 10 ++---- .../mail-settings/mail-settings.component.ts | 17 ++++----- .../organization-users.component.ts | 16 ++++----- .../save-list-contact.component.ts | 10 ++---- .../security/security.component.ts | 14 +++----- .../compose-mail/compose-mail.component.ts | 35 +++++++------------ .../mail-sidebar/mail-sidebar.component.ts | 24 ++++++------- src/app/mail/mail.component.ts | 12 +++---- .../countdown-timer.component.ts | 11 +++--- .../users-billing-info.component.ts | 17 ++++----- src/app/shared/services/websocket.service.ts | 11 +++--- .../decrypt/decrypt-message.component.ts | 12 +++---- .../user-account-init-dialog.component.ts | 10 ++---- .../display-secure-message.component.ts | 6 +--- .../reply-secure-message.component.ts | 10 ++---- .../users-create-account.component.ts | 28 +++++---------- .../users-sign-in/users-sign-in.component.ts | 10 ++---- 35 files changed, 166 insertions(+), 317 deletions(-) diff --git a/package-lock.json b/package-lock.json index b21d60820..2d9175743 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7225,18 +7225,11 @@ } }, "ngx-take-until-destroy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ngx-take-until-destroy/-/ngx-take-until-destroy-3.0.0.tgz", - "integrity": "sha512-CCHROYUUOxhJRlNmfZPCJAegxo3MGgK3Tubb6FuF2mOPxRpwk9LCVITW9kEJvGnbW3aoBQwoJhgmnLWQZGPGRQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ngx-take-until-destroy/-/ngx-take-until-destroy-5.4.0.tgz", + "integrity": "sha512-e+VfCrHbLybdKWoQ8prdhmVzWI6vTnedr/9cVGQTkfepMdLz5D++VDk+Wnbs7mru6S9C+kIpNWUlh2YMPl928Q==", "requires": { - "@types/node": "^10.1.4" - }, - "dependencies": { - "@types/node": { - "version": "10.12.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.21.tgz", - "integrity": "sha512-CBgLNk4o3XMnqMc0rhb6lc77IwShMEglz05deDcn2lQxyXEZivfwgYJu7SMha9V5XcrP6qZuevTHV/QrN2vjKQ==" - } + "tslib": "^1.9.0" } }, "ngx-virtual-keyboard": { diff --git a/package.json b/package.json index eebaaa4b3..6080a3624 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "ngrx-store-freeze": "^0.2.2", "ngx-chips": "^2.0.0-beta.0", "ngx-push-notifications": "^7.0.2", - "ngx-take-until-destroy": "^3.0.0", + "ngx-take-until-destroy": "^5.4.0", "ngx-virtual-keyboard": "^1.0.56", "ngx7-material-keyboard": "^0.1.2", "openpgp": "^3.0.7", diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 319534624..1fed3a248 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,31 +1,26 @@ // Angular -import { Component, HostListener, OnInit } from '@angular/core'; +import { Component, HostListener, OnDestroy, OnInit } from '@angular/core'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; // Services import { SharedService } from './store/services'; // import { UsersService } from './users/shared/users.service'; -import { Observable } from 'rxjs'; import { Store } from '@ngrx/store'; import { AppState, AuthState, LoadingState } from './store/datatypes'; import { quotes } from './store/quotes'; - -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { TranslateService } from '@ngx-translate/core'; import { FinalLoading } from './store/actions'; import { REFFERAL_CODE_KEY } from './shared/config'; -import { filter, takeUntil } from 'rxjs/operators'; +import { filter } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; import Timer = NodeJS.Timer; -@TakeUntilDestroy() @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; - public hideFooter: boolean = false; public hideHeader: boolean = false; public windowIsResized: boolean = false; @@ -53,7 +48,7 @@ export class AppComponent implements OnInit, OnDestroy { this.store.dispatch(new FinalLoading({ loadingState: false })); }, 2000); - this.activatedRoute.queryParams.pipe(takeUntil(this.destroyed$)) + this.activatedRoute.queryParams.pipe(untilDestroyed(this)) .subscribe((params: any) => { if (params && params.referral_code) { localStorage.setItem(REFFERAL_CODE_KEY, params.referral_code); @@ -73,7 +68,7 @@ export class AppComponent implements OnInit, OnDestroy { this.quote = quotes[Math.floor(Math.random() * 5)]; - this.store.select((state: AppState) => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select((state: AppState) => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { this.isAuthenticated = authState.isAuthenticated; }); @@ -96,7 +91,7 @@ export class AppComponent implements OnInit, OnDestroy { } private updateLoadingStatus(): void { - this.store.select(state => state.loading).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.loading).pipe(untilDestroyed(this)) .subscribe((loadingState: LoadingState) => { this.isLoading = loadingState.Loading; }); diff --git a/src/app/header/header.component.ts b/src/app/header/header.component.ts index eee8331c1..566014bda 100644 --- a/src/app/header/header.component.ts +++ b/src/app/header/header.component.ts @@ -1,29 +1,23 @@ // Angular -import { Component, OnInit, HostListener, Inject } from '@angular/core'; +import { Component, HostListener, Inject, OnDestroy, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { DOCUMENT } from '@angular/common'; - // Service import { SharedService } from '../store/services'; import { UsersService } from '../store/services/users.service'; import { AppState, AuthState } from '../store/datatypes'; import { Store } from '@ngrx/store'; import { ExpireSession, Logout } from '../store/actions'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { TranslateService } from '@ngx-translate/core'; import { Language, LANGUAGES } from '../shared/config'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-header', templateUrl: './header.component.html', styleUrls: ['./header.component.scss'] }) export class HeaderComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; - // Public property of boolean type set false by default public navIsFixed: boolean = false; public menuIsOpened: boolean = false; @@ -48,7 +42,7 @@ export class HeaderComponent implements OnInit, OnDestroy { ngOnInit() { this.isLoggedIn = this.usersService.getUserKey() ? true : false; - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((data: AuthState) => this.isLoggedIn = data.isAuthenticated); } diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index ee6a8c488..a5ccf0ea1 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -1,27 +1,22 @@ // Angular -import { AfterViewChecked, Component, OnInit } from '@angular/core'; +import { AfterViewChecked, Component, OnDestroy, OnInit } from '@angular/core'; import { Mode } from '../store/models'; // Store // Rxjs -import { Observable } from 'rxjs'; // Actions // Services -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; interface ModeInterface { Recent: number; Related: number; } -@TakeUntilDestroy() @Component({ selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.scss'] }) export class HomeComponent implements OnInit, OnDestroy, AfterViewChecked { - readonly destroyed$: Observable; - mode: Mode; viewChecked: boolean = false; modeObj: ModeInterface = { @@ -33,7 +28,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewChecked { ngOnInit() { } - + ngOnDestroy() {} ngAfterViewChecked() { diff --git a/src/app/mail/dialogs/create-folder/create-folder.component.ts b/src/app/mail/dialogs/create-folder/create-folder.component.ts index a353b3f9d..1a6829ab0 100644 --- a/src/app/mail/dialogs/create-folder/create-folder.component.ts +++ b/src/app/mail/dialogs/create-folder/create-folder.component.ts @@ -1,6 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; +import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { AppState, UserState } from '../../../store/datatypes'; import { Store } from '@ngrx/store'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; @@ -8,17 +6,14 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { CreateFolder } from '../../../store/actions'; import { FOLDER_COLORS } from '../../../shared/config'; import { Folder } from '../../../store/models'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-create-folder', templateUrl: './create-folder.component.html', styleUrls: ['./create-folder.component.scss'] }) export class CreateFolderComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; - @Input() folder: Folder = { id: null, name: '', color: '' }; customFolderForm: FormGroup; @@ -49,7 +44,7 @@ export class CreateFolderComponent implements OnInit, OnDestroy { if (this.folder.color) { this.selectedColorIndex = this.folderColors.indexOf(this.folder.color); } - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { if (this.userState && this.userState.inProgress && !user.inProgress) { if (this.callback) { @@ -59,7 +54,7 @@ export class CreateFolderComponent implements OnInit, OnDestroy { } this.userState = user; }); - this.customFolderForm.get('folderName').valueChanges.pipe(takeUntil(this.destroyed$)) + this.customFolderForm.get('folderName').valueChanges.pipe(untilDestroyed(this)) .subscribe((value) => { this.checkFolderExist(value); }); diff --git a/src/app/mail/mail-contact/mail-contact.component.ts b/src/app/mail/mail-contact/mail-contact.component.ts index 4bbcd5726..c64e293d7 100644 --- a/src/app/mail/mail-contact/mail-contact.component.ts +++ b/src/app/mail/mail-contact/mail-contact.component.ts @@ -1,18 +1,16 @@ -import { Component, Inject, OnInit, ViewChild } from '@angular/core'; +import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { DOCUMENT } from '@angular/common'; -import { Observable } from 'rxjs'; import { AppState, Contact, UserState } from '../../store/datatypes'; import { ContactDelete, ContactImport, ContactsGet, SnackErrorPush } from '../../store'; // Store import { Store } from '@ngrx/store'; import { NgbDropdownConfig, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { BreakpointsService } from '../../store/services/breakpoint.service'; import { ComposeMailService } from '../../store/services/compose-mail.service'; -import { takeUntil } from 'rxjs/operators'; import { SearchState } from '../../store/reducers/search.reducers'; import { UpdateSearch } from '../../store/actions/search.action'; +import { untilDestroyed } from 'ngx-take-until-destroy'; export enum ContactsProviderType { GOOGLE = 'GOOGLE', @@ -21,15 +19,12 @@ export enum ContactsProviderType { OTHER = 'OTHER' } -@TakeUntilDestroy() @Component({ selector: 'app-mail-contact', templateUrl: './mail-contact.component.html', styleUrls: ['./mail-contact.component.scss'] }) export class MailContactComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; - @ViewChild('importContactsModal', { static: false }) importContactsModal; contactsProviderType = ContactsProviderType; @@ -67,7 +62,7 @@ export class MailContactComponent implements OnInit, OnDestroy { ngOnInit() { this.updateUsersStatus(); - this.store.select(state => state.search).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.search).pipe(untilDestroyed(this)) .subscribe((search: SearchState) => { this.searchText = search.searchText; this.store.dispatch(new ContactsGet({ limit: 20, offset: 0, q: this.searchText })); @@ -82,7 +77,7 @@ export class MailContactComponent implements OnInit, OnDestroy { private updateUsersStatus(): void { this.store.select(state => state.user) - .pipe(takeUntil(this.destroyed$)).subscribe((state: UserState) => { + .pipe(untilDestroyed(this)).subscribe((state: UserState) => { this.userState = state; this.inProgress = this.userState.inProgress; this.MAX_EMAIL_PAGE_LIMIT = this.userState.totalContacts; diff --git a/src/app/mail/mail-contact/save-contact/save-contact.component.ts b/src/app/mail/mail-contact/save-contact/save-contact.component.ts index 09897bbfd..6747becda 100644 --- a/src/app/mail/mail-contact/save-contact/save-contact.component.ts +++ b/src/app/mail/mail-contact/save-contact/save-contact.component.ts @@ -1,13 +1,10 @@ -import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'; import { ContactAdd } from '../../../store'; -import { Observable } from 'rxjs'; import { NgForm } from '@angular/forms'; import { Store } from '@ngrx/store'; import { AppState, Contact, UserState } from '../../../store/datatypes'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-save-contact', templateUrl: './save-contact.component.html', @@ -27,8 +24,6 @@ export class SaveContactComponent implements OnInit, OnDestroy, OnChanges { }; public inProgress: boolean; - readonly destroyed$: Observable; - constructor(private store: Store) { } @@ -48,7 +43,7 @@ export class SaveContactComponent implements OnInit, OnDestroy, OnChanges { private handleUserState(): void { this.store.select(state => state.user) - .pipe(takeUntil(this.destroyed$)).subscribe((state: UserState) => { + .pipe(untilDestroyed(this)).subscribe((state: UserState) => { if (this.inProgress && !state.inProgress) { this.inProgress = false; if (!state.isError) { diff --git a/src/app/mail/mail-detail/mail-detail.component.ts b/src/app/mail/mail-detail/mail-detail.component.ts index 29d9ebd24..9e251df8a 100644 --- a/src/app/mail/mail-detail/mail-detail.component.ts +++ b/src/app/mail/mail-detail/mail-detail.component.ts @@ -1,28 +1,24 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { DeleteMail, GetMailDetailSuccess, MoveMail, StarMail, WhiteListAdd } from '../../store/actions'; import { ClearMailDetail, GetMailDetail, ReadMail } from '../../store/actions/mail.actions'; import { AppState, MailBoxesState, MailState, UserState } from '../../store/datatypes'; import { Folder, Mail, Mailbox, MailFolderType } from '../../store/models/mail.model'; import { OpenPgpService, SharedService } from '../../store/services'; import { DateTimeUtilService } from '../../store/services/datetime-util.service'; -import { takeUntil } from 'rxjs/operators'; import { ComposeMailService } from '../../store/services/compose-mail.service'; import { WebSocketState } from '../../store'; import { SummarySeparator } from '../../shared/config'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-detail', templateUrl: './mail-detail.component.html', styleUrls: ['./mail-detail.component.scss'] }) export class MailDetailComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @ViewChild('forwardAttachmentsModal', { static: false }) forwardAttachmentsModal; @ViewChild('incomingHeadersModal', { static: false }) incomingHeadersModal; @@ -62,7 +58,7 @@ export class MailDetailComponent implements OnInit, OnDestroy { ngOnInit() { - this.store.select(state => state.webSocket).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.webSocket).pipe(untilDestroyed(this)) .subscribe((webSocketState: WebSocketState) => { if (webSocketState.message && !webSocketState.isClosed) { if (this.mail && (webSocketState.message.id === this.mail.id || webSocketState.message.parent_id === this.mail.id)) { @@ -71,7 +67,7 @@ export class MailDetailComponent implements OnInit, OnDestroy { } }); - this.store.select(state => state.mail).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mail).pipe(untilDestroyed(this)) .subscribe((mailState: MailState) => { if (mailState.mailDetail && mailState.noUnreadCountChange) { this.mail = mailState.mailDetail; @@ -136,13 +132,13 @@ export class MailDetailComponent implements OnInit, OnDestroy { } }); - this.store.select(state => state.mailboxes).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mailboxes).pipe(untilDestroyed(this)) .subscribe((mailBoxesState: MailBoxesState) => { this.currentMailbox = mailBoxesState.currentMailbox; this.mailboxes = mailBoxesState.mailboxes; }); - this.route.params.pipe(takeUntil(this.destroyed$)) + this.route.params.pipe(untilDestroyed(this)) .subscribe(params => { const id = +params['id']; @@ -151,7 +147,7 @@ export class MailDetailComponent implements OnInit, OnDestroy { this.getMailDetail(id); }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.customFolders = user.customFolders; this.userState = user; diff --git a/src/app/mail/mail-footer/mail-footer.component.ts b/src/app/mail/mail-footer/mail-footer.component.ts index 74b5e5bae..3378414c3 100644 --- a/src/app/mail/mail-footer/mail-footer.component.ts +++ b/src/app/mail/mail-footer/mail-footer.component.ts @@ -1,11 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { Store } from '@ngrx/store'; import { AppState, UserState } from '../../store/datatypes'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-footer', templateUrl: './mail-footer.component.html', @@ -20,7 +18,7 @@ export class MailFooterComponent implements OnInit, OnDestroy { ngOnInit() { this.store .select(state => state.user) - .pipe(takeUntil(this.destroyed$)) + .pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; }); diff --git a/src/app/mail/mail-header/mail-header.component.ts b/src/app/mail/mail-header/mail-header.component.ts index fcf626d1c..fdbaaf531 100644 --- a/src/app/mail/mail-header/mail-header.component.ts +++ b/src/app/mail/mail-header/mail-header.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, Inject, OnDestroy, OnInit } from '@angular/core'; import { NgbDropdownConfig } from '@ng-bootstrap/ng-bootstrap'; import { AppState, UserState } from '../../store/datatypes'; @@ -6,24 +6,21 @@ import { Store } from '@ngrx/store'; import { ExpireSession, Logout } from '../../store/actions'; import { TranslateService } from '@ngx-translate/core'; import { Language, LANGUAGES } from '../../shared/config'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; +import { untilDestroyed } from 'ngx-take-until-destroy'; import { FormControl } from '@angular/forms'; import { UpdateSearch } from '../../store/actions/search.action'; import { DOCUMENT } from '@angular/common'; import { ComposeMailService } from '../../store/services/compose-mail.service'; import { NavigationEnd, Router } from '@angular/router'; -import { filter, takeUntil } from 'rxjs/operators'; +import { filter } from 'rxjs/operators'; import { SearchState } from '../../store/reducers/search.reducers'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-header', templateUrl: './mail-header.component.html', styleUrls: ['./mail-header.component.scss'] }) export class MailHeaderComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; // Public property of boolean type set false by default menuIsOpened: boolean = false; @@ -43,7 +40,7 @@ export class MailHeaderComponent implements OnInit, OnDestroy { } ngOnInit() { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { if (user.settings.language) { const language = this.languages.filter(item => item.name === user.settings.language)[0]; @@ -55,18 +52,18 @@ export class MailHeaderComponent implements OnInit, OnDestroy { }); this.setSearchPlaceholder(this.router.url); - this.router.events.pipe(takeUntil(this.destroyed$), filter(event => event instanceof NavigationEnd)) + this.router.events.pipe(untilDestroyed(this), filter(event => event instanceof NavigationEnd)) .subscribe((event: NavigationEnd) => { this.setSearchPlaceholder(event.url); }); - this.searchInput.valueChanges.pipe(takeUntil(this.destroyed$)) + this.searchInput.valueChanges.pipe(untilDestroyed(this)) .subscribe((value) => { if (!value) { this.store.dispatch(new UpdateSearch({ searchText: value, clearSearch: true })); } }); - this.store.select(state => state.search).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.search).pipe(untilDestroyed(this)) .subscribe((searchState: SearchState) => { if (!searchState.searchText) { this.searchInput.setValue('', { emitEvent: false, emitModelToViewChange: true, emitViewToModelChange: false }); diff --git a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts index c87132a5f..f45632bc3 100644 --- a/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts +++ b/src/app/mail/mail-list/mail-folder/generic-folder/generic-folder.component.ts @@ -1,10 +1,7 @@ -import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; +import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { DeleteMail, EmptyTrash, @@ -22,8 +19,8 @@ import { SearchState } from '../../../../store/reducers/search.reducers'; import { SharedService } from '../../../../store/services'; import { ComposeMailService } from '../../../../store/services/compose-mail.service'; import { UpdateSearch } from '../../../../store/actions/search.action'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-generic-folder', templateUrl: './generic-folder.component.html', @@ -45,8 +42,6 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { userState: UserState; - readonly destroyed$: Observable; - MAX_EMAIL_PAGE_LIMIT: number = 1; LIMIT: number = 20; OFFSET: number = 0; @@ -65,7 +60,7 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { } ngOnInit() { - this.store.select(state => state.mail).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mail).pipe(untilDestroyed(this)) .subscribe((mailState: MailState) => { this.mailState = mailState; this.showProgress = !mailState.loaded || mailState.inProgress; @@ -75,7 +70,7 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { } }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.customFolders = user.customFolders; @@ -91,7 +86,7 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { } }); - this.store.select(state => state.search).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.search).pipe(untilDestroyed(this)) .subscribe((searchState: SearchState) => { this.searchText = searchState.searchText; if (this.searchText) { @@ -106,7 +101,7 @@ export class GenericFolderComponent implements OnInit, OnDestroy, OnChanges { } }); - this.activatedRoute.paramMap.pipe(takeUntil(this.destroyed$)) + this.activatedRoute.paramMap.pipe(untilDestroyed(this)) .subscribe((paramsMap: any) => { const params: any = paramsMap.params; if (params) { diff --git a/src/app/mail/mail-list/mail-list.component.ts b/src/app/mail/mail-list/mail-list.component.ts index 701be0e76..80157f1ad 100644 --- a/src/app/mail/mail-list/mail-list.component.ts +++ b/src/app/mail/mail-list/mail-list.component.ts @@ -1,22 +1,19 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { Folder, MailFolderType } from '../../store/models'; -import { Observable } from 'rxjs'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { AppState, UserState } from '../../store/datatypes'; import { Store } from '@ngrx/store'; import { SearchState } from '../../store/reducers/search.reducers'; -import { filter, takeUntil } from 'rxjs/operators'; +import { filter } from 'rxjs/operators'; import { UpdateSearch } from '../../store/actions/search.action'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-list', templateUrl: './mail-list.component.html', styleUrls: ['./mail-list.component.scss'] }) export class MailListComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; mailFolder: string = MailFolderType.INBOX; backFromSearchFolder: string = MailFolderType.INBOX; @@ -32,21 +29,21 @@ export class MailListComponent implements OnInit, OnDestroy { } ngOnInit() { - this.route.params.pipe(takeUntil(this.destroyed$)).subscribe(params => { + this.route.params.pipe(untilDestroyed(this)).subscribe(params => { this.mailFolder = params['folder'] as MailFolderType; this.page = +params['page']; }); - this.router.events.pipe(takeUntil(this.destroyed$), filter(event => event instanceof NavigationEnd)) + this.router.events.pipe(untilDestroyed(this), filter(event => event instanceof NavigationEnd)) .subscribe((event: NavigationEnd) => { this.isContactsPage = event.url === '/mail/contacts'; }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.customFolders = user.customFolders; }); - this.store.select(state => state.search).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.search).pipe(untilDestroyed(this)) .subscribe((search: SearchState) => { this.searchText = search.searchText; if (!this.isContactsPage) { diff --git a/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.ts b/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.ts index 71b07bde3..c0e4e3fa8 100644 --- a/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.ts +++ b/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.ts @@ -1,25 +1,22 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { PRIMARY_DOMAIN } from '../../../shared/config'; import { Mailbox } from '../../../store/models'; -import { CreateMailbox, SetDefaultMailbox, SettingsUpdate, SnackErrorPush, UpdateMailboxOrder } from '../../../store/actions'; +import { CreateMailbox, SetDefaultMailbox, SnackErrorPush, UpdateMailboxOrder } from '../../../store/actions'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { AppState, MailBoxesState, Settings, UserState } from '../../../store/datatypes'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { OpenPgpService, UsersService } from '../../../store/services'; -import { debounceTime, takeUntil } from 'rxjs/operators'; +import { debounceTime } from 'rxjs/operators'; import { MailboxSettingsUpdate } from '../../../store/actions/mail.actions'; import { MailSettingsService } from '../../../store/services/mail-settings.service'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-addresses-signature', templateUrl: './addresses-signature.component.html', styleUrls: ['./../mail-settings.component.scss', './addresses-signature.component.scss'] }) export class AddressesSignatureComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; public mailBoxesState: MailBoxesState; public mailboxes: Mailbox[]; public unmodifiedMailboxes: Mailbox[]; @@ -43,7 +40,7 @@ export class AddressesSignatureComponent implements OnInit, OnDestroy { ngOnInit() { - this.store.select(state => state.mailboxes).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mailboxes).pipe(untilDestroyed(this)) .subscribe((mailboxesState: MailBoxesState) => { if (mailboxesState.isUpdatingOrder) { this.reorderInProgress = true; @@ -72,7 +69,7 @@ export class AddressesSignatureComponent implements OnInit, OnDestroy { } }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.settings = user.settings; @@ -202,7 +199,7 @@ export class AddressesSignatureComponent implements OnInit, OnDestroy { this.newAddressForm.get('username').valueChanges .pipe( debounceTime(500), - takeUntil(this.destroyed$) + untilDestroyed(this) ) .subscribe((username) => { if (!username) { diff --git a/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts b/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts index 29814f62b..bc393faf0 100644 --- a/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts +++ b/src/app/mail/mail-settings/custom-domains/custom-domains.component.ts @@ -1,25 +1,21 @@ -import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NgbDropdownConfig, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; // Store import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { CreateDomain, DeleteDomain, GetDomains, VerifyDomain } from '../../../store/actions'; import { AppState, AuthState, Domain, Settings, UserState } from '../../../store/datatypes'; import { SharedService } from '../../../store/services'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-custom-domains', templateUrl: './custom-domains.component.html', styleUrls: ['./custom-domains.component.scss'] }) export class CustomDomainsComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @Output() onGotoTab = new EventEmitter(); @@ -56,11 +52,11 @@ export class CustomDomainsComponent implements OnInit, OnDestroy { } ngOnInit() { - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { this.authState = authState; }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; if (!user.inProgress) { diff --git a/src/app/mail/mail-settings/folders/folders.component.ts b/src/app/mail/mail-settings/folders/folders.component.ts index 25e7157e2..519354fe5 100644 --- a/src/app/mail/mail-settings/folders/folders.component.ts +++ b/src/app/mail/mail-settings/folders/folders.component.ts @@ -1,23 +1,19 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { Folder } from '../../../store/models'; import { AppState, UserState } from '../../../store/datatypes'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { DeleteFolder, UpdateFolderOrder } from '../../../store/actions'; import { CreateFolderComponent } from '../../dialogs/create-folder/create-folder.component'; import { NotificationService } from '../../../store/services/notification.service'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-folders', templateUrl: './folders.component.html', styleUrls: ['../mail-settings.component.scss', './folders.component.scss'] }) export class FoldersComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; folders: Array = []; userState: UserState; @ViewChild('confirmationModal', { static: false }) confirmationModal; @@ -34,7 +30,7 @@ export class FoldersComponent implements OnInit, OnDestroy { private notificationService: NotificationService) { } ngOnInit() { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; if (user.inProgress) { diff --git a/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts b/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts index 5d98a0b4d..1cbcc8970 100644 --- a/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts +++ b/src/app/mail/mail-settings/mail-autoresponder/mail-autoresponder.component.ts @@ -1,22 +1,18 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { FormBuilder } from '@angular/forms'; import { NgbDatepicker, NgbDateStruct, NgbModal, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { SaveAutoResponder, SnackErrorPush } from '../../../store/actions'; import { AppState, AutoResponder, Settings, UserState } from '../../../store/datatypes'; import { DateTimeUtilService } from '../../../store/services/datetime-util.service'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-autoresponder', templateUrl: './mail-autoresponder.component.html', styleUrls: ['./mail-autoresponder.component.scss', '../mail-settings.component.scss'] }) export class MailAutoresponderComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @ViewChild('startDatePicker', { static: false }) startDatePicker: NgbDatepicker; @ViewChild('endDatePicker', { static: false }) endDatePicker: NgbDatepicker; @@ -37,7 +33,7 @@ export class MailAutoresponderComponent implements OnInit, OnDestroy { } ngOnInit() { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.settings = user.settings; diff --git a/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts b/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts index 62db51ce7..c41b66fd1 100644 --- a/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts +++ b/src/app/mail/mail-settings/mail-filters/mail-filters.component.ts @@ -1,23 +1,21 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { Observable } from 'rxjs'; import { CreateFilter, DeleteFilter, UpdateFilter } from '../../../store/actions'; import { AppState, UserState } from '../../../store/datatypes'; import { Folder, MailFolderType } from '../../../store/models'; import { Filter, FilterCondition, FilterParameter } from '../../../store/models/filter.model'; import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-filters', templateUrl: './mail-filters.component.html', styleUrls: ['../mail-settings.component.scss'] }) export class MailFiltersComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; readonly folderIcons: any = { [MailFolderType.INBOX]: 'icon-inbox', [MailFolderType.ARCHIVE]: 'icon-archive', @@ -49,7 +47,7 @@ export class MailFiltersComponent implements OnInit, OnDestroy { } ngOnInit() { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((userState: UserState) => { this.filters = userState.filters; this.customFolders = userState.customFolders; @@ -67,11 +65,11 @@ export class MailFiltersComponent implements OnInit, OnDestroy { markAsRead: [false], markAsStarred: [false] }); - this.createFilterForm.get('name').valueChanges.pipe(takeUntil(this.destroyed$)) + this.createFilterForm.get('name').valueChanges.pipe(untilDestroyed(this)) .subscribe((value: string) => { this.checkFilterExist(value); }); - this.createFilterForm.get('moveTo').valueChanges.pipe(takeUntil(this.destroyed$)) + this.createFilterForm.get('moveTo').valueChanges.pipe(untilDestroyed(this)) .subscribe((value) => { if (!value && this.createFilterData) { this.createFilterData.folder = null; diff --git a/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts b/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts index 19ddf9eea..b1a32a8da 100644 --- a/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts +++ b/src/app/mail/mail-settings/mail-forwarding/mail-forwarding.component.ts @@ -1,22 +1,18 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { VALID_EMAIL_REGEX } from '../../../shared/config'; import { SendEmailForwardingCode, SettingsUpdate, VerifyEmailForwardingCode } from '../../../store/actions'; import { AppState, Settings, UserState } from '../../../store/datatypes'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-forwarding', templateUrl: './mail-forwarding.component.html', styleUrls: ['./mail-forwarding.component.scss', '../mail-settings.component.scss'] }) export class MailForwardingComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @ViewChild('addAddressModal', { static: false }) addAddressModal; @ViewChild('confirmDeleteAddressModal', { static: false }) confirmDeleteAddressModal; @@ -39,7 +35,7 @@ export class MailForwardingComponent implements OnInit, OnDestroy { } ngOnInit() { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.isVerificationCodeSent = user.isForwardingVerificationCodeSent; this.errorMessage = user.emailForwardingErrorMessage; diff --git a/src/app/mail/mail-settings/mail-settings.component.ts b/src/app/mail/mail-settings/mail-settings.component.ts index abb39ac67..fae5636ea 100644 --- a/src/app/mail/mail-settings/mail-settings.component.ts +++ b/src/app/mail/mail-settings/mail-settings.component.ts @@ -1,10 +1,8 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NgbDropdownConfig, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; // Store import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { DEFAULT_CUSTOM_DOMAIN, DEFAULT_EMAIL_ADDRESS, @@ -18,7 +16,8 @@ import { import { BlackListDelete, DeleteAccount, SnackPush, WhiteListDelete } from '../../store/actions'; import { AppState, - AuthState, NotificationPermission, + AuthState, + NotificationPermission, Payment, PaymentMethod, PaymentType, @@ -30,17 +29,15 @@ import { } from '../../store/datatypes'; import { OpenPgpService } from '../../store/services'; import { MailSettingsService } from '../../store/services/mail-settings.service'; -import { takeUntil } from 'rxjs/operators'; import { PushNotificationOptions, PushNotificationService } from 'ngx-push-notifications'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-settings', templateUrl: './mail-settings.component.html', styleUrls: ['./mail-settings.component.scss'] }) export class MailSettingsComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; readonly defaultStorage = DEFAULT_STORAGE; readonly defaultEmailAddress = DEFAULT_EMAIL_ADDRESS; readonly defaultCustomDomain = DEFAULT_CUSTOM_DOMAIN; @@ -93,11 +90,11 @@ export class MailSettingsComponent implements OnInit, OnDestroy { ngOnInit() { this.notificationsPermission = Notification.permission; - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { this.authState = authState; }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.settings = user.settings; @@ -115,7 +112,7 @@ export class MailSettingsComponent implements OnInit, OnDestroy { this.selectedLanguage = this.languages.filter(item => item.name === user.settings.language)[0]; } }); - this.store.select(state => state.timezone).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.timezone).pipe(untilDestroyed(this)) .subscribe((timezonesState: TimezonesState) => { this.timezones = timezonesState.timezones; }); diff --git a/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts b/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts index 7ac7751ec..1ce790805 100644 --- a/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts +++ b/src/app/mail/mail-settings/organization/organization-users/organization-users.component.ts @@ -1,31 +1,27 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { OrganizationUser } from '../../../../store/models'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs/internal/Observable'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { VALID_EMAIL_REGEX } from '../../../../shared/config'; import { PasswordValidation } from '../../../../users/users-create-account/users-create-account.component'; -import { debounceTime, takeUntil } from 'rxjs/operators'; +import { debounceTime } from 'rxjs/operators'; import { AppState, UserState } from '../../../../store/datatypes'; import { Store } from '@ngrx/store'; import { OpenPgpService, UsersService } from '../../../../store/services'; import { AddOrganizationUser, DeleteOrganizationUser, - GetOrganizationUsers, OrganizationState, UpdateOrganizationUser } from '../../../../store/organization.store'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-organization-users', templateUrl: './organization-users.component.html', styleUrls: ['./organization-users.component.scss'] }) export class OrganizationUsersComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @ViewChild('addUserModal', { static: false }) addUserModal; @ViewChild('confirmDeleteModal', { static: false }) confirmDeleteModal; @@ -69,7 +65,7 @@ export class OrganizationUsersComponent implements OnInit, OnDestroy { validator: PasswordValidation.MatchPassword }); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.customDomains = user.customDomains.filter((item) => item.is_domain_verified && item.is_mx_verified) @@ -79,7 +75,7 @@ export class OrganizationUsersComponent implements OnInit, OnDestroy { } }); - this.store.select(state => state.organization).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.organization).pipe(untilDestroyed(this)) .subscribe((organizationState: OrganizationState) => { this.organizationState = organizationState; this.users = organizationState.users; @@ -187,7 +183,7 @@ export class OrganizationUsersComponent implements OnInit, OnDestroy { this.addUserForm.get('username').valueChanges .pipe( debounceTime(1000), - takeUntil(this.destroyed$) + untilDestroyed(this) ) .subscribe((username) => { this.userExistError = null; diff --git a/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts b/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts index 9e47bf3ee..e573202f5 100644 --- a/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts +++ b/src/app/mail/mail-settings/save-list-contact/save-list-contact.component.ts @@ -1,15 +1,12 @@ -import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Store } from '@ngrx/store'; import { AppState, BlackList, UserState, WhiteList } from '../../../store/datatypes'; import { BlackListAdd, WhiteListAdd } from '../../../store/actions'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { NotificationService } from '../../../store/services/notification.service'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-save-list-contact', templateUrl: './save-list-contact.component.html', @@ -29,7 +26,6 @@ export class SaveListContactComponent implements OnInit, OnDestroy { public showFormErrors: boolean; private modalRef: NgbModalRef; - readonly destroyed$: Observable; public inProgress: boolean; constructor(private modalService: NgbModal, @@ -52,7 +48,7 @@ export class SaveListContactComponent implements OnInit, OnDestroy { private handleUserState(): void { this.store.select((state) => state.user) - .pipe(takeUntil(this.destroyed$)).subscribe((state: UserState) => { + .pipe(untilDestroyed(this)).subscribe((state: UserState) => { if (this.inProgress && !state.inProgress) { this.inProgress = false; if (!state.isError) { diff --git a/src/app/mail/mail-settings/security/security.component.ts b/src/app/mail/mail-settings/security/security.component.ts index a7f4b68c7..4051a249c 100644 --- a/src/app/mail/mail-settings/security/security.component.ts +++ b/src/app/mail/mail-settings/security/security.component.ts @@ -1,24 +1,20 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { AppState, AuthState, UserState } from '../../../store/datatypes'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { MailSettingsService } from '../../../store/services/mail-settings.service'; -import { ChangePassphraseSuccess, ChangePassword, GetMailboxes } from '../../../store/actions'; +import { ChangePassphraseSuccess, ChangePassword } from '../../../store/actions'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { OpenPgpService } from '../../../store/services'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { PasswordValidation } from '../../../users/users-create-account/users-create-account.component'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-settings-security', templateUrl: './security.component.html', styleUrls: ['./../mail-settings.component.scss', './security.component.scss'] }) export class SecurityComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; private changePasswordModalRef: NgbModalRef; @ViewChild('changePasswordModal', { static: false }) changePasswordModal; @@ -38,12 +34,12 @@ export class SecurityComponent implements OnInit, OnDestroy { private formBuilder: FormBuilder) { } ngOnInit() { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.settings = user.settings; }); - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { if (authState.updatedPrivateKeys && this.canDispatchChangePassphrase) { this.canDispatchChangePassphrase = false; diff --git a/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts b/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts index 115ddd462..a5a2c2920 100644 --- a/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts +++ b/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts @@ -1,19 +1,19 @@ -import { AfterViewInit, Component, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NgbDateStruct, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; import { MatKeyboardComponent, MatKeyboardRef, MatKeyboardService } from 'ngx7-material-keyboard'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import * as Parchment from 'parchment'; import * as QuillNamespace from 'quill'; -import { Observable, Subject, Subscription } from 'rxjs'; -import { debounceTime, takeUntil } from 'rxjs/operators'; +import { Subject, Subscription } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; import { COLORS, ESCAPE_KEYCODE, FONTS, SummarySeparator, VALID_EMAIL_REGEX } from '../../../shared/config'; import { FilenamePipe } from '../../../shared/pipes/filename.pipe'; import { FilesizePipe } from '../../../shared/pipes/filesize.pipe'; import { CloseMailbox, - DeleteAttachment, GetEmailContacts, + DeleteAttachment, + GetEmailContacts, GetUsersKeys, MoveMail, NewDraft, @@ -22,20 +22,11 @@ import { UpdateLocalDraft, UploadAttachment } from '../../../store/actions'; -import { - AppState, - AuthState, - ComposeMailState, - Contact, - Draft, - EmailContact, - MailBoxesState, - MailState, - UserState -} from '../../../store/datatypes'; +import { AppState, AuthState, ComposeMailState, Draft, EmailContact, MailBoxesState, MailState, UserState } from '../../../store/datatypes'; import { Attachment, Mail, Mailbox, MailFolderType } from '../../../store/models'; import { DateTimeUtilService } from '../../../store/services/datetime-util.service'; import { OpenPgpService } from '../../../store/services/openpgp.service'; +import { untilDestroyed } from 'ngx-take-until-destroy'; const Quill: any = QuillNamespace; @@ -112,7 +103,6 @@ export class PasswordValidation { } } -@TakeUntilDestroy() @Component({ selector: 'app-compose-mail', templateUrl: './compose-mail.component.html', @@ -173,7 +163,6 @@ export class ComposeMailComponent implements OnInit, AfterViewInit, OnDestroy { private _keyboardRef: MatKeyboardRef; private defaultLocale: string = 'US International'; - readonly destroyed$: Observable; private draft: Draft; private attachmentsQueue: Array = []; private inlineAttachmentContentIds: Array = []; @@ -207,7 +196,7 @@ export class ComposeMailComponent implements OnInit, AfterViewInit, OnDestroy { this.initializeAutoSave(); this.resetMailData(); - this.store.select((state: AppState) => state.composeMail).pipe(takeUntil(this.destroyed$)) + this.store.select((state: AppState) => state.composeMail).pipe(untilDestroyed(this)) .subscribe((response: ComposeMailState) => { const draft = response.drafts[this.draftId]; if (draft) { @@ -230,7 +219,7 @@ export class ComposeMailComponent implements OnInit, AfterViewInit, OnDestroy { this.draft = draft; }); - this.store.select((state: AppState) => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select((state: AppState) => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.contacts = user.emailContacts; if (!this.contacts) { @@ -240,12 +229,12 @@ export class ComposeMailComponent implements OnInit, AfterViewInit, OnDestroy { this.userState = user; }); - this.store.select((state: AppState) => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select((state: AppState) => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { this.isAuthenticated = authState.isAuthenticated; }); - this.store.select(state => state.mailboxes).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mailboxes).pipe(untilDestroyed(this)) .subscribe((mailBoxesState: MailBoxesState) => { if (!this.selectedMailbox) { if (this.draftMail && this.draftMail.mailbox) { @@ -263,7 +252,7 @@ export class ComposeMailComponent implements OnInit, AfterViewInit, OnDestroy { }); if (this.draftMail) { - this.store.select(state => state.mail).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mail).pipe(untilDestroyed(this)) .subscribe((mailState: MailState) => { if (!this.decryptedContent) { const decryptedContent = mailState.decryptedContents[this.draftMail.id]; diff --git a/src/app/mail/mail-sidebar/mail-sidebar.component.ts b/src/app/mail/mail-sidebar/mail-sidebar.component.ts index de49ff0bc..5452d95dc 100644 --- a/src/app/mail/mail-sidebar/mail-sidebar.component.ts +++ b/src/app/mail/mail-sidebar/mail-sidebar.component.ts @@ -1,9 +1,7 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, Inject, OnDestroy, OnInit } from '@angular/core'; import { NgbDropdownConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { AppState, AuthState, MailBoxesState, MailState, UserState } from '../../store/datatypes'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { ComposeMailService } from '../../store/services/compose-mail.service'; import { CreateFolderComponent } from '../dialogs/create-folder/create-folder.component'; import { Folder, Mail, Mailbox, MailFolderType } from '../../store/models/mail.model'; @@ -12,13 +10,13 @@ import { BreakpointsService } from '../../store/services/breakpoint.service'; import { NotificationService } from '../../store/services/notification.service'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { GetMails, GetMailsSuccess, GetUnreadMailsCount, GetUnreadMailsCountSuccess, ReadMailSuccess } from '../../store/actions'; -import { filter, takeUntil } from 'rxjs/operators'; +import { filter } from 'rxjs/operators'; import { WebsocketService } from '../../shared/services/websocket.service'; import { WebSocketState } from '../../store'; import { PushNotificationOptions, PushNotificationService } from 'ngx-push-notifications'; import { Title } from '@angular/platform-browser'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail-sidebar', templateUrl: './mail-sidebar.component.html', @@ -29,8 +27,6 @@ export class MailSidebarComponent implements OnInit, OnDestroy { LIMIT = 3; EMAIL_LIMIT = 20; - readonly destroyed$: Observable; - // Public property of boolean type set false by default public isComposeVisible: boolean = false; public userState: UserState; @@ -58,7 +54,7 @@ export class MailSidebarComponent implements OnInit, OnDestroy { // customize default values of dropdowns used by this component tree config.autoClose = 'outside'; - this.router.events.pipe(takeUntil(this.destroyed$)) + this.router.events.pipe(untilDestroyed(this)) .subscribe((event) => { if (event instanceof NavigationEnd) { this.currentRoute = event.url; @@ -74,7 +70,7 @@ export class MailSidebarComponent implements OnInit, OnDestroy { this.websocketService.connect(); // listen to web sockets events of new emails from server. - this.store.select(state => state.webSocket).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.webSocket).pipe(untilDestroyed(this)) .subscribe((webSocketState: WebSocketState) => { if (webSocketState.message && !webSocketState.isClosed) { if (webSocketState.message.mail) { @@ -108,7 +104,7 @@ export class MailSidebarComponent implements OnInit, OnDestroy { } } }); - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { if (!authState.isAuthenticated) { this.websocketService.disconnect(); @@ -125,7 +121,7 @@ export class MailSidebarComponent implements OnInit, OnDestroy { }, 3000); } - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((user: UserState) => { this.userState = user; this.EMAIL_LIMIT = this.userState.settings.emails_per_page ? this.userState.settings.emails_per_page : 20; @@ -135,18 +131,18 @@ export class MailSidebarComponent implements OnInit, OnDestroy { } }); - this.store.select(state => state.mailboxes).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mailboxes).pipe(untilDestroyed(this)) .subscribe((mailboxes: MailBoxesState) => { this.currentMailbox = mailboxes.currentMailbox; }); - this.store.select(state => state.mail).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.mail).pipe(untilDestroyed(this)) .subscribe((mailState: MailState) => { this.mailState = mailState; this.updateTitle(); }); - this.router.events.pipe(takeUntil(this.destroyed$), filter(event => event instanceof NavigationEnd)) + this.router.events.pipe(untilDestroyed(this), filter(event => event instanceof NavigationEnd)) .subscribe((event: NavigationEnd) => { if (event.url === '/mail/settings' || event.url === '/mail/contacts') { this.updateTitle(`${this.capitalize(event.url.split('/mail/')[1])} - CTemplar: Armored Email`); diff --git a/src/app/mail/mail.component.ts b/src/app/mail/mail.component.ts index 15e0e624f..4303a0b46 100644 --- a/src/app/mail/mail.component.ts +++ b/src/app/mail/mail.component.ts @@ -1,18 +1,15 @@ -import { AfterViewInit, Component, OnInit, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core'; +import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core'; // Store import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; // Actions import { AccountDetailsGet, BlackListGet, GetDomains, GetDomainsSuccess, GetFilters, GetMailboxes, WhiteListGet } from '../store/actions'; import { TimezoneGet } from '../store/actions/timezone.action'; -import { AppState, AuthState, UserState } from '../store/datatypes'; +import { AppState, UserState } from '../store/datatypes'; import { SharedService } from '../store/services'; import { ComposeMailService } from '../store/services/compose-mail.service'; import { GetOrganizationUsers } from '../store/organization.store'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-mail', templateUrl: './mail.component.html', @@ -20,7 +17,6 @@ import { takeUntil } from 'rxjs/operators'; encapsulation: ViewEncapsulation.None }) export class MailComponent implements OnDestroy, OnInit, AfterViewInit { - readonly destroyed$: Observable; @ViewChild('composeMailContainer', { static: false, read: ViewContainerRef }) composeMailContainer: ViewContainerRef; private isLoadedData: boolean; @@ -33,7 +29,7 @@ export class MailComponent implements OnDestroy, OnInit, AfterViewInit { ngOnInit() { this.store.dispatch(new AccountDetailsGet()); - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((userState: UserState) => { if (userState.isLoaded && !this.isLoadedData) { this.isLoadedData = true; diff --git a/src/app/shared/components/countdown-timer/countdown-timer.component.ts b/src/app/shared/components/countdown-timer/countdown-timer.component.ts index 3c4866440..d2e169f6a 100644 --- a/src/app/shared/components/countdown-timer/countdown-timer.component.ts +++ b/src/app/shared/components/countdown-timer/countdown-timer.component.ts @@ -1,17 +1,14 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; -import { takeUntil, takeWhile } from 'rxjs/operators'; +import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; +import { takeWhile } from 'rxjs/operators'; import { timer } from 'rxjs/internal/observable/timer'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-countdown-timer', templateUrl: './countdown-timer.component.html', styleUrls: ['./countdown-timer.component.scss'] }) export class CountdownTimerComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @Input() duration: number; // duration in seconds @@ -27,7 +24,7 @@ export class CountdownTimerComponent implements OnInit, OnDestroy { ngOnInit() { timer(0, 1000) - .pipe(takeUntil(this.destroyed$)) + .pipe(untilDestroyed(this)) .pipe( takeWhile(() => this.duration > 0) ) diff --git a/src/app/shared/components/users-billing-info/users-billing-info.component.ts b/src/app/shared/components/users-billing-info/users-billing-info.component.ts index 85fc39219..aa87eed29 100644 --- a/src/app/shared/components/users-billing-info/users-billing-info.component.ts +++ b/src/app/shared/components/users-billing-info/users-billing-info.component.ts @@ -1,12 +1,11 @@ -import { Component, EventEmitter, Input, NgZone, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable, Subscription } from 'rxjs'; +import { Subscription } from 'rxjs'; import { CheckTransaction, ClearWallet, @@ -29,13 +28,12 @@ import { } from '../../../store/datatypes'; // Service import { OpenPgpService, SharedService } from '../../../store/services/index'; -import { takeUntil } from 'rxjs/operators'; import { UserAccountInitDialogComponent } from '../../../users/dialogs/user-account-init-dialog/user-account-init-dialog.component'; import { DynamicScriptLoaderService } from '../../services/dynamic-script-loader.service'; import { timer } from 'rxjs/internal/observable/timer'; import { apiUrl } from '../../config'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-users-billing-info', templateUrl: './users-billing-info.component.html', @@ -81,7 +79,6 @@ export class UsersBillingInfoComponent implements OnDestroy, OnInit { isScriptsLoading: boolean; apiUrl: string = apiUrl; - readonly destroyed$: Observable; private checkTransactionResponse: CheckTransactionResponse; private timerObservable: Subscription; private modalRef: NgbModalRef; @@ -103,7 +100,7 @@ export class UsersBillingInfoComponent implements OnDestroy, OnInit { this.billingForm = this.formBuilder.group({ 'cardNumber': ['', [Validators.minLength(16), Validators.maxLength(16)]] }); - this.store.select(state => state.bitcoin).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.bitcoin).pipe(untilDestroyed(this)) .subscribe((bitcoinState: BitcoinState) => { this.bitcoinState = bitcoinState; this.checkTransactionResponse = this.bitcoinState.checkTransactionResponse; @@ -114,7 +111,7 @@ export class UsersBillingInfoComponent implements OnDestroy, OnInit { return; } }); - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { this.signupState = authState.signupState; this.authState = authState; @@ -157,7 +154,7 @@ export class UsersBillingInfoComponent implements OnDestroy, OnInit { this.timerObservable.unsubscribe(); } const timerRef: any = timer(1000, 1000); - this.timerObservable = timerRef.pipe(takeUntil(this.destroyed$)).subscribe(t => { + this.timerObservable = timerRef.pipe(untilDestroyed(this)).subscribe(t => { this.seconds = ((3600 - t) % 60); this.minutes = ((3600 - t - this.seconds) / 60); }); @@ -317,7 +314,7 @@ export class UsersBillingInfoComponent implements OnDestroy, OnInit { this.createNewWallet(); timer(15000, 5000) .pipe( - takeUntil(this.destroyed$), + untilDestroyed(this), ) .subscribe(() => { this.checkTransaction(); diff --git a/src/app/shared/services/websocket.service.ts b/src/app/shared/services/websocket.service.ts index a3118e917..0f4f216db 100644 --- a/src/app/shared/services/websocket.service.ts +++ b/src/app/shared/services/websocket.service.ts @@ -1,27 +1,24 @@ -import { Injectable } from '@angular/core'; +import { Injectable, OnDestroy } from '@angular/core'; import { UsersService } from '../../store/services'; import { AppState, UserState } from '../../store/datatypes'; import { Store } from '@ngrx/store'; import { WebSocketNewMessage } from '../../store/websocket.store'; import { LoggerService } from './logger.service'; -import { GetUnreadMailsCountSuccess, Logout } from '../../store/actions'; +import { Logout } from '../../store/actions'; import { getWebsocketUrl } from '../config'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { Observable } from 'rxjs/internal/Observable'; -import { takeUntil } from 'rxjs/operators'; import { Mail } from '../../store/models'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Injectable() export class WebsocketService implements OnDestroy { - readonly destroyed$: Observable; private webSocket: WebSocket; private retryCount = 1; private userId: number = Date.now(); constructor(private authService: UsersService, private store: Store) { - this.store.select(state => state.user).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.user).pipe(untilDestroyed(this)) .subscribe((userState: UserState) => { this.userId = userState.id ? userState.id : this.userId; }); diff --git a/src/app/users/decrypt/decrypt-message.component.ts b/src/app/users/decrypt/decrypt-message.component.ts index 77907ad5e..7668bc7a6 100644 --- a/src/app/users/decrypt/decrypt-message.component.ts +++ b/src/app/users/decrypt/decrypt-message.component.ts @@ -1,10 +1,8 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; // Store import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { GetMessage } from '../../store/actions'; // Store import { AppState, SecureMessageState } from '../../store/datatypes'; @@ -12,16 +10,14 @@ import { Mail } from '../../store/models'; // Service import { OpenPgpService, SharedService } from '../../store/services'; import { DateTimeUtilService } from '../../store/services/datetime-util.service'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-decrypt-message', templateUrl: './decrypt-message.component.html', styleUrls: ['./decrypt-message.component.scss'] }) export class DecryptMessageComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; decryptForm: FormGroup; hash: string; @@ -53,14 +49,14 @@ export class DecryptMessageComponent implements OnInit, OnDestroy { password: ['', [Validators.required]] }); - this.route.params.pipe(takeUntil(this.destroyed$)).subscribe(params => { + this.route.params.pipe(untilDestroyed(this)).subscribe(params => { this.hash = params['hash']; this.secret = params['secret']; this.senderId = decodeURIComponent(params['senderId']); this.store.dispatch(new GetMessage({ hash: this.hash, secret: this.secret })); }); - this.store.select(state => state.secureMessage).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.secureMessage).pipe(untilDestroyed(this)) .subscribe((state: SecureMessageState) => { this.isLoading = state.inProgress || state.isContentDecryptionInProgress; this.errorMessage = state.errorMessage; diff --git a/src/app/users/dialogs/user-account-init-dialog/user-account-init-dialog.component.ts b/src/app/users/dialogs/user-account-init-dialog/user-account-init-dialog.component.ts index 59f09d154..bfadb4dc1 100644 --- a/src/app/users/dialogs/user-account-init-dialog/user-account-init-dialog.component.ts +++ b/src/app/users/dialogs/user-account-init-dialog/user-account-init-dialog.component.ts @@ -1,13 +1,10 @@ import { animate, query, stagger, style, transition, trigger } from '@angular/animations'; -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; import { AppState, AuthState, SignupState } from '../../../store/datatypes'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-user-account-init-dialog', templateUrl: './user-account-init-dialog.component.html', @@ -57,7 +54,6 @@ import { takeUntil } from 'rxjs/operators'; ] }) export class UserAccountInitDialogComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @Input() isPgpGenerationComplete: boolean; @@ -71,7 +67,7 @@ export class UserAccountInitDialogComponent implements OnInit, OnDestroy { } ngOnInit() { - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { if (this.signupState && this.signupState.inProgress && !authState.signupState.inProgress) { if (authState.errorMessage || this.step === 4) { diff --git a/src/app/users/display-secure-message/display-secure-message.component.ts b/src/app/users/display-secure-message/display-secure-message.component.ts index cd259220e..b7456ea29 100644 --- a/src/app/users/display-secure-message/display-secure-message.component.ts +++ b/src/app/users/display-secure-message/display-secure-message.component.ts @@ -1,17 +1,13 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; -import { Observable } from 'rxjs'; +import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; import { Mail } from '../../store/models'; import { DateTimeUtilService } from '../../store/services/datetime-util.service'; -@TakeUntilDestroy() @Component({ selector: 'app-display-secure-message', templateUrl: './display-secure-message.component.html', styleUrls: ['./display-secure-message.component.scss'] }) export class DisplaySecureMessageComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; @Input() message: Mail; @Input() decryptedContent: string; diff --git a/src/app/users/reply-secure-message/reply-secure-message.component.ts b/src/app/users/reply-secure-message/reply-secure-message.component.ts index 0896815be..08474e034 100644 --- a/src/app/users/reply-secure-message/reply-secure-message.component.ts +++ b/src/app/users/reply-secure-message/reply-secure-message.component.ts @@ -1,14 +1,12 @@ -import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; import { Store } from '@ngrx/store'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import * as QuillNamespace from 'quill'; -import { Observable } from 'rxjs'; import { COLORS, FONTS } from '../../shared/config'; import { GetSecureMessageUserKeys, SendSecureMessageReply } from '../../store/actions'; import { AppState, SecureMessageState } from '../../store/datatypes'; import { Attachment, Mail } from '../../store/models'; import { OpenPgpService } from '../../store/services'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; const Quill: any = QuillNamespace; @@ -48,14 +46,12 @@ ImageBlot.tagName = 'img'; Quill.register(ImageBlot); -@TakeUntilDestroy() @Component({ selector: 'app-reply-secure-message', templateUrl: './reply-secure-message.component.html', styleUrls: ['./reply-secure-message.component.scss'] }) export class ReplySecureMessageComponent implements OnInit, AfterViewInit, OnDestroy { - readonly destroyed$: Observable; @Input() sourceMessage: Mail; @Input() hash: string; @@ -82,7 +78,7 @@ export class ReplySecureMessageComponent implements OnInit, AfterViewInit, OnDes } ngOnInit() { - this.store.select(state => state.secureMessage).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.secureMessage).pipe(untilDestroyed(this)) .subscribe((state: SecureMessageState) => { this.inProgress = state.inProgress || state.isEncryptionInProgress; if (this.secureMessageState) { diff --git a/src/app/users/users-create-account/users-create-account.component.ts b/src/app/users/users-create-account/users-create-account.component.ts index b75acef89..3a9835db7 100644 --- a/src/app/users/users-create-account/users-create-account.component.ts +++ b/src/app/users/users-create-account/users-create-account.component.ts @@ -1,31 +1,22 @@ // Angular -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; // Rxjs -import { Observable } from 'rxjs'; // Bootstrap import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; // Store import { Store } from '@ngrx/store'; import { AppState, AuthState, Captcha, SignupState, UserState } from '../../store/datatypes'; -import { - CheckUsernameAvailability, - FinalLoading, - GetCaptcha, - SignUp, - SignUpFailure, - UpdateSignupData, - VerifyCaptcha -} from '../../store/actions'; +import { CheckUsernameAvailability, FinalLoading, GetCaptcha, SignUp, UpdateSignupData, VerifyCaptcha } from '../../store/actions'; // Service import { OpenPgpService, SharedService } from '../../store/services'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { NotificationService } from '../../store/services/notification.service'; -import { debounceTime, takeUntil, tap } from 'rxjs/operators'; -import { apiUrl, VALID_EMAIL_REGEX } from '../../shared/config'; +import { debounceTime } from 'rxjs/operators'; +import { VALID_EMAIL_REGEX } from '../../shared/config'; import { UserAccountInitDialogComponent } from '../dialogs/user-account-init-dialog/user-account-init-dialog.component'; import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'; +import { untilDestroyed } from 'ngx-take-until-destroy'; export class PasswordValidation { @@ -40,7 +31,6 @@ export class PasswordValidation { } } -@TakeUntilDestroy() @Component({ selector: 'app-users-create-account', templateUrl: './users-create-account.component.html', @@ -48,8 +38,6 @@ export class PasswordValidation { }) export class UsersCreateAccountComponent implements OnInit, OnDestroy { - readonly destroyed$: Observable; - isTextToggled: boolean = false; signupForm: FormGroup; isRecoveryEmail: boolean = null; @@ -95,7 +83,7 @@ export class UsersCreateAccountComponent implements OnInit, OnDestroy { validator: PasswordValidation.MatchPassword }); - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((state: AuthState) => { this.captcha = state.captcha; if (this.captcha.isInvalid) { @@ -105,7 +93,7 @@ export class UsersCreateAccountComponent implements OnInit, OnDestroy { }); this.store.select(state => state.user) - .pipe(takeUntil(this.destroyed$)) + .pipe(untilDestroyed(this)) .subscribe((state: UserState) => { this.selectedPlan = state.membership.id; if (this.selectedPlan !== 1 && this.selectedPlan !== 2 && !this.isCaptchaRetrieved) { @@ -225,7 +213,7 @@ export class UsersCreateAccountComponent implements OnInit, OnDestroy { } private handleUserState(): void { - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)).subscribe((authState: AuthState) => { + this.store.select(state => state.auth).pipe(untilDestroyed(this)).subscribe((authState: AuthState) => { if (this.signupInProgress && !authState.inProgress) { if (authState.errorMessage) { this.notificationService.showSnackBar(`Failed to create account.` + authState.errorMessage); diff --git a/src/app/users/users-sign-in/users-sign-in.component.ts b/src/app/users/users-sign-in/users-sign-in.component.ts index 7978d0bef..981d2f44f 100644 --- a/src/app/users/users-sign-in/users-sign-in.component.ts +++ b/src/app/users/users-sign-in/users-sign-in.component.ts @@ -1,30 +1,26 @@ // Angular -import { Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core'; +import { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; // Bootstrap import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; import { MatKeyboardComponent, MatKeyboardRef, MatKeyboardService } from 'ngx7-material-keyboard'; -import { Observable } from 'rxjs'; // Store import { AppState, AuthState } from '../../store/datatypes'; import { ClearAuthErrorMessage, FinalLoading, LogIn, RecoverPassword, ResetPassword } from '../../store/actions'; // Service import { OpenPgpService, SharedService, UsersService } from '../../store/services'; -import { OnDestroy, TakeUntilDestroy } from 'ngx-take-until-destroy'; import { ESCAPE_KEYCODE } from '../../shared/config'; import { PasswordValidation } from '../users-create-account/users-create-account.component'; -import { takeUntil } from 'rxjs/operators'; +import { untilDestroyed } from 'ngx-take-until-destroy'; -@TakeUntilDestroy() @Component({ selector: 'app-users-sign-in', templateUrl: './users-sign-in.component.html', styleUrls: ['./users-sign-in.component.scss'] }) export class UsersSignInComponent implements OnDestroy, OnInit { - readonly destroyed$: Observable; loginForm: FormGroup; recoverPasswordForm: FormGroup; @@ -88,7 +84,7 @@ export class UsersSignInComponent implements OnDestroy, OnInit { validator: PasswordValidation.MatchPassword }); - this.store.select(state => state.auth).pipe(takeUntil(this.destroyed$)) + this.store.select(state => state.auth).pipe(untilDestroyed(this)) .subscribe((authState: AuthState) => { if (!authState.isAuthenticated) { this.isLoading = authState.inProgress; From 90510c603ec758f91829854b18c5814bcbd67c13 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 21:23:10 +0500 Subject: [PATCH 009/137] DEV-633 Fix Quill editor issues due to migration --- .../mail-sidebar/compose-mail/compose-mail.component.ts | 9 ++------- tsconfig.json | 5 +++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts b/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts index a5a2c2920..4ce25ff62 100644 --- a/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts +++ b/src/app/mail/mail-sidebar/compose-mail/compose-mail.component.ts @@ -43,12 +43,7 @@ Quill.register(Quill.import('attributors/style/color'), true); const QuillBlockEmbed = Quill.import('blots/block/embed'); -class BlockEmbed extends Parchment.default.Embed { -} - -BlockEmbed.prototype = QuillBlockEmbed.prototype; - -class ImageBlot extends BlockEmbed { +class ImageBlot extends QuillBlockEmbed { static create(value) { const node: any = super.create(value); node.setAttribute('src', value.url); @@ -71,7 +66,7 @@ ImageBlot.tagName = 'img'; Quill.register(ImageBlot); -class SignatureBlot extends BlockEmbed { +class SignatureBlot extends QuillBlockEmbed { static create(value) { const node: any = super.create(value); value = value.replace(/
/g, '\n'); diff --git a/tsconfig.json b/tsconfig.json index 6ec9ceb17..0b260b9e7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "importHelpers": true, - "target": "es2015", + "target": "es5", "typeRoots": [ "node_modules/@types" ], @@ -18,5 +18,6 @@ "es2018", "dom" ] - } + }, + } From d710c957b8823d0095557474df62f02796f59a06 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 21:23:33 +0500 Subject: [PATCH 010/137] DEV-633 Upgrade account modal should not be closed by clicking outside. --- .../shared/components/pricing-plans/pricing-plans.component.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/shared/components/pricing-plans/pricing-plans.component.ts b/src/app/shared/components/pricing-plans/pricing-plans.component.ts index ade46a5fe..001e5b052 100644 --- a/src/app/shared/components/pricing-plans/pricing-plans.component.ts +++ b/src/app/shared/components/pricing-plans/pricing-plans.component.ts @@ -109,7 +109,8 @@ export class PricingPlansComponent implements OnInit, OnChanges, OnDestroy { if (this.openBillingInfoInModal) { this.billingInfoModalRef = this.modalService.open(this.billingInfoModal, { centered: true, - windowClass: 'modal-lg users-action-modal' + windowClass: 'modal-lg users-action-modal', + backdrop: 'static', }); } else { this.store.dispatch(new ClearSignUpState()); From 21871aeba4db67ddd5027a8c549e353628fb59b1 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sat, 8 Jun 2019 22:15:26 +0500 Subject: [PATCH 011/137] DEV-633 Fix push notifications issue after upgrade --- angular.json | 4 +- package-lock.json | 98 ------------------- package.json | 1 - src/app/app.module.ts | 2 - .../mail-settings/mail-settings.component.ts | 2 +- .../mail-sidebar/mail-sidebar.component.ts | 6 +- src/app/mail/mail.module.ts | 2 + .../push-notification.service.spec.ts | 12 +++ .../services/push-notification.service.ts | 96 ++++++++++++++++++ src/app/shared/services/websocket.service.ts | 1 - 10 files changed, 116 insertions(+), 108 deletions(-) create mode 100644 src/app/shared/services/push-notification.service.spec.ts create mode 100644 src/app/shared/services/push-notification.service.ts diff --git a/angular.json b/angular.json index 9fd762fec..edb67a987 100644 --- a/angular.json +++ b/angular.json @@ -66,8 +66,8 @@ "budgets": [ { "type": "initial", - "maximumWarning": "2mb", - "maximumError": "5mb" + "maximumWarning": "5mb", + "maximumError": "7mb" } ] } diff --git a/package-lock.json b/package-lock.json index 2d9175743..6ce67f7c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7126,104 +7126,6 @@ "tslib": "^1.9.0" } }, - "ngx-push-notifications": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/ngx-push-notifications/-/ngx-push-notifications-7.0.2.tgz", - "integrity": "sha512-nB6ArHAOtA31s7kO6852VikAHQU4NZEzovXj7CIkPLo4aYwzfm7rLGunnPnGs7ZO9iE1EujU2C1wjCDSpnWZnQ==", - "requires": { - "@angular/animations": "~7.2.0", - "@angular/common": "~7.2.0", - "@angular/compiler": "~7.2.0", - "@angular/core": "~7.2.0", - "@angular/forms": "~7.2.0", - "@angular/platform-browser": "~7.2.0", - "@angular/platform-browser-dynamic": "~7.2.0", - "@angular/router": "~7.2.0", - "core-js": "^2.5.4", - "rxjs": "~6.3.3", - "tslib": "^1.9.0", - "zone.js": "~0.8.26" - }, - "dependencies": { - "@angular/animations": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.15.tgz", - "integrity": "sha512-8oBt3HLgd2+kyJHUgsd7OzKCCss67t2sch15XNoIWlOLfxclqU+EfFE6t/vCzpT8/+lpZS6LU9ZrTnb+UBj5jg==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/common": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.15.tgz", - "integrity": "sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/compiler": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.15.tgz", - "integrity": "sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/core": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.15.tgz", - "integrity": "sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/forms": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz", - "integrity": "sha512-p0kcIQLtBBC1qeTA6M3nOuXf/k91E80FKquVM9zEsO2kDjI0oZJVfFYL2UMov5samlJOPN+t6lRHEIUa7ApPsw==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/platform-browser": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.15.tgz", - "integrity": "sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz", - "integrity": "sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/router": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.15.tgz", - "integrity": "sha512-qAubRJRQanguUqJQ76J9GSZ4JFtoyhJKRmX5P23ANZJXpB6YLzF2fJmOGi+E6cV8F0tKBMEq1pjxFTisx0MXwQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "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==", - "requires": { - "tslib": "^1.9.0" - } - }, - "zone.js": { - "version": "0.8.29", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz", - "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" - } - } - }, "ngx-take-until-destroy": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/ngx-take-until-destroy/-/ngx-take-until-destroy-5.4.0.tgz", diff --git a/package.json b/package.json index 6080a3624..f319abea8 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "ng-recaptcha": "^4.2.1", "ngrx-store-freeze": "^0.2.2", "ngx-chips": "^2.0.0-beta.0", - "ngx-push-notifications": "^7.0.2", "ngx-take-until-destroy": "^5.4.0", "ngx-virtual-keyboard": "^1.0.56", "ngx7-material-keyboard": "^0.1.2", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 1d361a6f0..5e9f248cc 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -29,7 +29,6 @@ import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { TimezoneService } from './store/services/timezone.service'; import { DonationService } from './store/services/donation.service'; import { AppRoutingModule } from './app-routing.module'; -import { PushNotificationService } from 'ngx-push-notifications'; // AoT requires an exported function for factories export function HttpLoaderFactory(http: HttpClient) { @@ -80,7 +79,6 @@ export function HttpLoaderFactory(http: HttpClient) { useClass: TokenInterceptor, multi: true }, - PushNotificationService, ], bootstrap: [AppComponent] }) diff --git a/src/app/mail/mail-settings/mail-settings.component.ts b/src/app/mail/mail-settings/mail-settings.component.ts index fae5636ea..d45ad2e54 100644 --- a/src/app/mail/mail-settings/mail-settings.component.ts +++ b/src/app/mail/mail-settings/mail-settings.component.ts @@ -29,7 +29,7 @@ import { } from '../../store/datatypes'; import { OpenPgpService } from '../../store/services'; import { MailSettingsService } from '../../store/services/mail-settings.service'; -import { PushNotificationOptions, PushNotificationService } from 'ngx-push-notifications'; +import { PushNotificationService, PushNotificationOptions } from '../../shared/services/push-notification.service'; import { untilDestroyed } from 'ngx-take-until-destroy'; @Component({ diff --git a/src/app/mail/mail-sidebar/mail-sidebar.component.ts b/src/app/mail/mail-sidebar/mail-sidebar.component.ts index 5452d95dc..738cc68d7 100644 --- a/src/app/mail/mail-sidebar/mail-sidebar.component.ts +++ b/src/app/mail/mail-sidebar/mail-sidebar.component.ts @@ -13,9 +13,9 @@ import { GetMails, GetMailsSuccess, GetUnreadMailsCount, GetUnreadMailsCountSucc import { filter } from 'rxjs/operators'; import { WebsocketService } from '../../shared/services/websocket.service'; import { WebSocketState } from '../../store'; -import { PushNotificationOptions, PushNotificationService } from 'ngx-push-notifications'; import { Title } from '@angular/platform-browser'; import { untilDestroyed } from 'ngx-take-until-destroy'; +import { PushNotificationService, PushNotificationOptions } from '../../shared/services/push-notification.service'; @Component({ selector: 'app-mail-sidebar', @@ -114,8 +114,8 @@ export class MailSidebarComponent implements OnInit, OnDestroy { ngOnInit() { - const isGranted: any = this.pushNotificationService.isPermissionGranted; - if (!isGranted()) { + const isGranted: any = this.pushNotificationService.permission; + if (!this.pushNotificationService.isGranted()) { setTimeout(() => { this.pushNotificationService.requestPermission(); }, 3000); diff --git a/src/app/mail/mail.module.ts b/src/app/mail/mail.module.ts index 5ee56a421..f8bb7c239 100644 --- a/src/app/mail/mail.module.ts +++ b/src/app/mail/mail.module.ts @@ -38,6 +38,7 @@ import { MailSettingsService } from '../store/services/mail-settings.service'; import { ComposeMailService } from '../store/services/compose-mail.service'; import { WebsocketService } from '../shared/services/websocket.service'; import { OrganizationUsersComponent } from './mail-settings/organization/organization-users/organization-users.component'; +import { PushNotificationService } from '../shared/services/push-notification.service'; @NgModule({ imports: [ @@ -83,6 +84,7 @@ import { OrganizationUsersComponent } from './mail-settings/organization/organiz MailSettingsService, ComposeMailService, WebsocketService, + PushNotificationService, ], entryComponents: [ ComposeMailDialogComponent, diff --git a/src/app/shared/services/push-notification.service.spec.ts b/src/app/shared/services/push-notification.service.spec.ts new file mode 100644 index 000000000..6493d3000 --- /dev/null +++ b/src/app/shared/services/push-notification.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { PushNotificationService } from './push-notification.service'; + +describe('PushNotificationService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: PushNotificationService = TestBed.get(PushNotificationService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/services/push-notification.service.ts b/src/app/shared/services/push-notification.service.ts new file mode 100644 index 000000000..5292ea37b --- /dev/null +++ b/src/app/shared/services/push-notification.service.ts @@ -0,0 +1,96 @@ +import { + Injectable +} from '@angular/core'; +import { Observable } from 'rxjs/internal/Observable'; + +@Injectable({ + providedIn: 'root' +}) +export class PushNotificationService { + public permission: Permission; + + constructor() { + this.permission = this.isSupported() ? 'default' : 'denied'; + } + + public isSupported(): boolean { + return 'Notification' in window; + } + + isGranted() { + return this.permission === 'granted'; + } + + requestPermission(): void { + const self = this; + if ('Notification' in window) { + Notification.requestPermission(function (status) { + return self.permission = status; + }); + } + } + + create(title: string, options ?: PushNotificationOptions): any { + const self = this; + return new Observable(function (obs) { + if (!('Notification' in window)) { + console.log('Notifications are not available in this environment'); + obs.complete(); + } + if (self.permission !== 'granted') { + console.log('The user hasn\'t granted you permission to send push notifications'); + obs.complete(); + } + const _notify = new Notification(title, options); + _notify.onshow = function (e) { + return obs.next({ + notification: _notify, + event: e + }); + }; + _notify.onclick = function (e) { + return obs.next({ + notification: _notify, + event: e + }); + }; + _notify.onerror = function (e) { + return obs.error({ + notification: _notify, + event: e + }); + }; + _notify.onclose = function () { + return obs.complete(); + }; + }); + } + + generateNotification(source: Array): void { + const self = this; + source.forEach((item) => { + const options = { + body: item.alertContent, + icon: '../resource/images/bell-icon.png' + }; + const notify = self.create(item.title, options).subscribe(); + }); + } +} + +export declare type Permission = 'denied' | 'granted' | 'default'; + +export class PushNotificationOptions { + body?: string; + icon?: string; + tag?: string; + data?: any; + renotify?: boolean; + silent?: boolean; + sound?: string; + noscreen?: boolean; + sticky?: boolean; + dir?: 'auto' | 'ltr' | 'rtl'; + lang?: string; + vibrate?: number[]; +} diff --git a/src/app/shared/services/websocket.service.ts b/src/app/shared/services/websocket.service.ts index 0f4f216db..19710bff1 100644 --- a/src/app/shared/services/websocket.service.ts +++ b/src/app/shared/services/websocket.service.ts @@ -6,7 +6,6 @@ import { WebSocketNewMessage } from '../../store/websocket.store'; import { LoggerService } from './logger.service'; import { Logout } from '../../store/actions'; import { getWebsocketUrl } from '../config'; -import { Observable } from 'rxjs/internal/Observable'; import { Mail } from '../../store/models'; import { untilDestroyed } from 'ngx-take-until-destroy'; From bedc9a84c6eab3d6c5505007b2f5ce8b10cf2ee0 Mon Sep 17 00:00:00 2001 From: Ahsin Siddique Date: Sun, 9 Jun 2019 00:35:41 +0500 Subject: [PATCH 012/137] update settings-page en-translations, dashboard, general, filters --- .../mail-header/mail-header.component.html | 2 +- .../generic-folder.component.html | 2 +- .../mail-settings.component.html | 35 ++++++++++--------- .../pricing-plans.component.html | 14 ++++---- src/assets/i18n/en.json | 29 +++++++++++++-- 5 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/app/mail/mail-header/mail-header.component.html b/src/app/mail/mail-header/mail-header.component.html index 376a31602..4c2d5ccd6 100644 --- a/src/app/mail/mail-header/mail-header.component.html +++ b/src/app/mail/mail-header/mail-header.component.html @@ -33,7 +33,7 @@
  • - + refresh
  • diff --git a/src/app/mail/mail-settings/mail-settings.component.html b/src/app/mail/mail-settings/mail-settings.component.html index 3a450eaee..86bb5ae9b 100644 --- a/src/app/mail/mail-settings/mail-settings.component.html +++ b/src/app/mail/mail-settings/mail-settings.component.html @@ -4,7 +4,7 @@ - Dashboard and plans + Dashboard and plans @@ -220,7 +220,7 @@
    General @@ -304,7 +304,7 @@
    - +
    @@ -472,7 +472,7 @@
    -

    +

    Enter a notification email on which you would like to receive notification each day when you have new emails.

    @@ -480,12 +480,13 @@
    -
    -

    +

    Desktop Notifications are disabled. Please go to your browser settings in order to enable them.

    @@ -493,8 +494,8 @@
    Click here in order to enable desktop notifications.

    - Desktop notifications are enabled. - Click here to Test + Desktop notifications are enabled. + Click here to Test

    @@ -509,18 +510,18 @@
    -
    Delete Account +
    Delete Account
    -

    If you permanently delete your account you will lose all the data in your mailbox. +

    If you permanently delete your account you will lose all the data in your mailbox. In 2 months this username will be available for re-use by anyone who selects it.

    @@ -665,7 +666,7 @@
    -
    Filters
    +
    Filters
    @@ -677,7 +678,7 @@
    Filters
    - My spam filter + My spam filter
    @@ -695,7 +696,7 @@
    Filters
    - Important messages filter + Important messages filter
    @@ -713,7 +714,7 @@
    Filters
    - Auto-labeling test + Auto-labeling test
    @@ -728,8 +729,8 @@
    Filters

    Add a filter to perform actions such as automatically labeling or archiving.

    Add - custom filter + (click)="openCustomFilterModal(customFilterContent)"> + Add custom filter
    diff --git a/src/app/shared/components/pricing-plans/pricing-plans.component.html b/src/app/shared/components/pricing-plans/pricing-plans.component.html index 0de77fb99..6e6a4edee 100644 --- a/src/app/shared/components/pricing-plans/pricing-plans.component.html +++ b/src/app/shared/components/pricing-plans/pricing-plans.component.html @@ -90,18 +90,18 @@

    @@ -217,7 +217,7 @@

    Upgrade Plan - Current Plan + Current Plan

    @@ -244,7 +244,7 @@

    translate="settings.keys.email_address">Email Address
  • - 10 Custom Domains + 10 Custom Domains
  • Unlimited Messages per Day @@ -358,7 +358,7 @@

    /mo
    - Current Plan + Current Plan

  • @@ -412,7 +412,7 @@

    Select Free
    - Current Plan + Current Plan

    diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index e0997fbfa..897f16896 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -41,6 +41,9 @@ }, "settings": { "dashboard": "Dashboard", + "dashboard_plans": "Dashboard and plans", + "general": "General", + "compose_font": "Default Mail Compose Font", "overview": "Overview", "username": "Username", "domains": "Domains", @@ -188,7 +191,25 @@ "edit": "Edit", "delete": "Delete", "notifications": "Notifications", - "notification_email": "Notification email" + "notification_email": "Notification email", + "desktop_notification_title": "Desktop notifications", + "desktop_notifications_en": "Desktop notifications are enabled.", + "click_to_test": "Click here to Test", + "enter_notification_email": "Enter a notification email on which you would like to receive notification each day when you have new emails.", + "desktop_notifications_dis": "Desktop Notifications are disabled.Please go to your browser settings in order to enable them.", + "click_here": "Click here", + "enable_notifications": "in order to enable desktop notifications.", + "delete_account": "Delete Account", + "delete_account_perm": "Permanently Delete Account", + "delete_account_guide": "If you permanently delete your account you will lose all the data in your mailbox. In 2 months this username will be available for re-use by anyone who selects it." + "filters": { + "name": "Filters", + "add_filter": "Add a filter to perform actions such as automatically labeling or archiving.", + "spam_filter": "My spam filter", + "imp_messages": "Important messages filter", + "auto_labeling": "Auto-labeling test", + "custom_filter": "Add custom filter" + } }, "mail_sidebar": { "inbox": "Inbox", @@ -204,7 +225,8 @@ }, "mail_header": { "contacts": "Contacts", - "settings": "Settings" + "settings": "Settings", + "need_help": "Need Help" }, "mail_list": { "select_messages": "Select messages", @@ -222,7 +244,8 @@ "more": "More", "add_star": "Add star", "mark_as_read": "Mark as read", - "mark_as_unread": "Mark as unread" + "mark_as_unread": "Mark as unread", + "refresh": "Refresh" }, "home_header": { "home": "Home", From 1fa678ae7e09ff7f378ff1cffac9295f8c1cbaf7 Mon Sep 17 00:00:00 2001 From: Atif Saddique Date: Sun, 9 Jun 2019 11:17:41 +0500 Subject: [PATCH 013/137] DEV-847 Fix upgrade account modal UI --- .../pricing-plans/pricing-plans.component.html | 5 ++--- .../pricing-plans/pricing-plans.component.scss | 13 ++++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/app/shared/components/pricing-plans/pricing-plans.component.html b/src/app/shared/components/pricing-plans/pricing-plans.component.html index 0de77fb99..9bb05af82 100644 --- a/src/app/shared/components/pricing-plans/pricing-plans.component.html +++ b/src/app/shared/components/pricing-plans/pricing-plans.component.html @@ -428,13 +428,12 @@

    -

    - \ No newline at end of file + From 66f977fa321517b08c9b1e6ce8bba7e92b9ce58d Mon Sep 17 00:00:00 2001 From: Ahsin Siddique Date: Mon, 10 Jun 2019 00:29:56 +0500 Subject: [PATCH 018/137] update domains & Users, Forwarding settings translation tags with en and fr --- .../create-folder.component.html | 23 +-- .../addresses-signature.component.html | 2 +- .../custom-domains.component.html | 5 +- .../folders/folders.component.html | 14 +- .../mail-forwarding.component.html | 66 +++---- .../mail-settings.component.html | 10 +- .../organization-users.component.html | 4 +- .../security/security.component.html | 40 ++--- src/assets/i18n/en.json | 51 +++++- src/assets/i18n/fr.json | 169 ++++++++++++++++-- 10 files changed, 293 insertions(+), 91 deletions(-) diff --git a/src/app/mail/dialogs/create-folder/create-folder.component.html b/src/app/mail/dialogs/create-folder/create-folder.component.html index b3294cf84..bd1a5715e 100644 --- a/src/app/mail/dialogs/create-folder/create-folder.component.html +++ b/src/app/mail/dialogs/create-folder/create-folder.component.html @@ -1,6 +1,6 @@ - Folder name already exists. + Folder name already exists. - Folder name is required + Folder name is required - Folder name must start with an alphabet and can only contain - a-z, A-Z, 0-9, ._- characters or space, and minimum length should be 4 - characters. + Folder name must start with an alphabet and can only contain + a-z, A-Z, 0-9, ._- + characters or space, and minimum length should be 4 characters. - Folder name must be between 4 and 30 characters. + Folder name must be between 4 and 30 characters. diff --git a/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.html b/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.html index 31c070b1b..6e15a3fd4 100644 --- a/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.html +++ b/src/app/mail/mail-settings/addresses-signature/addresses-signature.component.html @@ -38,7 +38,7 @@
    + [placeholder]="'settings.display_name'| translate"/> diff --git a/src/app/mail/mail-settings/custom-domains/custom-domains.component.html b/src/app/mail/mail-settings/custom-domains/custom-domains.component.html index 2c219904a..cbc40bd68 100644 --- a/src/app/mail/mail-settings/custom-domains/custom-domains.component.html +++ b/src/app/mail/mail-settings/custom-domains/custom-domains.component.html @@ -23,8 +23,9 @@
    - This is a premium feature, please upgrade - in order to use this feature. + This is a premium feature, please + upgrade + in order to use this feature.
    -
    Folders +
    Folders
    @@ -59,8 +59,8 @@
    Folders
    - - + +
    @@ -69,7 +69,7 @@
    Folders