From 4f273324794e89d08b7ea70ea223e9d1d6905ceb Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 14:07:25 -0500 Subject: [PATCH 01/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20remoe=20copyab?= =?UTF-8?q?le=20dep=20on=20ember-concurrency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/admin/app/components/copyable/index.js | 26 ++++-------------- ui/desktop/app/components/copyable/index.js | 30 +++++---------------- 2 files changed, 12 insertions(+), 44 deletions(-) diff --git a/ui/admin/app/components/copyable/index.js b/ui/admin/app/components/copyable/index.js index 8424c62ff..e84554e5c 100644 --- a/ui/admin/app/components/copyable/index.js +++ b/ui/admin/app/components/copyable/index.js @@ -2,11 +2,10 @@ import Component from '@glimmer/component'; import ClipboardJS from 'clipboard'; import { action } from '@ember/object'; import { generateComponentID } from 'rose/utilities/component-auto-id'; -import { task, timeout } from 'ember-concurrency'; import { tracked } from '@glimmer/tracking'; +import { later } from '@ember/runloop'; export default class CopyableComponent extends Component { - // =attributes id = generateComponentID(); @@ -21,23 +20,10 @@ export default class CopyableComponent extends Component { clipboard = null; - /** - * A Ember Concurrency-based task that updates copy icon to a success state - * and back after 1 second. This icon flash indicates success on - * copy to clipboard action. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - /* istanbul ignore next */ - @task(function * () { + confirmCopy() { this.copied = true; - yield timeout(1000); - this.copied = false; - /* eslint-disable-next-line prettier/prettier */ - }).drop() confirmCopyTimer; + later(() => (this.copied = false), 1000); + } /** * Checks for ClipboardJS support. @@ -62,7 +48,7 @@ export default class CopyableComponent extends Component { /* istanbul ignore next */ this.clipboard.on('success', (clipboardEvent) => { clipboardEvent.clearSelection(); - this.confirmCopyTimer.perform(); + this.confirmCopy(); }); } @@ -73,7 +59,5 @@ export default class CopyableComponent extends Component { tearDown() { this.clipboard?.destroy(); this.clipboard = null; - this.confirmCopyTimer.cancelAll(); } - } diff --git a/ui/desktop/app/components/copyable/index.js b/ui/desktop/app/components/copyable/index.js index d94b083bc..d176631dd 100644 --- a/ui/desktop/app/components/copyable/index.js +++ b/ui/desktop/app/components/copyable/index.js @@ -1,13 +1,12 @@ import Component from '@glimmer/component'; +import ClipboardJS from 'clipboard'; import { action } from '@ember/object'; import { getOwner } from '@ember/application'; import { generateComponentID } from 'rose/utilities/component-auto-id'; -import { task, timeout } from 'ember-concurrency'; import { tracked } from '@glimmer/tracking'; -import ClipboardJS from 'clipboard'; +import { later } from '@ember/runloop'; export default class CopyableComponent extends Component { - // =attributes id = generateComponentID(); @@ -22,23 +21,10 @@ export default class CopyableComponent extends Component { clipboard = null; - /** - * A Ember Concurrency-based task that updates copy icon to a success state - * and back after 1 second. This icon flash indicates success on - * copy to clipboard action. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - /* istanbul ignore next */ - @task(function * () { + confirmCopy() { this.copied = true; - yield timeout(1000); - this.copied = false; - /* eslint-disable-next-line prettier/prettier */ - }).drop() confirmCopyTimer; + later(() => (this.copied = false), 1000); + } /** * Checks for ClipboardJS support. @@ -77,12 +63,12 @@ export default class CopyableComponent extends Component { // container to a modal (if exists), since this is the only container // a user would be able to interact with. If a modal doesn't exist, // container is set to `undefined` and thus uses the default body element. - container: this.getFirstElementByClassName('rose-dialog') + container: this.getFirstElementByClassName('rose-dialog'), }); /* istanbul ignore next */ this.clipboard.on('success', (clipboardEvent) => { clipboardEvent.clearSelection(); - this.confirmCopyTimer.perform(); + this.confirmCopy(); }); } @@ -93,7 +79,5 @@ export default class CopyableComponent extends Component { tearDown() { this.clipboard?.destroy(); this.clipboard = null; - this.confirmCopyTimer.cancelAll(); } - } From 4d8e62840281e317e452745fc2e5db954384d211 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 15:11:59 -0500 Subject: [PATCH 02/12] =?UTF-8?q?chore:=20=F0=9F=A4=96=20upgrade=20babel?= =?UTF-8?q?=20deps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/api/package.json | 4 +- addons/auth/package.json | 2 +- addons/core/package.json | 2 +- addons/rose/package.json | 4 +- package.json | 2 +- ui/admin/package.json | 4 +- ui/desktop/package.json | 2 +- yarn.lock | 838 ++++++++++++++++++++++++++++++++++++++- 8 files changed, 837 insertions(+), 21 deletions(-) diff --git a/addons/api/package.json b/addons/api/package.json index 2556cfe95..864d511f7 100644 --- a/addons/api/package.json +++ b/addons/api/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "ember-can": "^3.1.0", - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "ember-cli-htmlbars": "^5.7.1", "ember-cli-mirage": "^2.2.0", "ember-data": "^3.20.0", @@ -34,7 +34,7 @@ }, "devDependencies": { "js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1", - "@babel/core": "^7.15.8", + "@babel/core": "^7.16.5", "@ember/optional-features": "^2.0.0", "@ember/test-helpers": "^2.4.2", "@glimmer/component": "^1.0.4", diff --git a/addons/auth/package.json b/addons/auth/package.json index bc19d30ec..af32036c3 100644 --- a/addons/auth/package.json +++ b/addons/auth/package.json @@ -21,7 +21,7 @@ "doc:toc": "doctoc README.md" }, "dependencies": { - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "ember-cli-htmlbars": "^5.7.1", "ember-fetch": "^8.1.1", "ember-simple-auth": "^4.0.0" diff --git a/addons/core/package.json b/addons/core/package.json index fd10d6d9f..45b18e4db 100644 --- a/addons/core/package.json +++ b/addons/core/package.json @@ -31,7 +31,7 @@ "api": "*", "auth": "*", "ember-browser-services": "^2.0.0", - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "ember-cli-htmlbars": "^5.7.1", "ember-feature-flags": "^6.0.0", "ember-intl": "^5.7.0", diff --git a/addons/rose/package.json b/addons/rose/package.json index a085fd175..2eb343050 100644 --- a/addons/rose/package.json +++ b/addons/rose/package.json @@ -29,7 +29,7 @@ "doc:toc": "doctoc README.md" }, "dependencies": { - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "ember-cli-htmlbars": "^5.7.1", "ember-focus-trap": "^0.7.0", "ember-named-blocks-polyfill": "^0.2.4", @@ -39,7 +39,7 @@ "ember-composable-helpers": "^4.5.0" }, "devDependencies": { - "@babel/core": "^7.15.5", + "@babel/core": "^7.16.5", "@ember/optional-features": "^2.0.0", "@ember/test-helpers": "^2.4.2", "@glimmer/component": "^1.0.4", diff --git a/package.json b/package.json index e7819b284..d024df837 100755 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "tmpl": "^1.0.5", "set-value": "^4.0.1", "ansi-regex": "^5.0.1", - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "jsonpointer": "5.0.0", "json-schema": "^0.4.0" }, diff --git a/ui/admin/package.json b/ui/admin/package.json index 8351cc0e5..aa23dd91b 100644 --- a/ui/admin/package.json +++ b/ui/admin/package.json @@ -36,7 +36,7 @@ }, "devDependencies": { "js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1", - "@babel/core": "^7.15.5", + "@babel/core": "^7.16.5", "@ember/optional-features": "^2.0.0", "@ember/render-modifiers": "^1.0.2", "@ember/test-helpers": "^2.4.2", @@ -53,7 +53,7 @@ "ember-breadcrumbs": "^0.2.3", "ember-cli": "~3.28.3", "ember-cli-app-version": "^5.0.0", - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "ember-cli-code-coverage": "^1.0.3", "ember-cli-content-security-policy": "^1.1.1", "ember-cli-dependency-checker": "^3.2.0", diff --git a/ui/desktop/package.json b/ui/desktop/package.json index bc9420931..e1af18657 100755 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -74,7 +74,7 @@ "ember-autofocus-modifier": "^2.0.0", "ember-cli": "~3.28.3", "ember-cli-app-version": "^5.0.0", - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.8", "ember-cli-code-coverage": "^1.0.3", "ember-cli-dependency-checker": "^3.2.0", "ember-cli-htmlbars": "^5.7.1", diff --git a/yarn.lock b/yarn.lock index 6b59e02c7..5de73fdd9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,11 +30,23 @@ dependencies: "@babel/highlight" "^7.14.5" +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/compat-data@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" @@ -78,7 +90,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.0.0", "@babel/core@^7.15.8": +"@babel/core@^7.0.0": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10" integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og== @@ -99,7 +111,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.14.8", "@babel/core@^7.15.5": +"@babel/core@^7.14.8": version "7.15.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== @@ -120,6 +132,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" + integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" @@ -147,6 +180,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb" + integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg== + dependencies: + "@babel/types" "^7.16.7" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" @@ -161,6 +203,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" @@ -169,6 +218,14 @@ "@babel/helper-explode-assignable-expression" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-compilation-targets@^7.12.0", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5", "@babel/helper-compilation-targets@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" @@ -189,6 +246,16 @@ browserslist "^4.16.6" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.0", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz#c9a137a4d137b2d0e2c649acf536d7ba1a76c0f7" @@ -213,6 +280,19 @@ "@babel/helper-replace-supers" "^7.15.4" "@babel/helper-split-export-declaration" "^7.15.4" +"@babel/helper-create-class-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" + integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-create-regexp-features-plugin@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" @@ -221,6 +301,14 @@ "@babel/helper-annotate-as-pure" "^7.14.5" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^4.7.1" + "@babel/helper-define-polyfill-provider@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" @@ -249,6 +337,27 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" + integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" @@ -256,6 +365,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-function-name@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" @@ -274,6 +390,15 @@ "@babel/template" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-get-function-arity@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" @@ -288,6 +413,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-hoist-variables@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" @@ -302,6 +434,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-member-expression-to-functions@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" @@ -316,6 +455,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" @@ -330,6 +476,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" @@ -372,6 +525,20 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.6" +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-optimise-call-expression@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" @@ -386,6 +553,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-plugin-utils@7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" @@ -396,6 +570,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + "@babel/helper-remap-async-to-generator@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" @@ -414,6 +593,15 @@ "@babel/helper-wrap-function" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-remap-async-to-generator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.7.tgz#5ce2416990d55eb6e099128338848ae8ffa58a9a" + integrity sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" @@ -434,6 +622,17 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-simple-access@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" @@ -448,6 +647,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" @@ -462,6 +668,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-split-export-declaration@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" @@ -476,6 +689,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" @@ -486,11 +706,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + "@babel/helper-wrap-function@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" @@ -511,6 +741,16 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-wrap-function@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.7.tgz#8ddf9eaa770ed43de4bc3687f3f3b0d6d5ecf014" + integrity sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helpers@^7.12.5", "@babel/helpers@^7.14.8": version "7.15.3" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" @@ -529,6 +769,15 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helpers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -538,6 +787,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" + integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.6", "@babel/parser@^7.15.8": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" @@ -553,6 +811,18 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.6.tgz#043b9aa3c303c0722e5377fef9197f4cf1796549" integrity sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q== +"@babel/parser@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e" + integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" @@ -571,6 +841,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" "@babel/plugin-proposal-optional-chaining" "^7.14.5" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.9.tgz#7028dc4fa21dc199bbacf98b39bab1267d0eaf9a" @@ -589,7 +868,16 @@ "@babel/helper-remap-async-to-generator" "^7.15.4" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.14.5": +"@babel/plugin-proposal-async-generator-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.7.tgz#739adc1212a9e4892de440cd7dfffb06172df78d" + integrity sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== @@ -597,6 +885,14 @@ "@babel/helper-create-class-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-class-properties@^7.16.5", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-proposal-class-static-block@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz#158e9e10d449c3849ef3ecde94a03d9f1841b681" @@ -615,6 +911,15 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-proposal-decorators@^7.12.12", "@babel/plugin-proposal-decorators@^7.13.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz#59bc4dfc1d665b5a6749cf798ff42297ed1b2c1d" @@ -632,6 +937,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-export-default-from@^7.12.1": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.14.5.tgz#8931a6560632c650f92a8e5948f6e73019d6d321" @@ -648,6 +961,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" @@ -656,6 +977,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-proposal-logical-assignment-operators@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" @@ -664,6 +993,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5", "@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" @@ -672,6 +1009,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" @@ -680,6 +1025,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" @@ -711,6 +1064,17 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.14.5" +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" @@ -719,6 +1083,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining@^7.1.0", "@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.14.5", "@babel/plugin-proposal-optional-chaining@^7.6.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" @@ -728,6 +1100,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" @@ -736,6 +1117,14 @@ "@babel/helper-create-class-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-private-methods@^7.16.5", "@babel/plugin-proposal-private-methods@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" + integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-proposal-private-property-in-object@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz#9f65a4d0493a940b4c01f8aa9d3f1894a587f636" @@ -756,6 +1145,16 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-proposal-private-property-in-object@^7.16.5", "@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" @@ -764,6 +1163,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-unicode-property-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -911,6 +1318,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-async-to-generator@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" @@ -920,6 +1334,15 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-remap-async-to-generator" "^7.14.5" +"@babel/plugin-transform-async-to-generator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.7.tgz#646e1262ac341b587ff5449844d4492dbb10ac4b" + integrity sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.7" + "@babel/plugin-transform-block-scoped-functions@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" @@ -927,6 +1350,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.14.5", "@babel/plugin-transform-block-scoping@^7.15.3", "@babel/plugin-transform-block-scoping@^7.8.3": version "7.15.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" @@ -934,6 +1364,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.9.tgz#2a391ffb1e5292710b00f2e2c210e1435e7d449f" @@ -960,6 +1397,20 @@ "@babel/helper-split-export-declaration" "^7.15.4" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" @@ -967,6 +1418,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.14.7": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" @@ -974,6 +1432,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" @@ -982,6 +1447,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-dotall-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-duplicate-keys@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" @@ -989,6 +1462,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" @@ -997,6 +1477,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-flow-strip-types@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz#0dc9c1d11dcdc873417903d6df4bed019ef0f85e" @@ -1019,6 +1507,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-function-name@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" @@ -1027,6 +1522,15 @@ "@babel/helper-function-name" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" @@ -1034,6 +1538,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-member-expression-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" @@ -1041,6 +1552,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.13.0", "@babel/plugin-transform-modules-amd@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" @@ -1050,6 +1568,15 @@ "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.14.5", "@babel/plugin-transform-modules-commonjs@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" @@ -1070,6 +1597,16 @@ "@babel/helper-simple-access" "^7.14.8" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.7.tgz#fd119e6a433c527d368425b45df361e1e95d3c1a" + integrity sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" @@ -1092,6 +1629,17 @@ "@babel/helper-validator-identifier" "^7.14.9" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-umd@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" @@ -1100,6 +1648,14 @@ "@babel/helper-module-transforms" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" @@ -1107,6 +1663,13 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.14.5" +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.7.tgz#749d90d94e73cf62c60a0cc8d6b94d29305a81f2" + integrity sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/plugin-transform-new-target@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" @@ -1114,6 +1677,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-object-assign@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz#62537d54b6d85de04f4df48bfdba2eebff17b760" @@ -1129,6 +1699,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-replace-supers" "^7.14.5" +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" @@ -1143,6 +1721,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-property-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" @@ -1150,6 +1735,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-react-display-name@^7.14.5": version "7.15.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" @@ -1190,6 +1782,13 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + dependencies: + regenerator-transform "^0.14.2" + "@babel/plugin-transform-reserved-words@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" @@ -1197,6 +1796,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-runtime@^7.12.1", "@babel/plugin-transform-runtime@^7.13.9": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" @@ -1216,6 +1822,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.14.6": version "7.14.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" @@ -1232,6 +1845,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-transform-sticky-regex@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" @@ -1239,6 +1860,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" @@ -1246,6 +1874,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-typeof-symbol@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" @@ -1253,6 +1888,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.0.tgz#553f230b9d5385018716586fc48db10dd228eb7e" @@ -1295,6 +1937,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-transform-unicode-regex@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" @@ -1303,6 +1952,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/polyfill@^7.11.5": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96" @@ -1390,7 +2047,7 @@ core-js-compat "^3.16.0" semver "^6.3.0" -"@babel/preset-env@^7.10.2", "@babel/preset-env@^7.12.0", "@babel/preset-env@^7.12.11": +"@babel/preset-env@^7.10.2", "@babel/preset-env@^7.12.11": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.0.tgz#e2165bf16594c9c05e52517a194bf6187d6fe464" integrity sha512-FhEpCNFCcWW3iZLg0L2NPE9UerdtsCR6ZcsGHUX6Om6kbCQeL5QZDqFDmeNHC6/fy6UH3jEge7K4qG5uC9In0Q== @@ -1469,6 +2126,86 @@ core-js-compat "^3.16.0" semver "^6.3.0" +"@babel/preset-env@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.7.tgz#c491088856d0b3177822a2bf06cb74d76327aa56" + integrity sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.7" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.7" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.7" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.7" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.7" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" + semver "^6.3.0" + "@babel/preset-flow@^7.0.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.14.5.tgz#a1810b0780c8b48ab0bece8e7ab8d0d37712751c" @@ -1489,6 +2226,17 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + "@babel/preset-react@^7.12.10": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" @@ -1553,6 +2301,15 @@ "@babel/parser" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.14.5", "@babel/traverse@^7.15.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" @@ -1583,6 +2340,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76" + integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.1.6", "@babel/types@^7.12.1", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.14.9", "@babel/types@^7.15.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" @@ -1599,6 +2372,14 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.16.0", "@babel/types@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" + integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" @@ -5886,6 +6667,15 @@ babel-plugin-polyfill-corejs2@^0.2.2: "@babel/helper-define-polyfill-provider" "^0.2.2" semver "^6.1.1" +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.0" + semver "^6.1.1" + babel-plugin-polyfill-corejs3@^0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" @@ -5910,6 +6700,14 @@ babel-plugin-polyfill-corejs3@^0.2.5: "@babel/helper-define-polyfill-provider" "^0.2.2" core-js-compat "^3.16.2" +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" + babel-plugin-polyfill-regenerator@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" @@ -5917,6 +6715,13 @@ babel-plugin-polyfill-regenerator@^0.2.2: dependencies: "@babel/helper-define-polyfill-provider" "^0.2.2" +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" @@ -6992,7 +7797,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.14.2, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.16.7, browserslist@^4.17.3: +browserslist@4.14.2, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.16.7, browserslist@^4.17.3, browserslist@^4.17.5, browserslist@^4.19.1: version "4.17.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw== @@ -8114,6 +8919,14 @@ core-js-compat@^3.16.2: browserslist "^4.17.3" semver "7.0.0" +core-js-compat@^3.18.0, core-js-compat@^3.19.1: + version "3.20.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b" + integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + core-js-pure@^3.8.2: version "3.16.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.16.1.tgz#b997df2669c957a5b29f06e95813a171f993592e" @@ -9324,20 +10137,22 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879" integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw== -ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.2, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: - version "7.26.6" - resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.6.tgz#322fbbd3baad9dd99e3276ff05bc6faef5e54b39" - integrity sha512-040svtfj2RC35j/WMwdWJFusZaXmNoytLAMyBDGLMSlRvznudTxZjGlPV6UupmtTBApy58cEF8Fq4a+COWoEmQ== +ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.2, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.26.8, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: + version "7.26.11" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.11.tgz#50da0fe4dcd99aada499843940fec75076249a9f" + integrity sha512-JJYeYjiz/JTn34q7F5DSOjkkZqy8qwFOOxXfE6pe9yEJqWGu4qErKxlz8I22JoVEQ/aBUO+OcKTpmctvykM9YA== dependencies: "@babel/core" "^7.12.0" "@babel/helper-compilation-targets" "^7.12.0" - "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-class-properties" "^7.16.5" "@babel/plugin-proposal-decorators" "^7.13.5" + "@babel/plugin-proposal-private-methods" "^7.16.5" + "@babel/plugin-proposal-private-property-in-object" "^7.16.5" "@babel/plugin-transform-modules-amd" "^7.13.0" "@babel/plugin-transform-runtime" "^7.13.9" "@babel/plugin-transform-typescript" "^7.13.0" "@babel/polyfill" "^7.11.5" - "@babel/preset-env" "^7.12.0" + "@babel/preset-env" "^7.16.5" "@babel/runtime" "7.12.18" amd-name-resolver "^1.3.1" babel-plugin-debug-macros "^0.3.4" @@ -9348,6 +10163,7 @@ ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, broccoli-debug "^0.6.4" broccoli-funnel "^2.0.2" broccoli-source "^2.1.2" + calculate-cache-key-for-tree "^2.0.0" clone "^2.1.2" ember-cli-babel-plugin-helpers "^1.1.1" ember-cli-version-checker "^4.1.0" From 618d418093b6f1effe3f5e6c0520ce972be82999 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 15:55:05 -0500 Subject: [PATCH 03/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20rewrite=20sess?= =?UTF-8?q?ions=20polling=20for=20ember-pollster?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/admin/app/routes/scopes/scope/sessions.js | 104 ++++------ ui/admin/package.json | 3 +- ui/admin/tests/acceptance/sessions-test.js | 63 +++--- yarn.lock | 198 +++++++++++++++---- 4 files changed, 229 insertions(+), 139 deletions(-) diff --git a/ui/admin/app/routes/scopes/scope/sessions.js b/ui/admin/app/routes/scopes/scope/sessions.js index 29a0d87a5..71038382c 100644 --- a/ui/admin/app/routes/scopes/scope/sessions.js +++ b/ui/admin/app/routes/scopes/scope/sessions.js @@ -2,8 +2,8 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { all, hash } from 'rsvp'; -import { task, timeout } from 'ember-concurrency'; import { A } from '@ember/array'; +import runEvery from 'ember-pollster/decorators/route/run-every'; import { notifySuccess, notifyError } from 'core/decorators/notify'; import config from '../../../config/environment'; import { resourceFilter } from 'core/decorators/resource-filter'; @@ -11,7 +11,6 @@ import { resourceFilter } from 'core/decorators/resource-filter'; const POLL_TIMEOUT_SECONDS = config.sessionPollingTimeoutSeconds; export default class ScopesScopeSessionsRoute extends Route { - // =services @service intl; @@ -23,26 +22,14 @@ export default class ScopesScopeSessionsRoute extends Route { @resourceFilter({ allowed: ['active', 'pending', 'canceling', 'terminated'], - defaultValue: ['active','pending', 'canceling'] - }) status; + defaultValue: ['active', 'pending', 'canceling'], + }) + status; - /** - * A simple Ember Concurrency-based polling task that refreshes the route - * every POLL_TIMEOUT_SECONDS seconds. This is necessary to display changes - * to session `status` that may occur. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - @task(function * () { - while(true) { - yield timeout(POLL_TIMEOUT_SECONDS * 1000); - yield this.refresh(); - } - /* eslint-disable-next-line prettier/prettier */ - }).drop() poller; + @runEvery(POLL_TIMEOUT_SECONDS * 1000) + poller() { + return this.refresh(); + } // =methods @@ -68,47 +55,36 @@ export default class ScopesScopeSessionsRoute extends Route { ); const sessionAggregates = await all( - sessions.map(session => hash({ - session, - user: session.user_id - ? ( - this.store.peekRecord('user', session.user_id) || + sessions.map((session) => + hash({ + session, + user: session.user_id + ? this.store.peekRecord('user', session.user_id) || this.store.findRecord('user', session.user_id) - ) - : null, - target: session.target_id - ? ( - this.store.peekRecord('target', session.target_id) || + : null, + target: session.target_id + ? this.store.peekRecord('target', session.target_id) || this.store.findRecord('target', session.target_id) - ) - : null, - })) + : null, + }) + ) ); // Sort sessions by time created... - let sortedSessionAggregates = - A(sessionAggregates).sortBy('session.created_time').reverse(); + let sortedSessionAggregates = A(sessionAggregates) + .sortBy('session.created_time') + .reverse(); // Then move active sessions to the top... sortedSessionAggregates = [ - ...sortedSessionAggregates.filter((aggregate) => aggregate.session.status === 'active'), - ...sortedSessionAggregates.filter((aggregate) => aggregate.session.status !== 'active'), + ...sortedSessionAggregates.filter( + (aggregate) => aggregate.session.status === 'active' + ), + ...sortedSessionAggregates.filter( + (aggregate) => aggregate.session.status !== 'active' + ), ]; return sortedSessionAggregates; } - /** - * When this route is activated (entered), begin polling for changes. - */ - activate() { - this.poller.perform(); - } - - /** - * When this route is deactivated (exited), stop polling for changes. - */ - deactivate() { - this.poller.cancelAll(); - } - // =actions /** @@ -122,21 +98,21 @@ export default class ScopesScopeSessionsRoute extends Route { await session.cancelSession(); } - /** + /** * Sets the specified resource filter field to the specified value. * @param {string} field * @param value */ - @action - filterBy(field, value) { - this[field] = value; - } + @action + filterBy(field, value) { + this[field] = value; + } - /** - * Clears and filter selections. - */ - @action - clearAllFilters() { - this.status = []; - } + /** + * Clears and filter selections. + */ + @action + clearAllFilters() { + this.status = []; + } } diff --git a/ui/admin/package.json b/ui/admin/package.json index aa23dd91b..9347d3adf 100644 --- a/ui/admin/package.json +++ b/ui/admin/package.json @@ -35,7 +35,6 @@ "ember-named-blocks-polyfill": "^0.2.4" }, "devDependencies": { - "js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1", "@babel/core": "^7.16.5", "@ember/optional-features": "^2.0.0", "@ember/render-modifiers": "^1.0.2", @@ -72,6 +71,7 @@ "ember-modifier": "^2.1.2", "ember-notify": "^6.0.1", "ember-page-title": "^6.2.2", + "ember-pollster": "^0.0.1-beta.2", "ember-qunit": "^5.1.4", "ember-resolver": "^8.0.3", "ember-source": "~3.28.4", @@ -84,6 +84,7 @@ "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-qunit": "^6.2.0", "faker": "^5.5.3", + "js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", "prettier": "^2.4.0", diff --git a/ui/admin/tests/acceptance/sessions-test.js b/ui/admin/tests/acceptance/sessions-test.js index a5dfa25ff..904eaaf56 100644 --- a/ui/admin/tests/acceptance/sessions-test.js +++ b/ui/admin/tests/acceptance/sessions-test.js @@ -3,7 +3,6 @@ import { visit, currentURL, findAll, find, click } from '@ember/test-helpers'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; -import { run, later } from '@ember/runloop'; import { Response } from 'miragejs'; import { authenticateSession, @@ -81,45 +80,36 @@ module('Acceptance | sessions', function (hooks) { test('visiting sessions', async function (assert) { assert.expect(2); authenticateSession({}); - later(async () => { - run.cancelTimers(); - await a11yAudit(); - assert.equal(currentURL(), urls.sessions); - assert.equal(findAll('tbody tr').length, instances.sessions.length); - }, 750); await visit(urls.sessions); + await a11yAudit(); + assert.equal(currentURL(), urls.sessions); + assert.equal(findAll('tbody tr').length, instances.sessions.length); }); test('Users cannot navigate to sessions without proper authorization', async function (assert) { assert.expect(2); instances.scopes.project.authorized_collection_actions.sessions = []; authenticateSession({}); - later(async () => { - run.cancelTimers(); - assert.notOk( - instances.scopes.project.authorized_collection_actions.sessions.includes( - 'list' - ) - ); - assert.notOk(find(`[href="${urls.sessions}"]`)); - }, 750); await visit(urls.orgScope); + assert.notOk( + instances.scopes.project.authorized_collection_actions.sessions.includes( + 'list' + ) + ); + assert.notOk(find(`[href="${urls.sessions}"]`)); }); test('Users can navigate to sessions with proper authorization', async function (assert) { assert.expect(2); instances.scopes.project.authorized_collection_actions.sessions = ['list']; authenticateSession({}); - later(async () => { - run.cancelTimers(); - assert.ok( - instances.scopes.project.authorized_collection_actions.sessions.includes( - 'list' - ) - ); - assert.ok(find(`[href="${urls.sessions}"]`)); - }, 750); await visit(urls.orgScope); + assert.ok( + instances.scopes.project.authorized_collection_actions.sessions.includes( + 'list' + ) + ); + assert.ok(find(`[href="${urls.sessions}"]`)); }); test('visiting sessions without users or targets is OK', async function (assert) { @@ -129,37 +119,28 @@ module('Acceptance | sessions', function (hooks) { targetId: null, }); authenticateSession({}); - later(async () => { - run.cancelTimers(); - await a11yAudit(); - assert.equal(currentURL(), urls.sessions); - assert.equal(findAll('tbody tr').length, instances.sessions.length); - }, 750); await visit(urls.sessions); + await a11yAudit(); + assert.equal(currentURL(), urls.sessions); + assert.equal(findAll('tbody tr').length, instances.sessions.length); }); test('cancelling a session', async function (assert) { assert.expect(2); authenticateSession({}); - later(async () => { - run.cancelTimers(); - await click('tbody tr:first-child td:last-child button'); - assert.ok(find('[role="alert"].is-success')); - }, 750); await visit(urls.sessions); assert.equal(currentURL(), urls.sessions); + await click('tbody tr:first-child td:last-child button'); + assert.ok(find('[role="alert"].is-success')); }); test('cancelling a session with error shows notification', async function (assert) { assert.expect(2); this.server.post('/sessions/:id_method', () => new Response(400)); authenticateSession({}); - later(async () => { - run.cancelTimers(); - await click('tbody tr:first-child td:last-child button'); - assert.ok(find('[role="alert"].is-error')); - }, 750); await visit(urls.sessions); assert.equal(currentURL(), urls.sessions); + await click('tbody tr:first-child td:last-child button'); + assert.ok(find('[role="alert"].is-error')); }); }); diff --git a/yarn.lock b/yarn.lock index 5de73fdd9..f4fde0895 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5867,9 +5867,9 @@ agentkeepalive@^3.4.1: humanize-ms "^1.2.1" agentkeepalive@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" - integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.0.tgz#616ce94ccb41d1a39a45d203d8076fe98713062d" + integrity sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw== dependencies: debug "^4.1.0" depd "^1.1.2" @@ -6500,6 +6500,11 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-import-util@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-0.2.0.tgz#b468bb679919601a3570f9e317536c54f2862e23" + integrity sha512-CtWYYHU/MgK88rxMrLfkD356dApswtR/kWZ/c6JifG1m10e7tBBrs/366dFzWMAoqYmG5/JSh+94tUSpIwh+ag== + babel-loader@^8.0.6, babel-loader@^8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" @@ -6560,6 +6565,16 @@ babel-plugin-ember-modules-api-polyfill@^3.5.0: dependencies: ember-rfc176-data "^0.3.17" +babel-plugin-ember-template-compilation@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-template-compilation/-/babel-plugin-ember-template-compilation-1.0.1.tgz#64baf434ff1b751c6292936f8b9eb75a2f8149dc" + integrity sha512-V/kY6CDyUNrl5Kx6UPKUPhzSKNfdrxNii+S5zK4dgJvVyoxFv7Ykg06Ct/yskY0LkA4wUPdYN7JOBtYJwHk2sg== + dependencies: + babel-import-util "^0.2.0" + line-column "^1.0.2" + magic-string "^0.25.7" + string.prototype.matchall "^4.0.5" + babel-plugin-emotion@^10.0.27: version "10.2.2" resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" @@ -6607,6 +6622,17 @@ babel-plugin-htmlbars-inline-precompile@^5.0.0: parse-static-imports "^1.1.0" string.prototype.matchall "^4.0.4" +babel-plugin-htmlbars-inline-precompile@^5.3.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-5.3.1.tgz#5ba272e2e4b6221522401f5f1d98a73b1de38787" + integrity sha512-QWjjFgSKtSRIcsBhJmEwS2laIdrA6na8HAlc/pEAhjHgQsah/gMiBFRZvbQTy//hWxR4BMwV7/Mya7q5H8uHeA== + dependencies: + babel-plugin-ember-modules-api-polyfill "^3.5.0" + line-column "^1.0.2" + magic-string "^0.25.7" + parse-static-imports "^1.1.0" + string.prototype.matchall "^4.0.5" + babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -7798,12 +7824,12 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@4.14.2, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.16.7, browserslist@^4.17.3, browserslist@^4.17.5, browserslist@^4.19.1: - version "4.17.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" - integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw== + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== dependencies: - caniuse-lite "^1.0.30001274" - electron-to-chromium "^1.3.886" + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" escalade "^3.1.1" node-releases "^2.0.1" picocolors "^1.0.0" @@ -8116,10 +8142,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001274: - version "1.0.30001279" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz#eb06818da481ef5096a3b3760f43e5382ed6b0ce" - integrity sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001286: + version "1.0.30001295" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001295.tgz#68a60f8f0664f342b2835c5d8898b4faea7b3d51" + integrity sha512-lSP16vcyC0FEy0R4ECc9duSPoKoZy+YkpGkue9G4D81OfPnliopaZrU10+qtPdT8PbGXad/PNx43TIQrOmJZSQ== capture-exit@^2.0.0: version "2.0.0" @@ -9383,7 +9409,7 @@ debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: dependencies: ms "^2.1.1" -debuglog@^1.0.1: +debuglog@*, debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= @@ -9964,10 +9990,10 @@ electron-rebuild@^2.0.3: tar "^6.0.5" yargs "^16.0.0" -electron-to-chromium@^1.3.886: - version "1.3.895" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.895.tgz#9b0f8f2e32d8283bbb200156fd5d8dfd775f31ed" - integrity sha512-9Ww3fB8CWctjqHwkOt7DQbMZMpal2x2reod+/lU4b9axO1XJEDUpPMBxs7YnjLhhqpKXIIB5SRYN/B4K0QpvyQ== +electron-to-chromium@^1.4.17: + version "1.4.31" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.31.tgz#8d5ccc3f8253cd142b07afaa84f200fd33a7f2a6" + integrity sha512-t3XVQtk+Frkv6aTD4RRk0OqosU+VLe1dQFW83MDer78ZD6a52frgXuYOIsLYTQiH2Lm+JB2OKYcn7zrX+YGAiQ== element-resize-detector@^1.2.2: version "1.2.3" @@ -10275,6 +10301,27 @@ ember-cli-htmlbars@^5.3.1, ember-cli-htmlbars@^5.3.2, ember-cli-htmlbars@^5.7.1: strip-bom "^4.0.0" walk-sync "^2.2.0" +ember-cli-htmlbars@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.0.1.tgz#5487831d477e61682bc867fd138808269e5d2152" + integrity sha512-IDsl9uty+MXtMfp/BUTEc/Q36EmlHYj8ZdPekcoRa8hmdsigHnK4iokfaB7dJFktlf6luruei+imv7JrJrBQPQ== + dependencies: + "@ember/edition-utils" "^1.2.0" + babel-plugin-ember-template-compilation "^1.0.0" + babel-plugin-htmlbars-inline-precompile "^5.3.0" + broccoli-debug "^0.6.5" + broccoli-persistent-filter "^3.1.2" + broccoli-plugin "^4.0.3" + ember-cli-version-checker "^5.1.2" + fs-tree-diff "^2.0.1" + hash-for-dep "^1.5.1" + heimdalljs-logger "^0.1.10" + json-stable-stringify "^1.0.1" + semver "^7.3.4" + silent-error "^1.1.1" + strip-bom "^4.0.0" + walk-sync "^2.2.0" + ember-cli-inject-live-reload@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.1.0.tgz#ef63c733c133024d5726405a3c247fa12e88a385" @@ -10973,6 +11020,14 @@ ember-page-title@^6.2.2: dependencies: ember-cli-babel "^7.23.1" +ember-pollster@^0.0.1-beta.2: + version "0.0.1-beta.2" + resolved "https://registry.yarnpkg.com/ember-pollster/-/ember-pollster-0.0.1-beta.2.tgz#07b8a49683cfb04e33a60713fb044e07a0a8f330" + integrity sha512-vnWBzPIJ0NU6065OLgLd84Snalfxi5Z606wiDSMnW1oSl20D3cAsGEwmpujZsfzlof7Y2McE/ghNjMBKYveyIQ== + dependencies: + ember-cli-babel "^7.26.8" + ember-cli-htmlbars "^6.0.1" + ember-qunit@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-5.1.4.tgz#bc69f963a0f5409ce33bee1e4d8146b1407147bf" @@ -11414,6 +11469,32 @@ es-abstract@^1.17.0-next.0, es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es- string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -13111,6 +13192,14 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -14193,9 +14282,9 @@ ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== immer@8.0.1, immer@^9.0.6: - version "9.0.6" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73" - integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== + version "9.0.7" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.7.tgz#b6156bd7db55db7abc73fd2fdadf4e579a701075" + integrity sha512-KGllzpbamZDvOIxnmJ0jI840g7Oikx58lBPWV0hUh7dtAyZpFqqrBZdKka5GlTwMTZ1Tjc/bKKW4VSFAt6BqMA== import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" @@ -14215,7 +14304,7 @@ import-lazy@^4.0.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== -imurmurhash@^0.1.4: +imurmurhash@*, imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -14530,7 +14619,7 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.2.3: +is-callable@^1.1.4, is-callable@^1.2.3, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -14862,7 +14951,7 @@ is-reference@^1.1.0: dependencies: "@types/estree" "*" -is-regex@^1.1.2, is-regex@^1.1.3: +is-regex@^1.1.2, is-regex@^1.1.3, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -14895,6 +14984,11 @@ is-set@^2.0.2: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -14905,7 +14999,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.6: +is-string@^1.0.5, is-string@^1.0.6, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -14941,6 +15035,13 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -16017,6 +16118,11 @@ lodash._baseflatten@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" +lodash._baseindexof@*: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" + integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= + lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -16025,11 +16131,16 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~3.0.0" -lodash._bindcallback@^3.0.0: +lodash._bindcallback@*, lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= +lodash._cacheindexof@*: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" + integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= + lodash._createassigner@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" @@ -16039,12 +16150,19 @@ lodash._createassigner@^3.0.0: lodash._isiterateecall "^3.0.0" lodash.restparam "^3.0.0" +lodash._createcache@*: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" + integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= + dependencies: + lodash._getnative "^3.0.0" + lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@^3.0.0: +lodash._getnative@*, lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= @@ -16262,7 +16380,7 @@ lodash.pick@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= -lodash.restparam@^3.0.0: +lodash.restparam@*, lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= @@ -17073,9 +17191,9 @@ minipass@^3.0.0, minipass@^3.1.1: yallist "^4.0.0" minipass@^3.1.0, minipass@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" - integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== dependencies: yallist "^4.0.0" @@ -21540,6 +21658,20 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 regexp.prototype.flags "^1.3.1" side-channel "^1.0.4" +string.prototype.matchall@^4.0.5: + version "4.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" + integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + string.prototype.padend@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" @@ -22649,9 +22781,9 @@ underscore.string@^3.2.2, underscore.string@~3.3.4: util-deprecate "^1.0.2" underscore@>=1.8.3, underscore@^1.12.1, underscore@~1.12.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + version "1.13.2" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.2.tgz#276cea1e8b9722a8dbed0100a407dda572125881" + integrity sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g== unfetch@^4.2.0: version "4.2.0" From fe509d2e86e71a65a05db2eda6743f78956b59dc Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 19:21:03 -0500 Subject: [PATCH 04/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20rewrite=20sess?= =?UTF-8?q?ions=20polling=20for=20ember-pollster?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../routes/scopes/scope/projects/sessions.js | 68 +++++---------- ui/desktop/package.json | 3 +- .../acceptance/projects/sessions-test.js | 84 ++++++------------- 3 files changed, 50 insertions(+), 105 deletions(-) diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/sessions.js index b353fb8a7..668d0cc52 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions.js @@ -1,15 +1,14 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; -import { task, timeout } from 'ember-concurrency'; -import config from '../../../../config/environment'; import { action } from '@ember/object'; +import runEvery from 'ember-pollster/decorators/route/run-every'; import { notifySuccess, notifyError } from 'core/decorators/notify'; import { resourceFilter } from 'core/decorators/resource-filter'; +import config from '../../../../config/environment'; const POLL_TIMEOUT_SECONDS = config.sessionPollingTimeoutSeconds; export default class ScopesScopeProjectsSessionsRoute extends Route { - // =services @service ipc; @@ -20,32 +19,16 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { @resourceFilter({ allowed: ['active', 'pending', 'canceling', 'terminated'], - defaultValue: ['active','pending', 'canceling'] - }) status; + defaultValue: ['active', 'pending', 'canceling'], + }) + status; @resourceFilter({ allowed: (route) => route.modelFor('scopes.scope.projects'), serialize: ({ id }) => id, - findBySerialized: ({ id }, value) => id === value - }) project; - - /** - * A simple Ember Concurrency-based polling task that refreshes the route - * every POLL_TIMEOUT_SECONDS seconds. This is necessary to display changes - * to session `status` that may occur. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - @task(function * () { - while(true) { - yield timeout(POLL_TIMEOUT_SECONDS * 1000); - yield this.refresh(); - } - /* eslint-disable-next-line prettier/prettier */ - }).drop() poller; + findBySerialized: ({ id }, value) => id === value, + }) + project; // =methods @@ -67,28 +50,23 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { const { user_id } = this.session.data.authenticated; const projects = this.project || []; await this.store.query('target', { recursive: true, scope_id }); - return await this.resourceFilterStore.queryBy('session', { - user_id, - status, - scope_id: projects.map(({ id }) => id) - }, { - recursive: true, - scope_id - }); + return await this.resourceFilterStore.queryBy( + 'session', + { + user_id, + status, + scope_id: projects.map(({ id }) => id), + }, + { + recursive: true, + scope_id, + } + ); } - /** - * When this route is activated (entered), begin polling for changes. - */ - activate() { - this.poller.perform(); - } - - /** - * When this route is deactivated (exited), stop polling for changes. - */ - deactivate() { - this.poller.cancelAll(); + @runEvery(POLL_TIMEOUT_SECONDS * 1000) + poller() { + return this.refresh(); } // =actions diff --git a/ui/desktop/package.json b/ui/desktop/package.json index e1af18657..8bbca0a80 100755 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -53,7 +53,6 @@ "ember-named-blocks-polyfill": "^0.2.4" }, "devDependencies": { - "js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1", "@doyensec/electronegativity": "^1.9.1", "@ember/optional-features": "^2.0.0", "@ember/render-modifiers": "^1.0.2", @@ -93,6 +92,7 @@ "ember-modifier": "^2.1.2", "ember-notify": "^6.0.1", "ember-page-title": "^6.2.2", + "ember-pollster": "^0.0.1-beta.2", "ember-qunit": "^5.1.4", "ember-resolver": "^8.0.3", "ember-source": "~3.28.4", @@ -105,6 +105,7 @@ "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-qunit": "^6.2.0", "faker": "^5.5.3", + "js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", "playwright": "^1.15.0", diff --git a/ui/desktop/tests/acceptance/projects/sessions-test.js b/ui/desktop/tests/acceptance/projects/sessions-test.js index 2b31e5eaa..e2e4db9e0 100644 --- a/ui/desktop/tests/acceptance/projects/sessions-test.js +++ b/ui/desktop/tests/acceptance/projects/sessions-test.js @@ -9,7 +9,6 @@ import { //getRootElement //setupOnerror, } from '@ember/test-helpers'; -import { run, later } from '@ember/runloop'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { Response } from 'miragejs'; @@ -167,112 +166,79 @@ module('Acceptance | projects | sessions', function (hooks) { test('visiting index', async function (assert) { assert.expect(2); const sessionsCount = this.server.schema.sessions.all().models.length; - // This later/cancelTimers technique allows us to test a page with - // active polling. Normally an acceptance test waits for all runloop timers - // to stop before returning from an awaited test, but polling means that - // runloop timers exist indefinitely. We thus schedule a cancelation before - // proceeding with our tests. - later(async () => { - run.cancelTimers(); - // await a11yAudit(); - assert.equal(currentURL(), urls.sessions); - assert.equal(findAll('tbody tr').length, sessionsCount); - }, 750); await visit(urls.sessions); + assert.equal(currentURL(), urls.sessions); + assert.equal(findAll('tbody tr').length, sessionsCount); }); test('visiting empty sessions', async function (assert) { assert.expect(1); this.server.get('/sessions', () => new Response(200)); - later(async () => { - run.cancelTimers(); - await a11yAudit(); - assert.ok( - find('.rose-message-title').textContent.trim(), - 'No Sessions Available' - ); - }, 750); await visit(urls.sessions); + await a11yAudit(); + assert.ok( + find('.rose-message-title').textContent.trim(), + 'No Sessions Available' + ); }); test('visiting sessions without targets is OK', async function (assert) { assert.expect(2); instances.session.update({ targetId: undefined }); const sessionsCount = this.server.schema.sessions.all().models.length; - later(async () => { - run.cancelTimers(); - await a11yAudit(); - assert.equal(currentURL(), urls.sessions); - assert.equal(findAll('tbody tr').length, sessionsCount); - }, 750); await visit(urls.sessions); + await a11yAudit(); + assert.equal(currentURL(), urls.sessions); + assert.equal(findAll('tbody tr').length, sessionsCount); }); test('can identify active sessions', async function (assert) { assert.expect(1); - later(async () => { - run.cancelTimers(); - assert.ok( - find('tbody tr:first-child th:first-child .session-status-active') - ); - }, 750); await visit(urls.sessions); + assert.ok( + find('tbody tr:first-child th:first-child .session-status-active') + ); }); test('cannot identify pending sessions', async function (assert) { assert.expect(1); instances.session.update({ status: 'pending' }); - later(async () => { - run.cancelTimers(); - assert.notOk( - find('tbody tr:first-child th:first-child .session-status-active') - ); - }, 750); await visit(urls.sessions); + assert.notOk( + find('tbody tr:first-child th:first-child .session-status-active') + ); }); test('cannot identify terminated sessions', async function (assert) { assert.expect(1); instances.session.update({ status: 'terminated' }); - later(async () => { - run.cancelTimers(); - assert.notOk( - find('tbody tr:first-child th:first-child .session-status-active') - ); - }, 750); await visit(urls.sessions); + assert.notOk( + find('tbody tr:first-child th:first-child .session-status-active') + ); }); test('cancelling a session', async function (assert) { assert.expect(1); stubs.ipcService.withArgs('stop'); - later(async () => { - run.cancelTimers(); - await click('tbody tr:first-child td:last-child button'); - assert.ok(find('[role="alert"].is-success')); - }, 750); await visit(urls.sessions); + await click('tbody tr:first-child td:last-child button'); + assert.ok(find('[role="alert"].is-success')); }); test('cancelling a session with error shows notification', async function (assert) { assert.expect(1); this.server.post('/sessions/:id_method', () => new Response(400)); - later(async () => { - run.cancelTimers(); - await click('tbody tr:first-child td:last-child button'); - assert.ok(find('[role="alert"].is-error')); - }, 750); await visit(urls.sessions); + await click('tbody tr:first-child td:last-child button'); + assert.ok(find('[role="alert"].is-error')); }); test('cancelling a session with ipc error shows notification', async function (assert) { assert.expect(1); stubs.ipcService.withArgs('stop').throws(); - later(async () => { - run.cancelTimers(); - await click('tbody tr:first-child td:last-child button'); - assert.ok(find('[role="alert"].is-error')); - }, 750); await visit(urls.sessions); + await click('tbody tr:first-child td:last-child button'); + assert.ok(find('[role="alert"].is-error')); }); }); From 71361799f754967fef255976fbf2417c123fc8a1 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 19:40:45 -0500 Subject: [PATCH 05/12] refactor: rewrite targets polling for ember-pollster --- .../routes/scopes/scope/projects/targets.js | 84 ++++------ .../tests/acceptance/projects/targets-test.js | 143 +++++++----------- 2 files changed, 85 insertions(+), 142 deletions(-) diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets.js b/ui/desktop/app/routes/scopes/scope/projects/targets.js index 2bed7e272..e33c5b833 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets.js @@ -1,14 +1,13 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import { task, timeout } from 'ember-concurrency'; -import config from '../../../../config/environment'; import { resourceFilter } from 'core/decorators/resource-filter'; +import runEvery from 'ember-pollster/decorators/route/run-every'; +import config from '../../../../config/environment'; const POLL_TIMEOUT_SECONDS = config.sessionPollingTimeoutSeconds; export default class ScopesScopeProjectsTargetsRoute extends Route { - // =services @service ipc; @@ -23,26 +22,9 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { @resourceFilter({ allowed: (route) => route.modelFor('scopes.scope.projects'), serialize: ({ id }) => id, - findBySerialized: ({ id }, value) => id === value - }) project; - - /** - * A simple Ember Concurrency-based polling task that refreshes the route - * every POLL_TIMEOUT_SECONDS seconds. This is necessary to display changes - * to session `status` that may occur. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - @task(function * () { - while(true) { - yield timeout(POLL_TIMEOUT_SECONDS * 1000); - yield this.refresh(); - } - /* eslint-disable-next-line prettier/prettier */ - }).drop() poller; + findBySerialized: ({ id }, value) => id === value, + }) + project; // =methods @@ -61,33 +43,30 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { const { id: scope_id } = this.modelFor('scopes.scope'); const { user_id } = this.session.data.authenticated; const projects = this.project || []; - await this.resourceFilterStore.queryBy('session', { user_id }, { - recursive: true, - scope_id - }); - return this.resourceFilterStore.queryBy('target', { - scope_id: projects.map(({ id }) => id), - authorized_actions: [ - { contains: 'authorize-session' }, - ] - }, { - recursive: true, - scope_id - }); + await this.resourceFilterStore.queryBy( + 'session', + { user_id }, + { + recursive: true, + scope_id, + } + ); + return this.resourceFilterStore.queryBy( + 'target', + { + scope_id: projects.map(({ id }) => id), + authorized_actions: [{ contains: 'authorize-session' }], + }, + { + recursive: true, + scope_id, + } + ); } - /** - * When this route is activated (entered), begin polling for changes. - */ - activate() { - this.poller.perform(); - } - - /** - * When this route is deactivated (exited), stop polling for changes. - */ - deactivate() { - this.poller.cancelAll(); + @runEvery(POLL_TIMEOUT_SECONDS * 1000) + poller() { + return this.refresh(); } // =actions @@ -112,7 +91,7 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { const options = { target_id: model.id, - token: this.session.data.authenticated.token + token: this.session.data.authenticated.token, }; if (host) options.host_id = host.id; @@ -132,10 +111,11 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { session.proxy_address = address; session.proxy_port = port; if (credentials) { - credentials.forEach(cred => session.addCredential(cred)); + credentials.forEach((cred) => session.addCredential(cred)); } - } catch(e) { - this.confirm.confirm(e.message, { isConnectError: true }) + } catch (e) { + this.confirm + .confirm(e.message, { isConnectError: true }) // Retry .then(() => this.connect(model)) .catch(() => null /* no op */); diff --git a/ui/desktop/tests/acceptance/projects/targets-test.js b/ui/desktop/tests/acceptance/projects/targets-test.js index 4971f209f..2935cef15 100644 --- a/ui/desktop/tests/acceptance/projects/targets-test.js +++ b/ui/desktop/tests/acceptance/projects/targets-test.js @@ -9,7 +9,6 @@ import { //getRootElement //setupOnerror, } from '@ember/test-helpers'; -import { run, later } from '@ember/runloop'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { Response } from 'miragejs'; @@ -174,52 +173,35 @@ module('Acceptance | projects | targets', function (hooks) { test('visiting index', async function (assert) { assert.expect(2); const targetsCount = this.server.schema.targets.all().models.length; - // This later/cancelTimers technique allows us to test a page with - // active polling. Normally an acceptance test waits for all runloop timers - // to stop before returning from an awaited test, but polling means that - // runloop timers exist indefinitely. We thus schedule a cancelation before - // proceeding with our tests. - later(async () => { - run.cancelTimers(); - await a11yAudit(); - assert.equal(currentURL(), urls.targets); - assert.equal(findAll('tbody tr').length, targetsCount); - }, 750); await visit(urls.targets); + await a11yAudit(); + assert.equal(currentURL(), urls.targets); + assert.equal(findAll('tbody tr').length, targetsCount); }); test('visiting a target', async function (assert) { assert.expect(1); - later(async () => { - run.cancelTimers(); - await click('tbody tr th a'); - assert.equal(currentURL(), urls.sessions); - }, 750); await visit(urls.targets); + await click('tbody tr th a'); + assert.equal(currentURL(), urls.sessions); }); test('visiting empty targets', async function (assert) { assert.expect(1); this.server.get('/targets', () => new Response(200)); - later(async () => { - run.cancelTimers(); - assert.equal( - find('.rose-message-title').textContent.trim(), - 'No Targets Available' - ); - }, 750); await visit(urls.targets); + assert.equal( + find('.rose-message-title').textContent.trim(), + 'No Targets Available' + ); }); test('cannot navigate to a target without proper authorization', async function (assert) { assert.expect(1); instances.target.authorized_actions = instances.target.authorized_actions.filter((item) => item !== 'read'); - later(async () => { - run.cancelTimers(); - assert.notOk(find('main tbody .rose-table-header-cell:nth-child(1) a')); - }, 750); await visit(urls.targets); + assert.notOk(find('main tbody .rose-table-header-cell:nth-child(1) a')); }); test('connecting to a target', async function (assert) { @@ -233,26 +215,22 @@ module('Acceptance | projects | targets', function (hooks) { }); const confirmService = this.owner.lookup('service:confirm'); confirmService.enabled = true; - - later(async () => { - run.cancelTimers(); - await click( - 'tbody tr:first-child td:last-child button', - 'Activate connect mode' - ); - assert.ok(find('.dialog-detail'), 'Success dialog'); - assert.equal(findAll('.rose-dialog-footer button').length, 1); - assert.equal( - find('.rose-dialog-footer button').textContent.trim(), - 'Close', - 'Cannot retry' - ); - assert.equal( - find('.rose-dialog-body .copyable-content').textContent.trim(), - 'a_123:p_123' - ); - }, 750); await visit(urls.targets); + await click( + 'tbody tr:first-child td:last-child button', + 'Activate connect mode' + ); + assert.ok(find('.dialog-detail'), 'Success dialog'); + assert.equal(findAll('.rose-dialog-footer button').length, 1); + assert.equal( + find('.rose-dialog-footer button').textContent.trim(), + 'Close', + 'Cannot retry' + ); + assert.equal( + find('.rose-dialog-body .copyable-content').textContent.trim(), + 'a_123:p_123' + ); }); // Skipping because this test doesn't make sense. Users will never even see @@ -269,12 +247,9 @@ module('Acceptance | projects | targets', function (hooks) { assert.notOk( instances.target.authorized_actions.includes('authorize-session') ); - later(async () => { - run.cancelTimers(); - assert.ok(find('tbody tr:first-child')); - assert.notOk(find('tbody tr:first-child td:last-child button')); - }, 750); await visit(urls.targets); + assert.ok(find('tbody tr:first-child')); + assert.notOk(find('tbody tr:first-child td:last-child button')); }); test('handles cli error on connect', async function (assert) { @@ -282,20 +257,16 @@ module('Acceptance | projects | targets', function (hooks) { stubs.ipcService.withArgs('cliExists').returns(true); const confirmService = this.owner.lookup('service:confirm'); confirmService.enabled = true; - - later(async () => { - run.cancelTimers(); - await click( - 'tbody tr:first-child td:last-child button', - 'Activate connect mode' - ); - assert.ok(find('.rose-dialog-error'), 'Error dialog'); - const dialogButtons = findAll('.rose-dialog-footer button'); - assert.equal(dialogButtons.length, 2); - assert.equal(dialogButtons[0].textContent.trim(), 'Retry', 'Can retry'); - assert.equal(dialogButtons[1].textContent.trim(), 'Cancel', 'Can cancel'); - }, 750); await visit(urls.targets); + await click( + 'tbody tr:first-child td:last-child button', + 'Activate connect mode' + ); + assert.ok(find('.rose-dialog-error'), 'Error dialog'); + const dialogButtons = findAll('.rose-dialog-footer button'); + assert.equal(dialogButtons.length, 2); + assert.equal(dialogButtons[0].textContent.trim(), 'Retry', 'Can retry'); + assert.equal(dialogButtons[1].textContent.trim(), 'Cancel', 'Can cancel'); }); test('handles connect error', async function (assert) { @@ -304,20 +275,16 @@ module('Acceptance | projects | targets', function (hooks) { stubs.ipcService.withArgs('connect').rejects(); const confirmService = this.owner.lookup('service:confirm'); confirmService.enabled = true; - - later(async () => { - run.cancelTimers(); - await click( - 'tbody tr:first-child td:last-child button', - 'Activate connect mode' - ); - assert.ok(find('.rose-dialog-error'), 'Error dialog'); - const dialogButtons = findAll('.rose-dialog-footer button'); - assert.equal(dialogButtons.length, 2); - assert.equal(dialogButtons[0].textContent.trim(), 'Retry', 'Can retry'); - assert.equal(dialogButtons[1].textContent.trim(), 'Cancel', 'Can cancel'); - }, 750); await visit(urls.targets); + await click( + 'tbody tr:first-child td:last-child button', + 'Activate connect mode' + ); + assert.ok(find('.rose-dialog-error'), 'Error dialog'); + const dialogButtons = findAll('.rose-dialog-footer button'); + assert.equal(dialogButtons.length, 2); + assert.equal(dialogButtons[0].textContent.trim(), 'Retry', 'Can retry'); + assert.equal(dialogButtons[1].textContent.trim(), 'Cancel', 'Can cancel'); }); test('can retry on error', async function (assert) { @@ -325,18 +292,14 @@ module('Acceptance | projects | targets', function (hooks) { stubs.ipcService.withArgs('cliExists').rejects(); const confirmService = this.owner.lookup('service:confirm'); confirmService.enabled = true; - - later(async () => { - run.cancelTimers(); - await click( - 'tbody tr:first-child td:last-child button', - 'Activate connect mode' - ); - const firstErrorDialog = find('.rose-dialog'); - await click('.rose-dialog footer .rose-button-primary', 'Retry'); - const secondErrorDialog = find('.rose-dialog'); - assert.notEqual(secondErrorDialog.id, firstErrorDialog.id); - }, 750); await visit(urls.targets); + await click( + 'tbody tr:first-child td:last-child button', + 'Activate connect mode' + ); + const firstErrorDialog = find('.rose-dialog'); + await click('.rose-dialog footer .rose-button-primary', 'Retry'); + const secondErrorDialog = find('.rose-dialog'); + assert.notEqual(secondErrorDialog.id, firstErrorDialog.id); }); }); From a3bb788716fb0b78fc02b4b444538a0aaaa4b094 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 22:02:56 -0500 Subject: [PATCH 06/12] refactor: rewrite OIDC polling for ember pollster --- .../scopes/scope/authenticate/method/oidc.js | 41 +++---------------- ui/admin/config/environment.js | 3 -- .../tests/acceptance/authentication-test.js | 5 ++- 3 files changed, 9 insertions(+), 40 deletions(-) diff --git a/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js b/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js index db24f3bbd..b8fa4519c 100644 --- a/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js +++ b/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js @@ -1,42 +1,22 @@ import Route from '@ember/routing/route'; import { getOwner } from '@ember/application'; import { inject as service } from '@ember/service'; -import { task, timeout } from 'ember-concurrency'; import { action } from '@ember/object'; +import runEvery from 'ember-pollster/decorators/route/run-every'; import { notifyError } from 'core/decorators/notify'; import config from '../../../../../config/environment'; const POLL_TIMEOUT_SECONDS = config.oidcPollingTimeoutSeconds; export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { - // =services @service session; @service windowManager; - // =attributes - - /** - * A simple Ember Concurrency-based polling task that refreshes the route - * every POLL_TIMEOUT_SECONDS seconds. This is necessary to display changes - * to session `status` that may occur. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - @task(function * () { - while(!this.session.isAuthenticated) { - yield timeout(POLL_TIMEOUT_SECONDS * 1000); - yield this.refresh(); - } - /* eslint-disable-next-line prettier/prettier */ - }).drop() poller; - // =methods + beforeModel; model() { const scope = this.modelFor('scopes.scope'); const authMethod = this.modelFor('scopes.scope.authenticate.method'); @@ -47,18 +27,9 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { return oidc.attemptFetchToken({ scope, authMethod }); } - /** - * If authenticated, redirects to index for further processing. - */ - redirect() { - if (this.session.isAuthenticated) this.replaceWith('index'); - } - - /** - * When this route is activated (entered), begin polling for changes. - */ - activate() { - this.poller.perform(); + @runEvery(POLL_TIMEOUT_SECONDS * 1000) + poller() { + this.refresh(); } /** @@ -66,7 +37,6 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { * any windows opened via the window manager service. */ deactivate() { - this.poller.cancelAll(); this.windowManager.closeAll(); } @@ -81,5 +51,4 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { // rethrow the error to activate the notifyError decorator throw e; } - } diff --git a/ui/admin/config/environment.js b/ui/admin/config/environment.js index 4792a3c17..dc951f583 100644 --- a/ui/admin/config/environment.js +++ b/ui/admin/config/environment.js @@ -151,9 +151,6 @@ module.exports = function (environment) { // Notification timeout should be 0 for fast tests ENV.notifyTimeout = 0; - // Polling timeouts should be short - ENV.sessionPollingTimeoutSeconds = 0.25; - ENV.oidcPollingTimeoutSeconds = 0; ENV.enableConfirmService = false; // Enable tests for development features diff --git a/ui/admin/tests/acceptance/authentication-test.js b/ui/admin/tests/acceptance/authentication-test.js index 3c1cedd48..b4ed094ea 100644 --- a/ui/admin/tests/acceptance/authentication-test.js +++ b/ui/admin/tests/acceptance/authentication-test.js @@ -12,7 +12,7 @@ import { import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { Response } from 'miragejs'; -//import { run, later } from '@ember/runloop'; +import { runAllJobs } from 'ember-pollster/test-support'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; import { currentSession, @@ -383,6 +383,9 @@ module('Acceptance | authentication', function (hooks) { ); await visit(authMethodOIDCAuthenticateURL); await click('form [type="submit"]'); + // explicitly poll multiple times to trigger mock OIDC auth + await runAllJobs(); + await runAllJobs(); }); // TODO: test OIDC retry and cancel From 28de23b51783d09649b08f19ec7b3efaf9bc7917 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 22:36:53 -0500 Subject: [PATCH 07/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20rewrite=20OIDC?= =?UTF-8?q?=20polling=20for=20ember=20pollster?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scopes/scope/authenticate/method/oidc.js | 44 +-------- .../tests/acceptance/authentication-test.js | 91 ++++++++----------- 2 files changed, 44 insertions(+), 91 deletions(-) diff --git a/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js b/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js index b6cb354c4..f2f8f81cd 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js @@ -1,39 +1,20 @@ import Route from '@ember/routing/route'; import { getOwner } from '@ember/application'; import { inject as service } from '@ember/service'; -import { task, timeout } from 'ember-concurrency'; import { action } from '@ember/object'; +import runEvery from 'ember-pollster/decorators/route/run-every'; import { notifyError } from 'core/decorators/notify'; import config from '../../../../../config/environment'; const POLL_TIMEOUT_SECONDS = config.oidcPollingTimeoutSeconds; export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { - // =services @service session; // =attributes - /** - * A simple Ember Concurrency-based polling task that refreshes the route - * every POLL_TIMEOUT_SECONDS seconds. This is necessary to display changes - * to session `status` that may occur. - * - * NOTE: tasks are sort of attributes and sort of methods, but they are not - * language-level constructs. Thus we annotate this task as if it - * is an attribute. - * @type {Task} - */ - @task(function * () { - while(!this.session.isAuthenticated) { - yield timeout(POLL_TIMEOUT_SECONDS * 1000); - yield this.refresh(); - } - /* eslint-disable-next-line prettier/prettier */ - }).drop() poller; - // =methods model() { @@ -46,25 +27,9 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { return oidc.attemptFetchToken({ scope, authMethod }); } - /** - * If authenticated, redirects to index for further processing. - */ - redirect() { - if (this.session.isAuthenticated) this.replaceWith('index'); - } - - /** - * When this route is activated (entered), begin polling for changes. - */ - activate() { - this.poller.perform(); - } - - /** - * When this route is deactivated (exited), stop polling for changes. - */ - deactivate() { - this.poller.cancelAll(); + @runEvery(POLL_TIMEOUT_SECONDS * 1000) + poller() { + this.refresh(); } /** @@ -78,5 +43,4 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { // rethrow the error to activate the notifyError decorator throw e; } - } diff --git a/ui/desktop/tests/acceptance/authentication-test.js b/ui/desktop/tests/acceptance/authentication-test.js index c030a22c3..085a7d045 100644 --- a/ui/desktop/tests/acceptance/authentication-test.js +++ b/ui/desktop/tests/acceptance/authentication-test.js @@ -9,7 +9,6 @@ import { getRootElement, //setupOnerror, } from '@ember/test-helpers'; -import { run, later } from '@ember/runloop'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { Response } from 'miragejs'; @@ -162,20 +161,17 @@ module('Acceptance | authentication', function (hooks) { await visit(urls.authenticate.methods.global); await fillIn('[name="identification"]', 'test'); await fillIn('[name="password"]', 'test'); - later(async () => { - run.cancelTimers(); - assert.ok(currentSession().isAuthenticated); - await click('.rose-header-utilities .rose-dropdown summary'); - assert.equal( - find( - '.rose-header-utilities .rose-dropdown-content button' - ).textContent.trim(), - 'Deauthenticate' - ); - await click('.rose-header-utilities .rose-dropdown-content button'); - assert.notOk(currentSession().isAuthenticated); - }, 750); await click('[type="submit"]'); + assert.ok(currentSession().isAuthenticated); + await click('.rose-header-utilities .rose-dropdown summary'); + assert.equal( + find( + '.rose-header-utilities .rose-dropdown-content button' + ).textContent.trim(), + 'Deauthenticate' + ); + await click('.rose-header-utilities .rose-dropdown-content button'); + assert.notOk(currentSession().isAuthenticated); }); test('401 responses result in deauthentication', async function (assert) { @@ -183,21 +179,18 @@ module('Acceptance | authentication', function (hooks) { await visit(urls.authenticate.methods.global); await fillIn('[name="identification"]', 'test'); await fillIn('[name="password"]', 'test'); - later(async () => { - run.cancelTimers(); - assert.ok( - currentSession().isAuthenticated, - 'Session begins authenticated, before encountering 401' - ); - assert.ok(currentURL(), urls.targets); - this.server.get('/sessions', () => new Response(401)); - await visit(urls.sessions); - assert.notOk( - currentSession().isAuthenticated, - 'Session is unauthenticated, after encountering 401' - ); - }, 750); await click('[type="submit"]'); + assert.ok( + currentSession().isAuthenticated, + 'Session begins authenticated, before encountering 401' + ); + assert.ok(currentURL(), urls.targets); + this.server.get('/sessions', () => new Response(401)); + await visit(urls.sessions); + assert.notOk( + currentSession().isAuthenticated, + 'Session is unauthenticated, after encountering 401' + ); }); test('color theme is applied from session data', async function (assert) { @@ -208,29 +201,25 @@ module('Acceptance | authentication', function (hooks) { type: instances.scopes.global.type, }, }); - later(async () => { - run.cancelTimers(); - // system default - assert.notOk(currentSession().get('data.theme')); - assert.notOk(getRootElement().classList.contains('rose-theme-light')); - assert.notOk(getRootElement().classList.contains('rose-theme-dark')); - // toggle light mode - await click('[name="theme"][value="light"]'); - assert.equal(currentSession().get('data.theme'), 'light'); - assert.ok(getRootElement().classList.contains('rose-theme-light')); - assert.notOk(getRootElement().classList.contains('rose-theme-dark')); - // toggle dark mode - await click('[name="theme"][value="dark"]'); - assert.equal(currentSession().get('data.theme'), 'dark'); - assert.notOk(getRootElement().classList.contains('rose-theme-light')); - assert.ok(getRootElement().classList.contains('rose-theme-dark')); - // toggle system default - await click('[name="theme"][value=""]'); - assert.notOk(currentSession().get('data.theme')); - assert.notOk(getRootElement().classList.contains('rose-theme-light')); - assert.notOk(getRootElement().classList.contains('rose-theme-dark')); - }, 750); - await visit(urls.scopes.org); + // system default + assert.notOk(currentSession().get('data.theme')); + assert.notOk(getRootElement().classList.contains('rose-theme-light')); + assert.notOk(getRootElement().classList.contains('rose-theme-dark')); + // toggle light mode + await click('[name="theme"][value="light"]'); + assert.equal(currentSession().get('data.theme'), 'light'); + assert.ok(getRootElement().classList.contains('rose-theme-light')); + assert.notOk(getRootElement().classList.contains('rose-theme-dark')); + // toggle dark mode + await click('[name="theme"][value="dark"]'); + assert.equal(currentSession().get('data.theme'), 'dark'); + assert.notOk(getRootElement().classList.contains('rose-theme-light')); + assert.ok(getRootElement().classList.contains('rose-theme-dark')); + // toggle system default + await click('[name="theme"][value=""]'); + assert.notOk(currentSession().get('data.theme')); + assert.notOk(getRootElement().classList.contains('rose-theme-light')); + assert.notOk(getRootElement().classList.contains('rose-theme-dark')); }); }); From ebf2a0f11574442efc155cb7658d835471da7197 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Sun, 2 Jan 2022 22:38:32 -0500 Subject: [PATCH 08/12] chore: remove ember-concurrency dependency --- ui/admin/package.json | 1 - ui/desktop/package.json | 1 - yarn.lock | 38 ++++++-------------------------------- 3 files changed, 6 insertions(+), 34 deletions(-) diff --git a/ui/admin/package.json b/ui/admin/package.json index 9347d3adf..1ad98308e 100644 --- a/ui/admin/package.json +++ b/ui/admin/package.json @@ -62,7 +62,6 @@ "ember-cli-sri": "^2.1.1", "ember-cli-template-lint": "^2.0.2", "ember-cli-terser": "^4.0.2", - "ember-concurrency": "^1.3.0", "ember-exam": "^6.1.0", "ember-export-application-global": "^2.0.1", "ember-inline-svg": "^1.0.0", diff --git a/ui/desktop/package.json b/ui/desktop/package.json index 8bbca0a80..04733fe59 100755 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -82,7 +82,6 @@ "ember-cli-sri": "^2.1.1", "ember-cli-template-lint": "^2.0.2", "ember-cli-terser": "^4.0.2", - "ember-concurrency": "^1.3.0", "ember-electron": "^3.0.0", "ember-exam": "^6.1.0", "ember-export-application-global": "^2.0.1", diff --git a/yarn.lock b/yarn.lock index f4fde0895..ea6ccfe59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9409,7 +9409,7 @@ debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: dependencies: ms "^2.1.1" -debuglog@*, debuglog@^1.0.1: +debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= @@ -10677,15 +10677,6 @@ ember-concurrency@^0.10.0: ember-compatibility-helpers "^1.2.0" ember-maybe-import-regenerator "^0.1.5" -ember-concurrency@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-1.3.0.tgz#66f90fb792687470bcee1172adc0ebf33f5e8b9c" - integrity sha512-DwGlfWFpYyAkTwsedlEtK4t1DznJSculAW6Vq5S1C0shVPc5b6tTpHB2FFYisannSYkm+wpm1f1Pd40qiNPtOQ== - dependencies: - ember-cli-babel "^7.7.3" - ember-compatibility-helpers "^1.2.0" - ember-maybe-import-regenerator "^0.1.6" - ember-cookies@^0.5.0, ember-cookies@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/ember-cookies/-/ember-cookies-0.5.2.tgz#06e33463f2f83254fefaf224cc944dec3fb9d3ba" @@ -10943,7 +10934,7 @@ ember-loading@^0.4.0: ember-concurrency "^0.10.0" ember-decorators-polyfill "^1.1.5" -ember-maybe-import-regenerator@^0.1.5, ember-maybe-import-regenerator@^0.1.6: +ember-maybe-import-regenerator@^0.1.5: version "0.1.6" resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator/-/ember-maybe-import-regenerator-0.1.6.tgz#35d41828afa6d6a59bc0da3ce47f34c573d776ca" integrity sha1-NdQYKK+m1qWbwNo85H80xXPXdso= @@ -14304,7 +14295,7 @@ import-lazy@^4.0.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== -imurmurhash@*, imurmurhash@^0.1.4: +imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -16118,11 +16109,6 @@ lodash._baseflatten@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash._baseindexof@*: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" - integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= - lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -16131,16 +16117,11 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~3.0.0" -lodash._bindcallback@*, lodash._bindcallback@^3.0.0: +lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= -lodash._cacheindexof@*: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" - integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= - lodash._createassigner@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" @@ -16150,19 +16131,12 @@ lodash._createassigner@^3.0.0: lodash._isiterateecall "^3.0.0" lodash.restparam "^3.0.0" -lodash._createcache@*: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" - integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= - dependencies: - lodash._getnative "^3.0.0" - lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@*, lodash._getnative@^3.0.0: +lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= @@ -16380,7 +16354,7 @@ lodash.pick@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= -lodash.restparam@*, lodash.restparam@^3.0.0: +lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= From 046e9fdf4ca7c90cfb2d3dd9d53fd9e60499d54b Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 3 Jan 2022 09:28:24 -0500 Subject: [PATCH 09/12] chore: upgrade to ember-loading 2.0.0 --- addons/core/package.json | 2 +- ui/admin/app/routes/application.js | 2 +- ui/admin/app/routes/scopes/scope.js | 2 +- .../app/routes/scopes/scope/auth-methods.js | 2 +- .../auth-methods/auth-method/accounts.js | 2 +- .../accounts/account/set-password.js | 2 +- .../auth-method/managed-groups.js | 2 +- .../scopes/scope/authenticate/method.js | 2 +- .../routes/scopes/scope/credential-stores.js | 2 +- .../credential-store/credential-libraries.js | 2 +- ui/admin/app/routes/scopes/scope/groups.js | 2 +- .../scopes/scope/groups/group/add-members.js | 2 +- .../scopes/scope/groups/group/members.js | 2 +- .../app/routes/scopes/scope/host-catalogs.js | 2 +- .../host-catalogs/host-catalog/host-sets.js | 2 +- .../host-sets/host-set/add-hosts.js | 2 +- .../host-sets/host-set/create-and-add-host.js | 2 +- .../host-catalog/host-sets/host-set/hosts.js | 2 +- .../scope/host-catalogs/host-catalog/hosts.js | 2 +- ui/admin/app/routes/scopes/scope/roles.js | 2 +- .../scopes/scope/roles/role/add-principals.js | 2 +- .../routes/scopes/scope/roles/role/grants.js | 2 +- .../scopes/scope/roles/role/principals.js | 2 +- ui/admin/app/routes/scopes/scope/targets.js | 2 +- .../targets/target/add-credential-sources.js | 2 +- .../scope/targets/target/add-host-sources.js | 2 +- .../targets/target/credential-sources.js | 2 +- .../scope/targets/target/host-sources.js | 2 +- ui/admin/app/routes/scopes/scope/users.js | 2 +- .../scopes/scope/users/user/accounts.js | 2 +- .../scopes/scope/users/user/add-accounts.js | 2 +- ui/desktop/app/routes/application.js | 2 +- ui/desktop/app/routes/origin.js | 2 +- .../scopes/scope/authenticate/method.js | 2 +- yarn.lock | 146 +++++++----------- 35 files changed, 86 insertions(+), 128 deletions(-) diff --git a/addons/core/package.json b/addons/core/package.json index 45b18e4db..5e1ec1f37 100644 --- a/addons/core/package.json +++ b/addons/core/package.json @@ -35,7 +35,7 @@ "ember-cli-htmlbars": "^5.7.1", "ember-feature-flags": "^6.0.0", "ember-intl": "^5.7.0", - "ember-loading": "^0.4.0", + "ember-loading": "^2.0.0", "ember-route-action-helper": "^2.0.8", "ember-truth-helpers": "^3.0.0", "rose": "*" diff --git a/ui/admin/app/routes/application.js b/ui/admin/app/routes/application.js index be7f8b034..75b12751c 100644 --- a/ui/admin/app/routes/application.js +++ b/ui/admin/app/routes/application.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { getOwner } from '@ember/application'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { A } from '@ember/array'; /** diff --git a/ui/admin/app/routes/scopes/scope.js b/ui/admin/app/routes/scopes/scope.js index 196164793..eb8f01260 100644 --- a/ui/admin/app/routes/scopes/scope.js +++ b/ui/admin/app/routes/scopes/scope.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { A } from '@ember/array'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/auth-methods.js b/ui/admin/app/routes/scopes/scope/auth-methods.js index 491cdd44d..2eef64750 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; import { resourceFilter } from 'core/decorators/resource-filter'; diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js index 6166ae16b..51951aaef 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js index 66b8b2236..7f6212ded 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeAuthMethodsAuthMethodAccountsAccountSettingsRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js index 770d1357e..8271d74df 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/authenticate/method.js b/ui/admin/app/routes/scopes/scope/authenticate/method.js index 9c42ca274..8da0f3cae 100644 --- a/ui/admin/app/routes/scopes/scope/authenticate/method.js +++ b/ui/admin/app/routes/scopes/scope/authenticate/method.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { getOwner } from '@ember/application'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifyError } from 'core/decorators/notify'; export default class ScopesScopeAuthenticateMethodRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/credential-stores.js b/ui/admin/app/routes/scopes/scope/credential-stores.js index d49379fcf..ef068f788 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js index d38d9a2f9..56f3fb967 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js @@ -1,6 +1,6 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; import { inject as service } from '@ember/service'; diff --git a/ui/admin/app/routes/scopes/scope/groups.js b/ui/admin/app/routes/scopes/scope/groups.js index e1346ae4d..e57885eae 100644 --- a/ui/admin/app/routes/scopes/scope/groups.js +++ b/ui/admin/app/routes/scopes/scope/groups.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/groups/group/add-members.js b/ui/admin/app/routes/scopes/scope/groups/group/add-members.js index a447908e7..b67e2cbbd 100644 --- a/ui/admin/app/routes/scopes/scope/groups/group/add-members.js +++ b/ui/admin/app/routes/scopes/scope/groups/group/add-members.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { hash } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeGroupsGroupAddMembersRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/groups/group/members.js b/ui/admin/app/routes/scopes/scope/groups/group/members.js index 51ca9d353..54aa7f585 100644 --- a/ui/admin/app/routes/scopes/scope/groups/group/members.js +++ b/ui/admin/app/routes/scopes/scope/groups/group/members.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import { hash, all } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs.js b/ui/admin/app/routes/scopes/scope/host-catalogs.js index 65da4edc1..cc5a1f508 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js index d70b5dab0..2cc93e571 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js index 5232404f1..1173cf192 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { hash } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetAddHostsRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js index dfb871e6a..2e6f95bb1 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetCreateAndAddHostRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.js index b3f1a1c23..24f6f1e3b 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/hosts.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { hash, all } from 'rsvp'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js index cb91be6ed..6f9f55614 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/roles.js b/ui/admin/app/routes/scopes/scope/roles.js index f83c69135..b58427ec6 100644 --- a/ui/admin/app/routes/scopes/scope/roles.js +++ b/ui/admin/app/routes/scopes/scope/roles.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js b/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js index 1517470d3..041952b82 100644 --- a/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js +++ b/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { hash } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeRolesRoleAddPrincipalsRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/roles/role/grants.js b/ui/admin/app/routes/scopes/scope/roles/role/grants.js index 0f051e359..11cfa1516 100644 --- a/ui/admin/app/routes/scopes/scope/roles/role/grants.js +++ b/ui/admin/app/routes/scopes/scope/roles/role/grants.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeRolesRoleGrantsRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/roles/role/principals.js b/ui/admin/app/routes/scopes/scope/roles/role/principals.js index b69b6e3ac..6c3b38925 100644 --- a/ui/admin/app/routes/scopes/scope/roles/role/principals.js +++ b/ui/admin/app/routes/scopes/scope/roles/role/principals.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { all, hash } from 'rsvp'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/targets.js b/ui/admin/app/routes/scopes/scope/targets.js index 85a27eab1..c07321095 100644 --- a/ui/admin/app/routes/scopes/scope/targets.js +++ b/ui/admin/app/routes/scopes/scope/targets.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js b/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js index 88cfa0cb5..df5aac4a2 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { all } from 'rsvp'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeTargetsTargetAddCredentialSourcesRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js b/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js index 19c4e6c37..1118e144d 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { all } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeTargetsTargetAddHostSourcesRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/targets/target/credential-sources.js b/ui/admin/app/routes/scopes/scope/targets/target/credential-sources.js index 56dd78648..d53fbedcb 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/credential-sources.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/credential-sources.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { all } from 'rsvp'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/targets/target/host-sources.js b/ui/admin/app/routes/scopes/scope/targets/target/host-sources.js index 39d1d313a..3f53af127 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/host-sources.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/host-sources.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { all, hash } from 'rsvp'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/users.js b/ui/admin/app/routes/scopes/scope/users.js index 6512c6aeb..6c07f23fb 100644 --- a/ui/admin/app/routes/scopes/scope/users.js +++ b/ui/admin/app/routes/scopes/scope/users.js @@ -1,7 +1,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; diff --git a/ui/admin/app/routes/scopes/scope/users/user/accounts.js b/ui/admin/app/routes/scopes/scope/users/user/accounts.js index 8f2e264ea..22efbfcfa 100644 --- a/ui/admin/app/routes/scopes/scope/users/user/accounts.js +++ b/ui/admin/app/routes/scopes/scope/users/user/accounts.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import { hash, all } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeUsersUserAccountsRoute extends Route { diff --git a/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js b/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js index 9fce2d85e..fecc99be7 100644 --- a/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js +++ b/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { all } from 'rsvp'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeUsersUserAddAccountsRoute extends Route { diff --git a/ui/desktop/app/routes/application.js b/ui/desktop/app/routes/application.js index a52baa954..569fde38b 100644 --- a/ui/desktop/app/routes/application.js +++ b/ui/desktop/app/routes/application.js @@ -3,7 +3,7 @@ import { inject as service } from '@ember/service'; import { action } from '@ember/object'; import { A } from '@ember/array'; import { getOwner } from '@ember/application'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; export default class ApplicationRoute extends Route { // =services diff --git a/ui/desktop/app/routes/origin.js b/ui/desktop/app/routes/origin.js index 9e3df0ace..ddd557c84 100644 --- a/ui/desktop/app/routes/origin.js +++ b/ui/desktop/app/routes/origin.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { getOwner } from '@ember/application'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import config from '../config/environment'; export default class OriginRoute extends Route { diff --git a/ui/desktop/app/routes/scopes/scope/authenticate/method.js b/ui/desktop/app/routes/scopes/scope/authenticate/method.js index 1b679119c..c88264f72 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate/method.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate/method.js @@ -2,7 +2,7 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; import { getOwner } from '@ember/application'; import { action } from '@ember/object'; -import loading from 'ember-loading/decorator'; +import { loading } from 'ember-loading'; import { notifyError } from 'core/decorators/notify'; export default class ScopesScopeAuthenticateMethodRoute extends Route { diff --git a/yarn.lock b/yarn.lock index ea6ccfe59..180b24205 100644 --- a/yarn.lock +++ b/yarn.lock @@ -570,7 +570,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-plugin-utils@^7.16.7": +"@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== @@ -2364,6 +2364,14 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.10.2", "@babel/types@^7.16.0", "@babel/types@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" + integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@babel/types@^7.15.4", "@babel/types@^7.15.6": version "7.15.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" @@ -2372,14 +2380,6 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.16.0", "@babel/types@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" - integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - "@base2/pretty-print-object@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" @@ -6436,7 +6436,7 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.24.1, babel-core@^6.26.0, babel-core@^6.26.3: +babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== @@ -7336,26 +7336,6 @@ broccoli-funnel@2.0.1: symlink-or-copy "^1.0.0" walk-sync "^0.3.1" -broccoli-funnel@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-1.2.0.tgz#cddc3afc5ff1685a8023488fff74ce6fb5a51296" - integrity sha1-zdw6/F/xaFqAI0iP/3TOb7WlEpY= - dependencies: - array-equal "^1.0.0" - blank-object "^1.0.1" - broccoli-plugin "^1.3.0" - debug "^2.2.0" - exists-sync "0.0.4" - fast-ordered-set "^1.0.0" - fs-tree-diff "^0.5.3" - heimdalljs "^0.2.0" - minimatch "^3.0.0" - mkdirp "^0.5.0" - path-posix "^1.0.0" - rimraf "^2.4.3" - symlink-or-copy "^1.0.0" - walk-sync "^0.3.1" - "broccoli-funnel@^1.2.0 || ^2.0.0", broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1, broccoli-funnel@^2.0.2, broccoli-funnel@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz#0edf629569bc10bd02cc525f74b9a38e71366a75" @@ -7414,20 +7394,6 @@ broccoli-merge-files@^0.8.0: lodash.defaults "^4.2.0" p-event "^2.3.1" -broccoli-merge-trees@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-1.2.4.tgz#a001519bb5067f06589d91afa2942445a2d0fdb5" - integrity sha1-oAFRm7UGfwZYnZGvopQkRaLQ/bU= - dependencies: - broccoli-plugin "^1.3.0" - can-symlink "^1.0.0" - fast-ordered-set "^1.0.2" - fs-tree-diff "^0.5.4" - heimdalljs "^0.2.1" - heimdalljs-logger "^0.1.7" - rimraf "^2.4.3" - symlink-or-copy "^1.0.0" - "broccoli-merge-trees@^2.0.0 || ^3.0.0", broccoli-merge-trees@^3.0.0, broccoli-merge-trees@^3.0.1, broccoli-merge-trees@^3.0.2, broccoli-merge-trees@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-3.0.2.tgz#f33b451994225522b5c9bcf27d59decfd8ba537d" @@ -10163,7 +10129,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879" integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw== -ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.2, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.26.8, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: +ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.9.2, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.26.8, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: version "7.26.11" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.11.tgz#50da0fe4dcd99aada499843940fec75076249a9f" integrity sha512-JJYeYjiz/JTn34q7F5DSOjkkZqy8qwFOOxXfE6pe9yEJqWGu4qErKxlz8I22JoVEQ/aBUO+OcKTpmctvykM9YA== @@ -10259,7 +10225,7 @@ ember-cli-htmlbars@^3.0.0: json-stable-stringify "^1.0.1" strip-bom "^3.0.0" -ember-cli-htmlbars@^4.0.0, ember-cli-htmlbars@^4.2.1, ember-cli-htmlbars@^4.2.3: +ember-cli-htmlbars@^4.0.0, ember-cli-htmlbars@^4.2.1, ember-cli-htmlbars@^4.3.1: version "4.5.0" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-4.5.0.tgz#d299e4f7eba6f30dc723ee086906cc550beb252e" integrity sha512-bYJpK1pqFu9AadDAGTw05g2LMNzY8xTCIqQm7dMJmKEoUpLRFbPf4SfHXrktzDh7Q5iggl6Skzf1M0bPlIxARw== @@ -10455,7 +10421,7 @@ ember-cli-typescript@3.0.0: stagehand "^1.0.0" walk-sync "^2.0.0" -ember-cli-typescript@^2.0.0-rc.2, ember-cli-typescript@^2.0.2: +ember-cli-typescript@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-2.0.2.tgz#464984131fbdc05655eb61d1c3cdd911d3137f0d" integrity sha512-7I5azCTxOgRDN8aSSnJZIKSqr+MGnT+jLTUbBYqF8wu6ojs2DUnTePxUcQMcvNh3Q3B1ySv7Q/uZFSjdU9gSjA== @@ -10667,15 +10633,35 @@ ember-composable-helpers@^4.5.0: ember-cli-babel "^7.26.3" resolve "^1.10.0" -ember-concurrency@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.10.1.tgz#aae4528540391a7278e2c193a146b5474cad5ec2" - integrity sha512-KdvR5TEfnLov4igeIZiVueFOL0kMjkabMQrioipegey+NF23SSYThc/y2rKv109D92lTAJgC6Vp7+j2RtXqD+w== +ember-concurrency-async@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ember-concurrency-async/-/ember-concurrency-async-1.0.0.tgz#635ec2b7b11c083699801b85c5bb757bb7ebfd45" + integrity sha512-otE1UcF+VYva8qdkYayHVBrGDG+Lt9oYLLMt3heEo98Mv9abdjrdaLzvSMMspzI3ncgKtmZsEwn+aubvq+Zhhw== dependencies: - babel-core "^6.24.1" - ember-cli-babel "^6.8.2" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/types" "^7.10.2" + ember-cli-babel "^7.19.0" + ember-cli-babel-plugin-helpers "^1.1.1" + ember-cli-htmlbars "^4.3.1" + +ember-concurrency-ts@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ember-concurrency-ts/-/ember-concurrency-ts-0.3.1.tgz#0b3b524a6a96c8ab749b20e1d4da00569773567a" + integrity sha512-lE9uqPgK1Y9PN/0BJ5zE2a+h95izRCn6FCyt7qVV3012TlblTynsBaoUuAbN1T3KfzFsrJaXwsxzRbDjEde2Sw== + dependencies: + ember-cli-babel "^7.19.0" + ember-cli-htmlbars "^4.3.1" + +ember-concurrency@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-2.2.0.tgz#0acfb8ca855e0fdfa4c543be150028299a89ba32" + integrity sha512-Ns1MH6t08oJqfeWQ4EMxyf6bLsXM87SbUPwGNUsg7idpikvkGr1PWqtvU6qxDTv1mA4Vrwdhv0I9yxN0ShH9Bg== + dependencies: + "@glimmer/tracking" "^1.0.4" + ember-cli-babel "^7.26.6" + ember-cli-htmlbars "^5.7.1" ember-compatibility-helpers "^1.2.0" - ember-maybe-import-regenerator "^0.1.5" + ember-destroyable-polyfill "^2.0.2" ember-cookies@^0.5.0, ember-cookies@^0.5.2: version "0.5.2" @@ -10727,15 +10713,6 @@ ember-data@^3.20.0: ember-cli-typescript "^4.1.0" ember-inflector "^4.0.1" -ember-decorators-polyfill@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ember-decorators-polyfill/-/ember-decorators-polyfill-1.1.5.tgz#49203c302ea4486618ba4866923ec657cf2c9f3d" - integrity sha512-O154i8sLoVjsiKzSqxGRfHGr+N+drT6mRrLDbNgJCnW/V5uLg/ppZFpUsrdxuXnp5Q9us3OfXV1nX2CH+7bUpA== - dependencies: - ember-cli-babel "^7.1.2" - ember-cli-version-checker "^3.1.3" - ember-compatibility-helpers "^1.2.0" - ember-destroyable-polyfill@^2.0.1, ember-destroyable-polyfill@^2.0.2, ember-destroyable-polyfill@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz#1673ed66609a82268ef270a7d917ebd3647f11e1" @@ -10923,26 +10900,17 @@ ember-load-initializers@^2.1.2: ember-cli-babel "^7.13.0" ember-cli-typescript "^2.0.2" -ember-loading@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/ember-loading/-/ember-loading-0.4.0.tgz#4909a6585b351c9540a26bf20ab086986b427acf" - integrity sha512-x5JDBdCc0AjoMcUyTFtO3lqZ5ye2Sn4STm0dInSYm21pOmwkHB9bxMH8vyWj9JEiLKY6+Vb6PC0WbRM/SOn31Q== +ember-loading@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ember-loading/-/ember-loading-2.0.0.tgz#49cdbed83b4ef29be00d28e5a532a72113233b31" + integrity sha512-aGFZszIwmrIZ5XINv9TXQGWrfpKIiPwYiakEmRXx0Jvr5ZnUyKtCO84+FaKMyezrbDWsq0UjYqmdiqSAXhIkIA== dependencies: - ember-cli-babel "^7.18.0" - ember-cli-htmlbars "^4.2.3" - ember-cli-typescript "^2.0.0-rc.2" - ember-concurrency "^0.10.0" - ember-decorators-polyfill "^1.1.5" - -ember-maybe-import-regenerator@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator/-/ember-maybe-import-regenerator-0.1.6.tgz#35d41828afa6d6a59bc0da3ce47f34c573d776ca" - integrity sha1-NdQYKK+m1qWbwNo85H80xXPXdso= - dependencies: - broccoli-funnel "^1.0.1" - broccoli-merge-trees "^1.0.0" - ember-cli-babel "^6.0.0-beta.4" - regenerator-runtime "^0.9.5" + ember-cli-babel "^7.26.6" + ember-cli-htmlbars "^5.7.1" + ember-cli-typescript "^4.1.0" + ember-concurrency "^2.0.3" + ember-concurrency-async "^1.0.0" + ember-concurrency-ts "^0.3.0" ember-maybe-import-regenerator@^1.0.0: version "1.0.0" @@ -12049,11 +12017,6 @@ execall@^2.0.0: dependencies: clone-regexp "^2.1.0" -exists-sync@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/exists-sync/-/exists-sync-0.0.4.tgz#9744c2c428cc03b01060db454d4b12f0ef3c8879" - integrity sha1-l0TCxCjMA7AQYNtFTUsS8O88iHk= - exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" @@ -12281,7 +12244,7 @@ fast-memoize@^2.5.2: resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== -fast-ordered-set@^1.0.0, fast-ordered-set@^1.0.2: +fast-ordered-set@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-ordered-set/-/fast-ordered-set-1.0.3.tgz#3fbb36634f7be79e4f7edbdb4a357dee25d184eb" integrity sha1-P7s2Y097555PftvbSjV97iXRhOs= @@ -12935,7 +12898,7 @@ fs-monkey@1.0.3: resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== -fs-tree-diff@^0.5.2, fs-tree-diff@^0.5.3, fs-tree-diff@^0.5.4, fs-tree-diff@^0.5.6, fs-tree-diff@^0.5.9: +fs-tree-diff@^0.5.2, fs-tree-diff@^0.5.3, fs-tree-diff@^0.5.6, fs-tree-diff@^0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/fs-tree-diff/-/fs-tree-diff-0.5.9.tgz#a4ec6182c2f5bd80b9b83c8e23e4522e6f5fd946" integrity sha512-872G8ax0kHh01m9n/2KDzgYwouKza0Ad9iFltBpNykvROvf2AGtoOzPJgGx125aolGPER3JuC7uZFrQ7bG1AZw== @@ -20060,11 +20023,6 @@ regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4, regenerator-runtime@^0 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-runtime@^0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - integrity sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck= - regenerator-transform@^0.14.2: version "0.14.5" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" From 7e354df44cc039e71c60c07caa4198796c2e44d3 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 3 Jan 2022 12:12:53 -0500 Subject: [PATCH 10/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20migrate=20to?= =?UTF-8?q?=20router.replaceWith=20due=20to=20deprecations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/routes/account/change-password.js | 5 +-- ui/admin/app/routes/scopes/scope.js | 3 +- .../app/routes/scopes/scope/auth-methods.js | 3 +- .../auth-methods/auth-method/accounts.js | 6 +++- .../accounts/account/set-password.js | 3 +- .../auth-method/managed-groups.js | 3 +- .../routes/scopes/scope/credential-stores.js | 4 ++- .../credential-store/credential-libraries.js | 3 +- ui/admin/app/routes/scopes/scope/groups.js | 4 ++- .../scopes/scope/groups/group/add-members.js | 5 +-- .../app/routes/scopes/scope/host-catalogs.js | 4 ++- .../host-catalogs/host-catalog/host-sets.js | 6 +++- .../host-sets/host-set/add-hosts.js | 5 +-- .../host-sets/host-set/create-and-add-host.js | 5 +-- .../scope/host-catalogs/host-catalog/hosts.js | 6 +++- ui/admin/app/routes/scopes/scope/roles.js | 3 +- .../scopes/scope/roles/role/add-principals.js | 5 +-- ui/admin/app/routes/scopes/scope/targets.js | 3 +- .../targets/target/add-credential-sources.js | 5 +-- .../scope/targets/target/add-host-sources.js | 5 +-- ui/admin/app/routes/scopes/scope/users.js | 3 +- .../scopes/scope/users/user/add-accounts.js | 5 +-- ui/admin/app/styles/app.scss | 27 ++++++++++---- ui/desktop/app/routes/index.js | 5 +-- ui/desktop/app/routes/origin.js | 5 +-- ui/desktop/app/routes/scopes/index.js | 5 +-- .../app/routes/scopes/scope/authenticate.js | 6 ++-- .../routes/scopes/scope/authenticate/index.js | 10 +++++- ui/desktop/app/routes/scopes/scope/index.js | 5 +-- ui/desktop/app/styles/app.scss | 10 +++--- .../tests/acceptance/authentication-test.js | 35 ++++++++++++++++--- 31 files changed, 147 insertions(+), 55 deletions(-) diff --git a/ui/admin/app/routes/account/change-password.js b/ui/admin/app/routes/account/change-password.js index bf097e196..f947fa6f4 100644 --- a/ui/admin/app/routes/account/change-password.js +++ b/ui/admin/app/routes/account/change-password.js @@ -12,6 +12,7 @@ export default class AccountChangePasswordRoute extends Route { @service session; @service intl; @service notify; + @service router; // =methods @@ -42,7 +43,7 @@ export default class AccountChangePasswordRoute extends Route { // redirects depending on the authentication context. These additional // redirects may abort this initial transition, resulting in a // TransitionAborted error, which we do not want to show to the user. - await this.replaceWith('index').catch(() => {}); + await this.router.replaceWith('index').catch(() => {}); } /** @@ -50,6 +51,6 @@ export default class AccountChangePasswordRoute extends Route { */ @action cancel() { - this.replaceWith('index'); + this.router.replaceWith('index'); } } diff --git a/ui/admin/app/routes/scopes/scope.js b/ui/admin/app/routes/scopes/scope.js index eb8f01260..998117b27 100644 --- a/ui/admin/app/routes/scopes/scope.js +++ b/ui/admin/app/routes/scopes/scope.js @@ -12,6 +12,7 @@ export default class ScopesScopeRoute extends Route { @service intl; @service session; @service scope; + @service router; // =methods @@ -149,7 +150,7 @@ export default class ScopesScopeRoute extends Route { async delete(scope) { const { scopeID } = scope; await scope.destroyRecord(); - await this.replaceWith('scopes.scope.scopes', scopeID); + await this.router.replaceWith('scopes.scope.scopes', scopeID); //this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods.js b/ui/admin/app/routes/scopes/scope/auth-methods.js index 2eef64750..2348a2d83 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods.js @@ -14,6 +14,7 @@ export default class ScopesScopeAuthMethodsRoute extends Route { @service session; @service can; @service resourceFilterStore; + @service router; // =attributes @@ -97,7 +98,7 @@ export default class ScopesScopeAuthMethodsRoute extends Route { // Reload the scope, since this is where the primary_auth_method_id is // stored. An auth method deletion could affect this field. await scopeModel.reload(); - await this.replaceWith('scopes.scope.auth-methods'); + await this.router.replaceWith('scopes.scope.auth-methods'); this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js index 51951aaef..cce5799e7 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js @@ -11,6 +11,8 @@ export default class ScopesScopeAuthMethodsAuthMethodAccountsRoute extends Route @service intl; @service notify; @service can; + @service router; + // =methods /** @@ -82,7 +84,9 @@ export default class ScopesScopeAuthMethodsAuthMethodAccountsRoute extends Route @notifySuccess('notifications.delete-success') async deleteAccount(account) { await account.destroyRecord(); - await this.replaceWith('scopes.scope.auth-methods.auth-method.accounts'); + await this.router.replaceWith( + 'scopes.scope.auth-methods.auth-method.accounts' + ); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js index 7f6212ded..019933eaf 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts/account/set-password.js @@ -9,6 +9,7 @@ export default class ScopesScopeAuthMethodsAuthMethodAccountsAccountSettingsRout @service intl; @service notify; + @service router; // =methods @@ -40,7 +41,7 @@ export default class ScopesScopeAuthMethodsAuthMethodAccountsAccountSettingsRout @notifySuccess('notifications.save-success') async setPassword(account, password) { await account.setPassword(password); - await this.replaceWith( + await this.router.replaceWith( 'scopes.scope.auth-methods.auth-method.accounts.account.set-password' ); } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js index 8271d74df..820ef822a 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js @@ -11,6 +11,7 @@ export default class ScopesScopeAuthMethodsAuthMethodManagedGroupsRoute extends @service intl; @service notify; @service can; + @service router; //=methods @@ -80,7 +81,7 @@ export default class ScopesScopeAuthMethodsAuthMethodManagedGroupsRoute extends @notifySuccess('notifications.delete-success') async delete(managedGroup) { await managedGroup.destroyRecord(); - await this.replaceWith( + await this.router.replaceWith( 'scopes.scope.auth-methods.auth-method.managed-groups' ); this.refresh(); diff --git a/ui/admin/app/routes/scopes/scope/credential-stores.js b/ui/admin/app/routes/scopes/scope/credential-stores.js index ef068f788..dbdd28f24 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores.js @@ -8,6 +8,8 @@ import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeCredentialStoresRoute extends Route { // =methods @service can; + @service router; + /** * Load all credential stores under current scope * @returns {Promise[CredentialStoreModel]} @@ -65,7 +67,7 @@ export default class ScopesScopeCredentialStoresRoute extends Route { @notifySuccess('notifications.delete-success') async delete(credentialStore) { await credentialStore.destroyRecord(); - await this.replaceWith('scopes.scope.credential-stores'); + await this.router.replaceWith('scopes.scope.credential-stores'); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js index 56f3fb967..8b8b0b259 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js @@ -8,6 +8,7 @@ import { inject as service } from '@ember/service'; export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrariesRoute extends Route { // =methods @service can; + @service router; /** * Loads all credential libraries under the current credential store. @@ -79,7 +80,7 @@ export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrari @notifySuccess('notifications.delete-success') async delete(credentialLibrary) { await credentialLibrary.destroyRecord(); - await this.replaceWith( + await this.router.replaceWith( 'scopes.scope.credential-stores.credential-store.credential-libraries' ); this.refresh(); diff --git a/ui/admin/app/routes/scopes/scope/groups.js b/ui/admin/app/routes/scopes/scope/groups.js index e57885eae..18ac1bef8 100644 --- a/ui/admin/app/routes/scopes/scope/groups.js +++ b/ui/admin/app/routes/scopes/scope/groups.js @@ -12,6 +12,8 @@ export default class ScopesScopeGroupsRoute extends Route { @service notify; @service session; @service can; + @service router; + // =methods /** @@ -76,7 +78,7 @@ export default class ScopesScopeGroupsRoute extends Route { @notifySuccess('notifications.delete-success') async delete(group) { await group.destroyRecord(); - await this.replaceWith('scopes.scope.groups'); + await this.router.replaceWith('scopes.scope.groups'); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/groups/group/add-members.js b/ui/admin/app/routes/scopes/scope/groups/group/add-members.js index b67e2cbbd..fda2aaaed 100644 --- a/ui/admin/app/routes/scopes/scope/groups/group/add-members.js +++ b/ui/admin/app/routes/scopes/scope/groups/group/add-members.js @@ -10,6 +10,7 @@ export default class ScopesScopeGroupsGroupAddMembersRoute extends Route { @service intl; @service notify; + @service router; // =methods @@ -70,7 +71,7 @@ export default class ScopesScopeGroupsGroupAddMembersRoute extends Route { @notifySuccess('notifications.add-success') async addMembers(group, userIDs) { await group.addMembers(userIDs); - await this.replaceWith('scopes.scope.groups.group.members'); + await this.router.replaceWith('scopes.scope.groups.group.members'); } /** @@ -78,6 +79,6 @@ export default class ScopesScopeGroupsGroupAddMembersRoute extends Route { */ @action cancel() { - this.replaceWith('scopes.scope.groups.group.members'); + this.router.replaceWith('scopes.scope.groups.group.members'); } } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs.js b/ui/admin/app/routes/scopes/scope/host-catalogs.js index cc5a1f508..50fea0152 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs.js @@ -12,6 +12,8 @@ export default class ScopesScopeHostCatalogsRoute extends Route { @service notify; @service session; @service can; + @service router; + // =methods /** @@ -79,7 +81,7 @@ export default class ScopesScopeHostCatalogsRoute extends Route { @notifySuccess('notifications.delete-success') async delete(hostCatalog) { await hostCatalog.destroyRecord(); - await this.replaceWith('scopes.scope.host-catalogs'); + await this.router.replaceWith('scopes.scope.host-catalogs'); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js index 2cc93e571..a5cb4df1f 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js @@ -11,6 +11,8 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsRoute extends Rou @service intl; @service notify; @service can; + @service router; + // =methods /** @@ -83,6 +85,8 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsRoute extends Rou @notifySuccess('notifications.delete-success') async deleteHostSet(hostSet) { await hostSet.destroyRecord(); - await this.replaceWith('scopes.scope.host-catalogs.host-catalog.host-sets'); + await this.router.replaceWith( + 'scopes.scope.host-catalogs.host-catalog.host-sets' + ); } } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js index 1173cf192..6ade00f97 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/add-hosts.js @@ -10,6 +10,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetAddHostsRo @service intl; @service notify; + @service router; // =methods @@ -75,7 +76,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetAddHostsRo @notifySuccess('notifications.add-success') async addHosts(hostSet, hostIDs) { await hostSet.addHosts(hostIDs); - await this.replaceWith( + await this.router.replaceWith( 'scopes.scope.host-catalogs.host-catalog.host-sets.host-set.hosts' ); } @@ -85,7 +86,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetAddHostsRo */ @action cancel() { - this.replaceWith( + this.router.replaceWith( 'scopes.scope.host-catalogs.host-catalog.host-sets.host-set.hosts' ); } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js index 2e6f95bb1..99aa7fe2e 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets/host-set/create-and-add-host.js @@ -9,6 +9,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetCreateAndA @service intl; @service notify; + @service router; // =methods @@ -70,7 +71,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetCreateAndA ); await host.save(); await hostSet.addHost(host.id); - await this.replaceWith( + await this.router.replaceWith( 'scopes.scope.host-catalogs.host-catalog.host-sets.host-set.hosts' ); } @@ -80,7 +81,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsHostSetCreateAndA */ @action cancel() { - this.replaceWith( + this.router.replaceWith( 'scopes.scope.host-catalogs.host-catalog.host-sets.host-set.hosts' ); } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js index 6f9f55614..06ced047b 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js @@ -11,6 +11,8 @@ export default class ScopesScopeHostCatalogsHostCatalogHostsRoute extends Route @service intl; @service notify; @service can; + @service router; + // =methods /** @@ -80,7 +82,9 @@ export default class ScopesScopeHostCatalogsHostCatalogHostsRoute extends Route @notifySuccess('notifications.delete-success') async deleteHost(host) { await host.destroyRecord(); - await this.replaceWith('scopes.scope.host-catalogs.host-catalog.hosts'); + await this.router.replaceWith( + 'scopes.scope.host-catalogs.host-catalog.hosts' + ); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/roles.js b/ui/admin/app/routes/scopes/scope/roles.js index b58427ec6..61d763561 100644 --- a/ui/admin/app/routes/scopes/scope/roles.js +++ b/ui/admin/app/routes/scopes/scope/roles.js @@ -12,6 +12,7 @@ export default class ScopesScopeRolesRoute extends Route { @service notify; @service session; @service can; + @service router; // =methods @@ -77,7 +78,7 @@ export default class ScopesScopeRolesRoute extends Route { @notifySuccess('notifications.delete-success') async delete(role) { await role.destroyRecord(); - await this.replaceWith('scopes.scope.roles'); + await this.router.replaceWith('scopes.scope.roles'); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js b/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js index 041952b82..c6dcf8b50 100644 --- a/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js +++ b/ui/admin/app/routes/scopes/scope/roles/role/add-principals.js @@ -10,6 +10,7 @@ export default class ScopesScopeRolesRoleAddPrincipalsRoute extends Route { @service intl; @service notify; + @service router; // =methods @@ -64,7 +65,7 @@ export default class ScopesScopeRolesRoleAddPrincipalsRoute extends Route { @notifySuccess('notifications.add-success') async addPrincipals(role, principalIDs) { await role.addPrincipals(principalIDs); - this.replaceWith('scopes.scope.roles.role.principals'); + this.router.replaceWith('scopes.scope.roles.role.principals'); } /** @@ -72,6 +73,6 @@ export default class ScopesScopeRolesRoleAddPrincipalsRoute extends Route { */ @action cancel() { - this.replaceWith('scopes.scope.roles.role.principals'); + this.router.replaceWith('scopes.scope.roles.role.principals'); } } diff --git a/ui/admin/app/routes/scopes/scope/targets.js b/ui/admin/app/routes/scopes/scope/targets.js index c07321095..1fc5d68ec 100644 --- a/ui/admin/app/routes/scopes/scope/targets.js +++ b/ui/admin/app/routes/scopes/scope/targets.js @@ -12,6 +12,7 @@ export default class ScopesScopeTargetsRoute extends Route { @service notify; @service session; @service can; + @service router; // =methods @@ -79,7 +80,7 @@ export default class ScopesScopeTargetsRoute extends Route { @notifySuccess('notifications.delete-success') async delete(target) { await target.destroyRecord(); - await this.replaceWith('scopes.scope.targets'); + await this.router.replaceWith('scopes.scope.targets'); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js b/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js index df5aac4a2..ed884719e 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/add-credential-sources.js @@ -10,6 +10,7 @@ export default class ScopesScopeTargetsTargetAddCredentialSourcesRoute extends R @service intl; @service notify; + @service router; // =methods @@ -78,7 +79,7 @@ export default class ScopesScopeTargetsTargetAddCredentialSourcesRoute extends R @notifySuccess('notifications.add-success') async save(target, credentialLibraryIDs) { await target.addCredentialSources(credentialLibraryIDs); - this.replaceWith('scopes.scope.targets.target.credential-sources'); + this.router.replaceWith('scopes.scope.targets.target.credential-sources'); } /** @@ -86,6 +87,6 @@ export default class ScopesScopeTargetsTargetAddCredentialSourcesRoute extends R */ @action cancel() { - this.replaceWith('scopes.scope.targets.target.credential-sources'); + this.router.replaceWith('scopes.scope.targets.target.credential-sources'); } } diff --git a/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js b/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js index 1118e144d..4a2987bb5 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/add-host-sources.js @@ -10,6 +10,7 @@ export default class ScopesScopeTargetsTargetAddHostSourcesRoute extends Route { @service intl; @service notify; + @service router; // =methods @@ -72,7 +73,7 @@ export default class ScopesScopeTargetsTargetAddHostSourcesRoute extends Route { @notifySuccess('notifications.add-success') async save(target, hostSetIDs) { await target.addHostSources(hostSetIDs); - this.replaceWith('scopes.scope.targets.target.host-sources'); + this.router.replaceWith('scopes.scope.targets.target.host-sources'); } /** @@ -80,6 +81,6 @@ export default class ScopesScopeTargetsTargetAddHostSourcesRoute extends Route { */ @action cancel() { - this.replaceWith('scopes.scope.targets.target.host-sources'); + this.router.replaceWith('scopes.scope.targets.target.host-sources'); } } diff --git a/ui/admin/app/routes/scopes/scope/users.js b/ui/admin/app/routes/scopes/scope/users.js index 6c07f23fb..de0aa8b0f 100644 --- a/ui/admin/app/routes/scopes/scope/users.js +++ b/ui/admin/app/routes/scopes/scope/users.js @@ -12,6 +12,7 @@ export default class ScopesScopeUsersRoute extends Route { @service notify; @service session; @service can; + @service router; // =methods @@ -78,7 +79,7 @@ export default class ScopesScopeUsersRoute extends Route { @notifySuccess('notifications.delete-success') async delete(user) { await user.destroyRecord(); - await this.replaceWith('scopes.scope.users'); + await this.router.replaceWith('scopes.scope.users'); this.refresh(); } } diff --git a/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js b/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js index fecc99be7..ab62093a4 100644 --- a/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js +++ b/ui/admin/app/routes/scopes/scope/users/user/add-accounts.js @@ -10,6 +10,7 @@ export default class ScopesScopeUsersUserAddAccountsRoute extends Route { @service intl; @service notify; + @service router; // =methods @@ -74,7 +75,7 @@ export default class ScopesScopeUsersUserAddAccountsRoute extends Route { @notifySuccess('notifications.add-success') async addAccounts(user, accountIDs) { await user.addAccounts(accountIDs); - await this.replaceWith('scopes.scope.users.user.accounts'); + await this.router.replaceWith('scopes.scope.users.user.accounts'); } /** @@ -82,6 +83,6 @@ export default class ScopesScopeUsersUserAddAccountsRoute extends Route { */ @action cancel() { - this.replaceWith('scopes.scope.users.user.accounts'); + this.router.replaceWith('scopes.scope.users.user.accounts'); } } diff --git a/ui/admin/app/styles/app.scss b/ui/admin/app/styles/app.scss index e8f3d4987..4112bd921 100644 --- a/ui/admin/app/styles/app.scss +++ b/ui/admin/app/styles/app.scss @@ -51,7 +51,7 @@ .rose-dropdown { $icon-width: sizing.rems(m) + sizing.rems(s); - $indent: $icon-width + sizing.rems(xs); + $indent: $icon-width + sizing.rems(xs); .rose-form-radio-label { display: flex; @@ -129,7 +129,14 @@ &.loading { &::after { animation: gradient 1s linear infinite; - background: repeating-linear-gradient(to right, var(--subtle), var(--subtle), var(--info), var(--subtle), var(--subtle)); + background: repeating-linear-gradient( + to right, + var(--subtle), + var(--subtle), + var(--info), + var(--subtle), + var(--subtle) + ); background-position: -100% 0; background-size: 200% auto; content: ' '; @@ -140,8 +147,12 @@ top: 100%; @keyframes gradient { - 0% { background-position: -100% 0; } - 100% { background-position: -200% 0; } + 0% { + background-position: -100% 0; + } + 100% { + background-position: -200% 0; + } } } } @@ -183,8 +194,12 @@ color: inherit; @keyframes fadeBackground { - 0% { background-color: var(--action-subtler-1); } - 100% { background-color: transparent; } + 0% { + background-color: var(--action-subtler-1); + } + 100% { + background-color: transparent; + } } } } diff --git a/ui/desktop/app/routes/index.js b/ui/desktop/app/routes/index.js index 200135491..5972dfd50 100644 --- a/ui/desktop/app/routes/index.js +++ b/ui/desktop/app/routes/index.js @@ -5,6 +5,7 @@ export default class IndexRoute extends Route { // =services @service origin; + @service router; // =methods @@ -14,9 +15,9 @@ export default class IndexRoute extends Route { redirect() { const rendererOrigin = this.origin.rendererOrigin; if (!rendererOrigin) { - this.replaceWith('origin'); + this.router.replaceWith('origin'); } else { - this.replaceWith('scopes'); + this.router.replaceWith('scopes'); } } } diff --git a/ui/desktop/app/routes/origin.js b/ui/desktop/app/routes/origin.js index ddd557c84..6e7760781 100644 --- a/ui/desktop/app/routes/origin.js +++ b/ui/desktop/app/routes/origin.js @@ -12,6 +12,7 @@ export default class OriginRoute extends Route { @service origin; @service intl; @service notify; + @service router; // =attributes @@ -40,7 +41,7 @@ export default class OriginRoute extends Route { * processing. User must be logged out before changing the origin. */ beforeModel() { - if (this.session.isAuthenticated) this.replaceWith('index'); + if (this.session.isAuthenticated) this.router.replaceWith('index'); } /** @@ -71,7 +72,7 @@ export default class OriginRoute extends Route { async setOrigin(origin) { try { await this.origin.setOrigin(origin); - this.replaceWith('index'); + this.router.replaceWith('index'); } catch (e) { // If scopes do not load, we assume this is not a Boundary API const errorMessage = this.intl.t( diff --git a/ui/desktop/app/routes/scopes/index.js b/ui/desktop/app/routes/scopes/index.js index 08660d8d2..7df757bd4 100644 --- a/ui/desktop/app/routes/scopes/index.js +++ b/ui/desktop/app/routes/scopes/index.js @@ -6,6 +6,7 @@ export default class ScopesIndexRoute extends Route { // =services @service session; + @service router; // =methods @@ -21,9 +22,9 @@ export default class ScopesIndexRoute extends Route { 'data.authenticated.scope.id' ); if (authenticatedScopeID) { - this.replaceWith('scopes.scope', authenticatedScopeID); + this.router.replaceWith('scopes.scope', authenticatedScopeID); } else { - this.replaceWith('scopes.scope', 'global'); + this.router.replaceWith('scopes.scope', 'global'); } } } diff --git a/ui/desktop/app/routes/scopes/scope/authenticate.js b/ui/desktop/app/routes/scopes/scope/authenticate.js index 9d71324f5..3190d1fed 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate.js @@ -7,11 +7,13 @@ export default class ScopesScopeAuthenticateRoute extends Route { @service session; @service origin; + @service router; // =methods beforeModel() { - if (this.session.isAuthenticated) this.replaceWith('scopes.scope.index'); + if (this.session.isAuthenticated) + this.router.replaceWith('scopes.scope.index'); } /** @@ -29,7 +31,7 @@ export default class ScopesScopeAuthenticateRoute extends Route { } redirect() { - if (!this.origin.rendererOrigin) this.replaceWith('index'); + if (!this.origin.rendererOrigin) this.router.replaceWith('index'); } /** diff --git a/ui/desktop/app/routes/scopes/scope/authenticate/index.js b/ui/desktop/app/routes/scopes/scope/authenticate/index.js index 392c5cd24..8775336a2 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate/index.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate/index.js @@ -1,6 +1,11 @@ import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; export default class ScopesScopeAuthenticateIndexRoute extends Route { + // =services + + @service router; + // =methods /** @@ -12,7 +17,10 @@ export default class ScopesScopeAuthenticateIndexRoute extends Route { redirect({ authMethods }) { const firstAuthMethod = authMethods.firstObject; if (firstAuthMethod) { - this.replaceWith('scopes.scope.authenticate.method', firstAuthMethod); + this.router.replaceWith( + 'scopes.scope.authenticate.method', + firstAuthMethod + ); } } } diff --git a/ui/desktop/app/routes/scopes/scope/index.js b/ui/desktop/app/routes/scopes/scope/index.js index 5df8ead9e..61a33dee2 100644 --- a/ui/desktop/app/routes/scopes/scope/index.js +++ b/ui/desktop/app/routes/scopes/scope/index.js @@ -5,6 +5,7 @@ export default class ScopesScopeIndexRoute extends Route { // =services @service session; + @service router; // =methods @@ -15,9 +16,9 @@ export default class ScopesScopeIndexRoute extends Route { */ redirect() { if (!this.session.isAuthenticated) { - this.replaceWith('scopes.scope.authenticate'); + this.router.replaceWith('scopes.scope.authenticate'); } else { - this.replaceWith('scopes.scope.projects.targets'); + this.router.replaceWith('scopes.scope.projects.targets'); } } } diff --git a/ui/desktop/app/styles/app.scss b/ui/desktop/app/styles/app.scss index 112756757..120390356 100644 --- a/ui/desktop/app/styles/app.scss +++ b/ui/desktop/app/styles/app.scss @@ -257,7 +257,8 @@ border-radius: sizing.rems(xxxs); margin: 0 auto; margin-top: sizing.rems(l) * 1.25; - padding: (sizing.rems(l) * 4) (sizing.rems(l) * 3) (sizing.rems(l) * 2) (sizing.rems(l) * 3); + padding: (sizing.rems(l) * 4) (sizing.rems(l) * 3) (sizing.rems(l) * 2) + (sizing.rems(l) * 3); position: relative; width: sizing.rems(l) * 16; @@ -324,7 +325,6 @@ text-align: center; } - // Dialog Detail // These styles are a Work In Progress. Expect changes (lots of them) .rose-dialog, @@ -487,12 +487,14 @@ $chevron-down: url("data:image/svg+xml;utf-8, new Response(401)); + await visit(urls.targets); await visit(urls.sessions); assert.notOk( currentSession().isAuthenticated, From 8bfa454df5692e28c308058e420145f1377bf532 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 3 Jan 2022 12:35:48 -0500 Subject: [PATCH 11/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20migrate=20to?= =?UTF-8?q?=20router.transitionTo=20due=20to=20deprecations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/admin/app/routes/account.js | 3 ++- ui/admin/app/routes/index.js | 7 ++++++- ui/admin/app/routes/scopes/index.js | 5 +++-- ui/admin/app/routes/scopes/scope.js | 4 ++-- ui/admin/app/routes/scopes/scope/auth-methods.js | 8 ++++---- .../scopes/scope/auth-methods/auth-method/accounts.js | 10 +++++++--- .../scope/auth-methods/auth-method/managed-groups.js | 8 +++++--- ui/admin/app/routes/scopes/scope/authenticate.js | 4 +++- .../app/routes/scopes/scope/authenticate/index.js | 10 +++++++++- .../app/routes/scopes/scope/authenticate/method.js | 5 +++-- .../routes/scopes/scope/authenticate/method/oidc.js | 3 ++- ui/admin/app/routes/scopes/scope/credential-stores.js | 9 ++++++--- .../credential-store/credential-libraries.js | 11 +++++++---- ui/admin/app/routes/scopes/scope/edit.js | 3 ++- ui/admin/app/routes/scopes/scope/groups.js | 8 ++++---- ui/admin/app/routes/scopes/scope/host-catalogs.js | 6 +++--- .../scope/host-catalogs/host-catalog/host-sets.js | 8 +++++--- .../scopes/scope/host-catalogs/host-catalog/hosts.js | 8 +++++--- ui/admin/app/routes/scopes/scope/index.js | 7 ++++--- ui/admin/app/routes/scopes/scope/new.js | 3 ++- ui/admin/app/routes/scopes/scope/roles.js | 8 ++++---- ui/admin/app/routes/scopes/scope/scopes.js | 3 ++- ui/admin/app/routes/scopes/scope/sessions.js | 3 ++- ui/admin/app/routes/scopes/scope/targets.js | 8 ++++---- ui/admin/app/routes/scopes/scope/users.js | 8 ++++---- .../app/routes/scopes/scope/authenticate/method.js | 5 +++-- .../routes/scopes/scope/authenticate/method/oidc.js | 5 ++--- ui/desktop/app/routes/scopes/scope/projects.js | 3 ++- .../app/routes/scopes/scope/projects/sessions.js | 3 ++- .../app/routes/scopes/scope/projects/targets.js | 3 ++- .../scopes/scope/projects/targets/target/index.js | 7 ++++++- 31 files changed, 117 insertions(+), 69 deletions(-) diff --git a/ui/admin/app/routes/account.js b/ui/admin/app/routes/account.js index 064525911..36a8e6011 100644 --- a/ui/admin/app/routes/account.js +++ b/ui/admin/app/routes/account.js @@ -5,6 +5,7 @@ export default class AccountRoute extends Route { // =services @service session; + @service router; // =methods @@ -12,6 +13,6 @@ export default class AccountRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } } diff --git a/ui/admin/app/routes/index.js b/ui/admin/app/routes/index.js index c8728d037..ba3d014d2 100644 --- a/ui/admin/app/routes/index.js +++ b/ui/admin/app/routes/index.js @@ -1,12 +1,17 @@ import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; export default class IndexRoute extends Route { + // =services + + @service router; + // =methods /** * Redirects to scopes route for further processing. */ redirect() { - this.transitionTo('scopes'); + this.router.transitionTo('scopes'); } } diff --git a/ui/admin/app/routes/scopes/index.js b/ui/admin/app/routes/scopes/index.js index b1ec77f7f..526d5f4fe 100644 --- a/ui/admin/app/routes/scopes/index.js +++ b/ui/admin/app/routes/scopes/index.js @@ -6,6 +6,7 @@ export default class ScopesIndexRoute extends Route { // =services @service session; + @service router; // =methods @@ -21,9 +22,9 @@ export default class ScopesIndexRoute extends Route { 'data.authenticated.scope.id' ); if (authenticatedScopeID) { - this.transitionTo('scopes.scope', authenticatedScopeID); + this.router.transitionTo('scopes.scope', authenticatedScopeID); } else { - this.transitionTo('scopes.scope', 'global'); + this.router.transitionTo('scopes.scope', 'global'); } } } diff --git a/ui/admin/app/routes/scopes/scope.js b/ui/admin/app/routes/scopes/scope.js index 998117b27..534940834 100644 --- a/ui/admin/app/routes/scopes/scope.js +++ b/ui/admin/app/routes/scopes/scope.js @@ -117,7 +117,7 @@ export default class ScopesScopeRoute extends Route { cancel(scope) { const { isNew } = scope; scope.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope'); + if (isNew) this.router.transitionTo('scopes.scope'); } /** @@ -134,7 +134,7 @@ export default class ScopesScopeRoute extends Route { async save(scope) { const { isNew } = scope; await scope.save(); - await this.transitionTo('scopes.scope.edit', scope); + await this.router.transitionTo('scopes.scope.edit', scope); if (isNew) this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods.js b/ui/admin/app/routes/scopes/scope/auth-methods.js index 2348a2d83..e56b1843b 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods.js @@ -26,7 +26,7 @@ export default class ScopesScopeAuthMethodsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** @@ -57,7 +57,7 @@ export default class ScopesScopeAuthMethodsRoute extends Route { cancel(authMethod) { const { isNew } = authMethod; authMethod.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.auth-methods'); + if (isNew) this.router.transitionTo('scopes.scope.auth-methods'); } /** @@ -73,12 +73,12 @@ export default class ScopesScopeAuthMethodsRoute extends Route { async save(authMethod) { await authMethod.save(); if (this.can.can('read model', authMethod)) { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.auth-methods.auth-method', authMethod ); } else { - await this.transitionTo('scopes.scope.auth-methods'); + await this.router.transitionTo('scopes.scope.auth-methods'); } this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js index cce5799e7..9fcb9b990 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/accounts.js @@ -42,7 +42,9 @@ export default class ScopesScopeAuthMethodsAuthMethodAccountsRoute extends Route const { isNew } = account; account.rollbackAttributes(); if (isNew) - this.transitionTo('scopes.scope.auth-methods.auth-method.accounts'); + this.router.transitionTo( + 'scopes.scope.auth-methods.auth-method.accounts' + ); } /** @@ -63,12 +65,14 @@ export default class ScopesScopeAuthMethodsAuthMethodAccountsRoute extends Route } await account.save({ adapterOptions }); if (this.can.can('read model', account)) { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.auth-methods.auth-method.accounts.account', account ); } else { - await this.transitionTo('scopes.scope.auth-methods.auth-method.accounts'); + await this.router.transitionTo( + 'scopes.scope.auth-methods.auth-method.accounts' + ); } this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js index 820ef822a..51b55adb9 100644 --- a/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js +++ b/ui/admin/app/routes/scopes/scope/auth-methods/auth-method/managed-groups.js @@ -41,7 +41,9 @@ export default class ScopesScopeAuthMethodsAuthMethodManagedGroupsRoute extends const { isNew } = managedGroup; managedGroup.rollbackAttributes(); if (isNew) { - this.transitionTo('scopes.scope.auth-methods.auth-method.managed-groups'); + this.router.transitionTo( + 'scopes.scope.auth-methods.auth-method.managed-groups' + ); } } @@ -58,12 +60,12 @@ export default class ScopesScopeAuthMethodsAuthMethodManagedGroupsRoute extends async save(managedGroup) { await managedGroup.save(); if (this.can.can('read model', managedGroup)) { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.auth-methods.auth-method.managed-groups.managed-group', managedGroup ); } else { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.auth-methods.auth-method.managed-groups' ); } diff --git a/ui/admin/app/routes/scopes/scope/authenticate.js b/ui/admin/app/routes/scopes/scope/authenticate.js index 21d9de8e4..9f1130ce6 100644 --- a/ui/admin/app/routes/scopes/scope/authenticate.js +++ b/ui/admin/app/routes/scopes/scope/authenticate.js @@ -6,11 +6,13 @@ export default class ScopesScopeAuthenticateRoute extends Route { // =services @service session; + @service router; // =methods beforeModel() { - if (this.session.isAuthenticated) this.transitionTo('scopes.scope.index'); + if (this.session.isAuthenticated) + this.router.transitionTo('scopes.scope.index'); } /** diff --git a/ui/admin/app/routes/scopes/scope/authenticate/index.js b/ui/admin/app/routes/scopes/scope/authenticate/index.js index 9d6ce9d61..beb525fec 100644 --- a/ui/admin/app/routes/scopes/scope/authenticate/index.js +++ b/ui/admin/app/routes/scopes/scope/authenticate/index.js @@ -1,6 +1,11 @@ import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; export default class ScopesScopeAuthenticateIndexRoute extends Route { + // =services + + @service router; + // =methods /** @@ -12,7 +17,10 @@ export default class ScopesScopeAuthenticateIndexRoute extends Route { redirect({ authMethods }) { const firstAuthMethod = authMethods.firstObject; if (firstAuthMethod) { - this.transitionTo('scopes.scope.authenticate.method', firstAuthMethod); + this.router.transitionTo( + 'scopes.scope.authenticate.method', + firstAuthMethod + ); } } } diff --git a/ui/admin/app/routes/scopes/scope/authenticate/method.js b/ui/admin/app/routes/scopes/scope/authenticate/method.js index 8da0f3cae..d09ef3688 100644 --- a/ui/admin/app/routes/scopes/scope/authenticate/method.js +++ b/ui/admin/app/routes/scopes/scope/authenticate/method.js @@ -12,6 +12,7 @@ export default class ScopesScopeAuthenticateMethodRoute extends Route { @service notify; @service intl; @service windowManager; + @service router; // =methods @@ -60,14 +61,14 @@ export default class ScopesScopeAuthenticateMethodRoute extends Route { requestCookies, { scope, authMethod } ); - this.transitionTo('index'); + this.router.transitionTo('index'); break; case 'oidc': await this.startOIDCAuthentication(authenticatorName, { scope, authMethod, }); - this.transitionTo('scopes.scope.authenticate.method.oidc'); + this.router.transitionTo('scopes.scope.authenticate.method.oidc'); break; } } diff --git a/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js b/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js index b8fa4519c..7cc24d5c5 100644 --- a/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js +++ b/ui/admin/app/routes/scopes/scope/authenticate/method/oidc.js @@ -13,6 +13,7 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { @service session; @service windowManager; + @service router; // =methods @@ -47,7 +48,7 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { @action @notifyError(() => 'errors.authentication-failed.title', { catch: true }) error(e) { - this.transitionTo('scopes.scope.authenticate.method.index'); + this.router.transitionTo('scopes.scope.authenticate.method.index'); // rethrow the error to activate the notifyError decorator throw e; } diff --git a/ui/admin/app/routes/scopes/scope/credential-stores.js b/ui/admin/app/routes/scopes/scope/credential-stores.js index dbdd28f24..028318ede 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores.js @@ -6,10 +6,13 @@ import { confirm } from 'core/decorators/confirm'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeCredentialStoresRoute extends Route { - // =methods + // =services + @service can; @service router; + // =methods + /** * Load all credential stores under current scope * @returns {Promise[CredentialStoreModel]} @@ -38,7 +41,7 @@ export default class ScopesScopeCredentialStoresRoute extends Route { @notifySuccess('notifications.save-success') async save(credentialStore) { await credentialStore.save(); - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.credential-stores.credential-store', credentialStore ); @@ -53,7 +56,7 @@ export default class ScopesScopeCredentialStoresRoute extends Route { cancel(credentialStore) { const { isNew } = credentialStore; credentialStore.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.credential-stores'); + if (isNew) this.router.transitionTo('scopes.scope.credential-stores'); } /** diff --git a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js index 8b8b0b259..a8f8db78a 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js @@ -6,10 +6,13 @@ import { notifySuccess, notifyError } from 'core/decorators/notify'; import { inject as service } from '@ember/service'; export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrariesRoute extends Route { - // =methods + // =services + @service can; @service router; + // =methods + /** * Loads all credential libraries under the current credential store. * @return {Promise{[CredentialLibraryModel]}} @@ -39,7 +42,7 @@ export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrari const { isNew } = credentialLibrary; credentialLibrary.rollbackAttributes(); if (isNew) - this.transitionTo( + this.router.transitionTo( 'scopes.scope.credential-stores.credential-store.credential-libraries' ); } @@ -57,12 +60,12 @@ export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrari async save(credentialLibrary) { await credentialLibrary.save(); if (this.can.can('read model', credentialLibrary)) { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.credential-stores.credential-store.credential-libraries.credential-library', credentialLibrary ); } else { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.credential-stores.credential-store.credential-libraries' ); } diff --git a/ui/admin/app/routes/scopes/scope/edit.js b/ui/admin/app/routes/scopes/scope/edit.js index 5928b678f..b227adfd5 100644 --- a/ui/admin/app/routes/scopes/scope/edit.js +++ b/ui/admin/app/routes/scopes/scope/edit.js @@ -5,6 +5,7 @@ export default class ScopesScopeEditRoute extends Route { // =services @service session; + @service router; // =methods @@ -12,6 +13,6 @@ export default class ScopesScopeEditRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } } diff --git a/ui/admin/app/routes/scopes/scope/groups.js b/ui/admin/app/routes/scopes/scope/groups.js index 18ac1bef8..26a4b5412 100644 --- a/ui/admin/app/routes/scopes/scope/groups.js +++ b/ui/admin/app/routes/scopes/scope/groups.js @@ -20,7 +20,7 @@ export default class ScopesScopeGroupsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** @@ -44,7 +44,7 @@ export default class ScopesScopeGroupsRoute extends Route { cancel(group) { const { isNew } = group; group.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.groups'); + if (isNew) this.router.transitionTo('scopes.scope.groups'); } /** @@ -60,9 +60,9 @@ export default class ScopesScopeGroupsRoute extends Route { async save(group) { await group.save(); if (this.can.can('read model', group)) { - await this.transitionTo('scopes.scope.groups.group', group); + await this.router.transitionTo('scopes.scope.groups.group', group); } else { - await this.transitionTo('scopes.scope.groups'); + await this.router.transitionTo('scopes.scope.groups'); } this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs.js b/ui/admin/app/routes/scopes/scope/host-catalogs.js index 50fea0152..bb041225c 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs.js @@ -20,7 +20,7 @@ export default class ScopesScopeHostCatalogsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** @@ -47,7 +47,7 @@ export default class ScopesScopeHostCatalogsRoute extends Route { cancel(hostCatalog) { const { isNew } = hostCatalog; hostCatalog.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.host-catalogs'); + if (isNew) this.router.transitionTo('scopes.scope.host-catalogs'); } /** @@ -63,7 +63,7 @@ export default class ScopesScopeHostCatalogsRoute extends Route { ) async save(hostCatalog) { await hostCatalog.save(); - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.host-catalogs.host-catalog', hostCatalog ); diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js index a5cb4df1f..b8f8c16f7 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/host-sets.js @@ -45,7 +45,9 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsRoute extends Rou const { isNew } = hostSet; hostSet.rollbackAttributes(); if (isNew) - this.transitionTo('scopes.scope.host-catalogs.host-catalog.host-sets'); + this.router.transitionTo( + 'scopes.scope.host-catalogs.host-catalog.host-sets' + ); } /** @@ -62,12 +64,12 @@ export default class ScopesScopeHostCatalogsHostCatalogHostSetsRoute extends Rou async save(hostSet) { await hostSet.save(); if (this.can.can('read model', hostSet)) { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.host-catalogs.host-catalog.host-sets.host-set', hostSet ); } else { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.host-catalogs.host-catalog.host-sets' ); } diff --git a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js index 06ced047b..ff9475ddb 100644 --- a/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js +++ b/ui/admin/app/routes/scopes/scope/host-catalogs/host-catalog/hosts.js @@ -44,7 +44,7 @@ export default class ScopesScopeHostCatalogsHostCatalogHostsRoute extends Route const { isNew } = host; host.rollbackAttributes(); if (isNew) - this.transitionTo('scopes.scope.host-catalogs.host-catalog.hosts'); + this.router.transitionTo('scopes.scope.host-catalogs.host-catalog.hosts'); } /** @@ -61,12 +61,14 @@ export default class ScopesScopeHostCatalogsHostCatalogHostsRoute extends Route async save(host) { await host.save(); if (this.can.can('read model', host)) { - await this.transitionTo( + await this.router.transitionTo( 'scopes.scope.host-catalogs.host-catalog.hosts.host', host ); } else { - await this.transitionTo('scopes.scope.host-catalogs.host-catalog.hosts'); + await this.router.transitionTo( + 'scopes.scope.host-catalogs.host-catalog.hosts' + ); } this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/index.js b/ui/admin/app/routes/scopes/scope/index.js index 8ae76d0a6..d2d2efeea 100644 --- a/ui/admin/app/routes/scopes/scope/index.js +++ b/ui/admin/app/routes/scopes/scope/index.js @@ -5,6 +5,7 @@ export default class ScopesScopeIndexRoute extends Route { // =services @service session; + @service router; // =methods @@ -15,11 +16,11 @@ export default class ScopesScopeIndexRoute extends Route { */ redirect(model) { if (!this.session.isAuthenticated) { - this.transitionTo('scopes.scope.authenticate'); + this.router.transitionTo('scopes.scope.authenticate'); } else if (model.isProject) { - this.transitionTo('scopes.scope.edit'); + this.router.transitionTo('scopes.scope.edit'); } else { - this.transitionTo('scopes.scope.scopes'); + this.router.transitionTo('scopes.scope.scopes'); } } } diff --git a/ui/admin/app/routes/scopes/scope/new.js b/ui/admin/app/routes/scopes/scope/new.js index 54a0949be..c5de307ba 100644 --- a/ui/admin/app/routes/scopes/scope/new.js +++ b/ui/admin/app/routes/scopes/scope/new.js @@ -5,6 +5,7 @@ export default class ScopesScopeNewRoute extends Route { // =services @service session; + @service router; // =methods @@ -12,7 +13,7 @@ export default class ScopesScopeNewRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** diff --git a/ui/admin/app/routes/scopes/scope/roles.js b/ui/admin/app/routes/scopes/scope/roles.js index 61d763561..508295d34 100644 --- a/ui/admin/app/routes/scopes/scope/roles.js +++ b/ui/admin/app/routes/scopes/scope/roles.js @@ -20,7 +20,7 @@ export default class ScopesScopeRolesRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** @@ -44,7 +44,7 @@ export default class ScopesScopeRolesRoute extends Route { cancel(role) { const { isNew } = role; role.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.roles'); + if (isNew) this.router.transitionTo('scopes.scope.roles'); } /** @@ -60,9 +60,9 @@ export default class ScopesScopeRolesRoute extends Route { async save(role) { await role.save(); if (this.can.can('read model', role)) { - await this.transitionTo('scopes.scope.roles.role', role); + await this.router.transitionTo('scopes.scope.roles.role', role); } else { - await this.transitionTo('scopes.scope.roles'); + await this.router.transitionTo('scopes.scope.roles'); } this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/scopes.js b/ui/admin/app/routes/scopes/scope/scopes.js index 7a588dd2c..4052d285a 100644 --- a/ui/admin/app/routes/scopes/scope/scopes.js +++ b/ui/admin/app/routes/scopes/scope/scopes.js @@ -10,6 +10,7 @@ export default class ScopesScopeScopesRoute extends Route { // =services @service session; + @service router; // =methods @@ -17,7 +18,7 @@ export default class ScopesScopeScopesRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** diff --git a/ui/admin/app/routes/scopes/scope/sessions.js b/ui/admin/app/routes/scopes/scope/sessions.js index 71038382c..b17f548ce 100644 --- a/ui/admin/app/routes/scopes/scope/sessions.js +++ b/ui/admin/app/routes/scopes/scope/sessions.js @@ -17,6 +17,7 @@ export default class ScopesScopeSessionsRoute extends Route { @service notify; @service session; @service resourceFilterStore; + @service router; // =attributes @@ -37,7 +38,7 @@ export default class ScopesScopeSessionsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** diff --git a/ui/admin/app/routes/scopes/scope/targets.js b/ui/admin/app/routes/scopes/scope/targets.js index 1fc5d68ec..b64d915ce 100644 --- a/ui/admin/app/routes/scopes/scope/targets.js +++ b/ui/admin/app/routes/scopes/scope/targets.js @@ -20,7 +20,7 @@ export default class ScopesScopeTargetsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** @@ -45,7 +45,7 @@ export default class ScopesScopeTargetsRoute extends Route { cancel(target) { const { isNew } = target; target.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.targets'); + if (isNew) this.router.transitionTo('scopes.scope.targets'); } /** @@ -62,9 +62,9 @@ export default class ScopesScopeTargetsRoute extends Route { async save(target) { await target.save(); if (this.can.can('read model', target)) { - await this.transitionTo('scopes.scope.targets.target', target); + await this.router.transitionTo('scopes.scope.targets.target', target); } else { - await this.transitionTo('scopes.scope.targets'); + await this.router.transitionTo('scopes.scope.targets'); } this.refresh(); } diff --git a/ui/admin/app/routes/scopes/scope/users.js b/ui/admin/app/routes/scopes/scope/users.js index de0aa8b0f..5b921a65d 100644 --- a/ui/admin/app/routes/scopes/scope/users.js +++ b/ui/admin/app/routes/scopes/scope/users.js @@ -20,7 +20,7 @@ export default class ScopesScopeUsersRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** @@ -44,7 +44,7 @@ export default class ScopesScopeUsersRoute extends Route { cancel(user) { const { isNew } = user; user.rollbackAttributes(); - if (isNew) this.transitionTo('scopes.scope.users'); + if (isNew) this.router.transitionTo('scopes.scope.users'); } /** @@ -61,9 +61,9 @@ export default class ScopesScopeUsersRoute extends Route { async save(user) { await user.save(); if (this.can.can('read model', user)) { - await this.transitionTo('scopes.scope.users.user', user); + await this.router.transitionTo('scopes.scope.users.user', user); } else { - await this.transitionTo('scopes.scope.users'); + await this.router.transitionTo('scopes.scope.users'); } this.refresh(); } diff --git a/ui/desktop/app/routes/scopes/scope/authenticate/method.js b/ui/desktop/app/routes/scopes/scope/authenticate/method.js index c88264f72..02d8d90d8 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate/method.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate/method.js @@ -12,6 +12,7 @@ export default class ScopesScopeAuthenticateMethodRoute extends Route { @service notify; @service ipc; @service intl; + @service router; // =methods @@ -67,14 +68,14 @@ export default class ScopesScopeAuthenticateMethodRoute extends Route { requestCookies, { scope, authMethod } ); - this.transitionTo('index'); + this.router.transitionTo('index'); break; case 'oidc': await this.startOIDCAuthentication(authenticatorName, { scope, authMethod, }); - this.transitionTo('scopes.scope.authenticate.method.oidc'); + this.router.transitionTo('scopes.scope.authenticate.method.oidc'); break; } } diff --git a/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js b/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js index f2f8f81cd..322693876 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate/method/oidc.js @@ -12,8 +12,7 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { // =services @service session; - - // =attributes + @service router; // =methods @@ -39,7 +38,7 @@ export default class ScopesScopeAuthenticateMethodOidcRoute extends Route { @action @notifyError(() => 'errors.authentication-failed.title', { catch: true }) error(e) { - this.transitionTo('scopes.scope.authenticate.method.index'); + this.router.transitionTo('scopes.scope.authenticate.method.index'); // rethrow the error to activate the notifyError decorator throw e; } diff --git a/ui/desktop/app/routes/scopes/scope/projects.js b/ui/desktop/app/routes/scopes/scope/projects.js index 1a92b91a8..192bf87de 100644 --- a/ui/desktop/app/routes/scopes/scope/projects.js +++ b/ui/desktop/app/routes/scopes/scope/projects.js @@ -20,6 +20,7 @@ export default class ScopesScopeProjectsRoute extends Route { @service session; @service resourceFilterStore; + @service router; // =methods @@ -27,7 +28,7 @@ export default class ScopesScopeProjectsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/sessions.js index 668d0cc52..d592ed90e 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions.js @@ -14,6 +14,7 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { @service ipc; @service session; @service resourceFilterStore; + @service router; // =attributes @@ -36,7 +37,7 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets.js b/ui/desktop/app/routes/scopes/scope/projects/targets.js index e33c5b833..345467ff0 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets.js @@ -16,6 +16,7 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { @service notify; @service confirm; @service resourceFilterStore; + @service router; // =attributes @@ -32,7 +33,7 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { * If arriving here unauthenticated, redirect to index for further processing. */ beforeModel() { - if (!this.session.isAuthenticated) this.transitionTo('index'); + if (!this.session.isAuthenticated) this.router.transitionTo('index'); } /** diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js b/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js index 82513fa81..c0e280c73 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js @@ -1,12 +1,17 @@ import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; export default class ScopesScopeProjectsTargetsTargetIndexRoute extends Route { + // =services + + @service router; + // =methods /** * Navigate to hosts within a target. */ afterModel() { - this.transitionTo('scopes.scope.projects.targets.target.sessions'); + this.router.transitionTo('scopes.scope.projects.targets.target.sessions'); } } From af92c65f604a239b8a6e79e860e3c6390669ca57 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 3 Jan 2022 12:52:29 -0500 Subject: [PATCH 12/12] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20migrate=20reso?= =?UTF-8?q?urce=20filtering=20transitionTo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/core/addon/decorators/resource-filter.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/core/addon/decorators/resource-filter.js b/addons/core/addon/decorators/resource-filter.js index df84cb09a..4c291c066 100644 --- a/addons/core/addon/decorators/resource-filter.js +++ b/addons/core/addon/decorators/resource-filter.js @@ -44,6 +44,11 @@ class RouteResourceFilter extends EmberObject { return this.allowed; } + get router() { + const owner = getOwner(this.route); + return owner.lookup('service:router'); + } + /** * Currently selected value(s) for this filter, deserialized from the value of * the associated route query parameter. @@ -67,7 +72,7 @@ class RouteResourceFilter extends EmberObject { const queryParams = {}; const serialized = value.map((value) => this.serializeValue(value)); queryParams[this.filterKey] = JSON.stringify(serialized); - this.route.transitionTo({ queryParams }); + this.router.transitionTo(this.route.routeName, { queryParams }); } // =methods