diff --git a/addons/api/.editorconfig b/addons/api/.editorconfig
index c35a00240..41302d1b0 100644
--- a/addons/api/.editorconfig
+++ b/addons/api/.editorconfig
@@ -12,8 +12,5 @@ insert_final_newline = true
indent_style = space
indent_size = 2
-[*.hbs]
-insert_final_newline = false
-
[*.{diff,md}]
trim_trailing_whitespace = false
diff --git a/addons/api/.eslintrc.js b/addons/api/.eslintrc.js
index 49fb14100..114c6817f 100644
--- a/addons/api/.eslintrc.js
+++ b/addons/api/.eslintrc.js
@@ -56,5 +56,10 @@ module.exports = {
plugins: ['node'],
extends: ['plugin:node/recommended'],
},
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
],
};
diff --git a/addons/api/mirage/config.js b/addons/api/mirage/config.js
index b1481adf9..213f71d33 100644
--- a/addons/api/mirage/config.js
+++ b/addons/api/mirage/config.js
@@ -1,4 +1,3 @@
-import Ember from 'ember';
import config from '../config/environment';
import { authHandler, deauthHandler } from './route-handlers/auth';
import { pickRandomStatusString } from './factories/session';
@@ -6,6 +5,8 @@ import { Response } from 'miragejs';
import initializeMockIPC from './scenarios/ipc';
import makeBooleanFilter from './helpers/bexpr-filter';
+const isTesting = config.environment === 'test';
+
export default function () {
initializeMockIPC(this);
@@ -417,7 +418,7 @@ export default function () {
// update alternate sessions to auth user.
// But only if not in testing mode.
// In tests, we need deterministic statuses.
- if (!Ember.testing) {
+ if (!isTesting) {
sessions.all().models.forEach((session) => {
session.update({
status: pickRandomStatusString(),
@@ -446,7 +447,7 @@ export default function () {
);
this.get('/sessions/:id', function ({ sessions }, { params: { id } }) {
const session = sessions.find(id);
- if (!Ember.testing) {
+ if (!isTesting) {
session.update({
status: pickRandomStatusString(),
});
diff --git a/addons/api/mirage/scenarios/ipc.js b/addons/api/mirage/scenarios/ipc.js
index 6e44988e4..0c01a656e 100644
--- a/addons/api/mirage/scenarios/ipc.js
+++ b/addons/api/mirage/scenarios/ipc.js
@@ -1,7 +1,8 @@
-import Ember from 'ember';
import config from 'ember-get-config';
import { datatype } from 'faker';
+const isTesting = config.environment === 'test';
+
export default function initializeMockIPC(server) {
/**
* We strive to make this application runnable in a regular web browser, since
@@ -149,7 +150,7 @@ export default function initializeMockIPC(server) {
*
* Initializes mock IPC only in a non-Electron non-testing context.
*/
- if (!config.isElectron && !Ember.testing) {
+ if (!config.isElectron && !isTesting) {
const mockIPC = new MockIPC();
window.addEventListener('message', async function (event) {
if (event.origin !== window.location.origin) return;
diff --git a/addons/api/package.json b/addons/api/package.json
index 1012dd943..2fcc5ae78 100644
--- a/addons/api/package.json
+++ b/addons/api/package.json
@@ -43,12 +43,11 @@
"broccoli-asset-rev": "^3.0.0",
"doctoc": "^2.0.1",
"ember-auto-import": "^1.12.0",
- "ember-cli": "~3.28.0",
+ "ember-cli": "~3.28.3",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-inject-live-reload": "^2.1.0",
"ember-cli-sri": "^2.1.1",
"ember-cli-terser": "^4.0.2",
- "ember-cli-update": "^0.54.6",
"ember-copy": "^2.0.1",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-export-application-global": "^2.0.1",
@@ -58,7 +57,7 @@
"ember-page-title": "^6.2.2",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.3",
- "ember-source": "~3.24.0",
+ "ember-source": "~3.28.4",
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^3.7.0",
"ember-try": "^1.4.0",
@@ -67,6 +66,7 @@
"eslint-plugin-ember": "^10.5.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-qunit": "^6.2.0",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.4.0",
@@ -74,7 +74,7 @@
"qunit-dom": "^2.0.0"
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
},
"ember": {
"edition": "octane"
diff --git a/addons/api/tests/unit/models/base-test.js b/addons/api/tests/unit/models/base-test.js
index 228f47782..8e320cfdf 100644
--- a/addons/api/tests/unit/models/base-test.js
+++ b/addons/api/tests/unit/models/base-test.js
@@ -47,7 +47,7 @@ module('Unit | Model | base', function (hooks) {
assert.notEqual(model.scopeID, scope.id);
model.scopeModel = scope;
assert.equal(model.scopeID, scope.id);
- assert.equal(model.scope.isOrg, true);
+ assert.true(model.scope.isOrg);
});
test('it has a displayName attribute', function (assert) {
@@ -78,18 +78,18 @@ module('Unit | Model | base', function (hooks) {
},
});
const model = store.peekRecord('user', '1');
- assert.equal(model.canSave, false);
- assert.equal(model.cannotSave, true);
+ assert.false(model.canSave);
+ assert.true(model.cannotSave);
// Should be able to save if dirty
model.name = 'User';
- assert.equal(model.hasDirtyAttributes, true);
- assert.equal(model.canSave, true);
- assert.equal(model.cannotSave, false);
+ assert.true(model.hasDirtyAttributes);
+ assert.true(model.canSave);
+ assert.false(model.cannotSave);
// Should not be able to save while currently saving
model.transitionTo('updated.inFlight');
- assert.equal(model.isSaving, true);
- assert.equal(model.canSave, false);
- assert.equal(model.cannotSave, true);
+ assert.true(model.isSaving);
+ assert.false(model.canSave);
+ assert.true(model.cannotSave);
model.transitionTo('loaded');
});
diff --git a/addons/api/tests/unit/services/storage-test.js b/addons/api/tests/unit/services/storage-test.js
index 61702c765..5b955dc21 100644
--- a/addons/api/tests/unit/services/storage-test.js
+++ b/addons/api/tests/unit/services/storage-test.js
@@ -30,7 +30,7 @@ module('Unit | Service | storage', function (hooks) {
assert.equal(service.getItem('foo'), 'bar');
});
- test("it's in-memory storage is implicitly refreshed for every test case", function (assert) {
+ test("it's in-memory storage is implicitly refreshed for every test case, and thus values from previous runs are not present", function (assert) {
assert.expect(1);
const service = this.owner.lookup('service:storage');
assert.notOk(service.getItem('foo'));
diff --git a/addons/auth/.editorconfig b/addons/auth/.editorconfig
index c35a00240..41302d1b0 100644
--- a/addons/auth/.editorconfig
+++ b/addons/auth/.editorconfig
@@ -12,8 +12,5 @@ insert_final_newline = true
indent_style = space
indent_size = 2
-[*.hbs]
-insert_final_newline = false
-
[*.{diff,md}]
trim_trailing_whitespace = false
diff --git a/addons/auth/.eslintrc.js b/addons/auth/.eslintrc.js
index 49fb14100..114c6817f 100644
--- a/addons/auth/.eslintrc.js
+++ b/addons/auth/.eslintrc.js
@@ -56,5 +56,10 @@ module.exports = {
plugins: ['node'],
extends: ['plugin:node/recommended'],
},
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
],
};
diff --git a/addons/auth/package.json b/addons/auth/package.json
index d47105134..bc19d30ec 100644
--- a/addons/auth/package.json
+++ b/addons/auth/package.json
@@ -36,12 +36,11 @@
"core": "*",
"doctoc": "^2.0.1",
"ember-auto-import": "^1.12.0",
- "ember-cli": "~3.28.0",
+ "ember-cli": "~3.28.3",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-inject-live-reload": "^2.1.0",
"ember-cli-sri": "^2.1.1",
"ember-cli-terser": "^4.0.2",
- "ember-cli-update": "^0.54.6",
"ember-cookies": "^0.5.2",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-export-application-global": "^2.0.1",
@@ -50,7 +49,7 @@
"ember-page-title": "^6.2.2",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.3",
- "ember-source": "~3.24.0",
+ "ember-source": "~3.28.4",
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^3.7.0",
"ember-try": "^1.4.0",
@@ -59,6 +58,7 @@
"eslint-plugin-ember": "^10.5.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-qunit": "^6.2.0",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.4.0",
@@ -66,7 +66,7 @@
"qunit-dom": "^2.0.0"
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
},
"ember": {
"edition": "octane"
diff --git a/addons/core/.editorconfig b/addons/core/.editorconfig
index c35a00240..41302d1b0 100644
--- a/addons/core/.editorconfig
+++ b/addons/core/.editorconfig
@@ -12,8 +12,5 @@ insert_final_newline = true
indent_style = space
indent_size = 2
-[*.hbs]
-insert_final_newline = false
-
[*.{diff,md}]
trim_trailing_whitespace = false
diff --git a/addons/core/.eslintrc.js b/addons/core/.eslintrc.js
index 49fb14100..114c6817f 100644
--- a/addons/core/.eslintrc.js
+++ b/addons/core/.eslintrc.js
@@ -56,5 +56,10 @@ module.exports = {
plugins: ['node'],
extends: ['plugin:node/recommended'],
},
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
],
};
diff --git a/addons/core/addon/initializers/deprecations.js b/addons/core/addon/initializers/deprecations.js
new file mode 100644
index 000000000..c955b7e4b
--- /dev/null
+++ b/addons/core/addon/initializers/deprecations.js
@@ -0,0 +1,17 @@
+import { registerDeprecationHandler } from '@ember/debug';
+import config from 'ember-get-config';
+
+const isTesting = config.environment === 'test';
+
+export function initialize(/* application */) {
+ if (isTesting) {
+ // Disable all deprecations for now in tests.
+ registerDeprecationHandler((/*message, options, next*/) => {
+ return;
+ });
+ }
+}
+
+export default {
+ initialize,
+};
diff --git a/addons/core/app/initializers/deprecations.js b/addons/core/app/initializers/deprecations.js
new file mode 100644
index 000000000..ba37e6e59
--- /dev/null
+++ b/addons/core/app/initializers/deprecations.js
@@ -0,0 +1 @@
+export { default, initialize } from 'core/initializers/deprecations';
diff --git a/addons/core/package.json b/addons/core/package.json
index 199973f38..c12f03dcd 100644
--- a/addons/core/package.json
+++ b/addons/core/package.json
@@ -50,7 +50,7 @@
"broccoli-asset-rev": "^3.0.0",
"doctoc": "^2.0.1",
"ember-auto-import": "^1.12.0",
- "ember-cli": "~3.28.0",
+ "ember-cli": "~3.28.3",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-inject-live-reload": "^2.1.0",
"ember-cli-sri": "^2.1.1",
@@ -63,7 +63,7 @@
"ember-page-title": "^6.2.2",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.3",
- "ember-source": "~3.24.0",
+ "ember-source": "~3.28.4",
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^3.7.0",
"ember-try": "^1.4.0",
@@ -72,6 +72,7 @@
"eslint-plugin-ember": "^10.5.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-qunit": "^6.2.0",
"faker": "^5.5.3",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
@@ -80,7 +81,7 @@
"qunit-dom": "^2.0.0"
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
},
"ember": {
"edition": "octane"
diff --git a/addons/core/tests/unit/initializers/deprecations-test.js b/addons/core/tests/unit/initializers/deprecations-test.js
new file mode 100644
index 000000000..8bcde847b
--- /dev/null
+++ b/addons/core/tests/unit/initializers/deprecations-test.js
@@ -0,0 +1,34 @@
+import Application from '@ember/application';
+
+import config from 'dummy/config/environment';
+import { initialize } from 'dummy/initializers/deprecations';
+import { module, test } from 'qunit';
+import Resolver from 'ember-resolver';
+import { run } from '@ember/runloop';
+
+module('Unit | Initializer | deprecations', function (hooks) {
+ hooks.beforeEach(function () {
+ this.TestApplication = class TestApplication extends Application {
+ modulePrefix = config.modulePrefix;
+ podModulePrefix = config.podModulePrefix;
+ Resolver = Resolver;
+ };
+ this.TestApplication.initializer({
+ name: 'initializer under test',
+ initialize,
+ });
+
+ this.application = this.TestApplication.create({ autoboot: false });
+ });
+
+ hooks.afterEach(function () {
+ run(this.application, 'destroy');
+ });
+
+ // TODO: Replace this with your real tests.
+ test('it works', async function (assert) {
+ await this.application.boot();
+
+ assert.ok(true);
+ });
+});
diff --git a/addons/rose/.editorconfig b/addons/rose/.editorconfig
index c35a00240..41302d1b0 100644
--- a/addons/rose/.editorconfig
+++ b/addons/rose/.editorconfig
@@ -12,8 +12,5 @@ insert_final_newline = true
indent_style = space
indent_size = 2
-[*.hbs]
-insert_final_newline = false
-
[*.{diff,md}]
trim_trailing_whitespace = false
diff --git a/addons/rose/.eslintrc.js b/addons/rose/.eslintrc.js
index bdb867ae9..46de42474 100644
--- a/addons/rose/.eslintrc.js
+++ b/addons/rose/.eslintrc.js
@@ -58,5 +58,10 @@ module.exports = {
plugins: ['node'],
extends: ['plugin:node/recommended'],
},
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
],
};
diff --git a/addons/rose/addon/components/rose/dropdown/link/index.hbs b/addons/rose/addon/components/rose/dropdown/link/index.hbs
index f4c2623f8..a7593fe8d 100644
--- a/addons/rose/addon/components/rose/dropdown/link/index.hbs
+++ b/addons/rose/addon/components/rose/dropdown/link/index.hbs
@@ -1,20 +1,46 @@
+{{!
+ Ember's LinkTo component won't accept nullish @query or @model, so we have to
+ overcompensate by duplicating it four times, one for every combination.
+ This is really unpleasant.
+}}
{{#if @model}}
-
- {{yield}}
-
+ {{#if @query}}
+
+ {{yield}}
+
+ {{else}}
+
+ {{yield}}
+
+ {{/if}}
{{else}}
-
- {{yield}}
-
+ {{#if @query}}
+
+ {{yield}}
+
+ {{else}}
+
+ {{yield}}
+
+ {{/if}}
{{/if}}
diff --git a/addons/rose/addon/components/rose/form/checkbox/group/index.hbs b/addons/rose/addon/components/rose/form/checkbox/group/index.hbs
new file mode 100644
index 000000000..795df326d
--- /dev/null
+++ b/addons/rose/addon/components/rose/form/checkbox/group/index.hbs
@@ -0,0 +1,12 @@
+{{#each @items as |item|}}
+ {{yield (hash
+ item=item
+ checkbox=(component 'rose/form/checkbox'
+ name=@name
+ disabled=@disabled
+ inline=@inline
+ checked=(includes item @selectedItems)
+ onChange=(fn this.toggleItem item)
+ )
+ )}}
+{{/each}}
diff --git a/addons/rose/addon/components/rose/form/checkbox/group/index.js b/addons/rose/addon/components/rose/form/checkbox/group/index.js
new file mode 100644
index 000000000..bd240645a
--- /dev/null
+++ b/addons/rose/addon/components/rose/form/checkbox/group/index.js
@@ -0,0 +1,37 @@
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { action } from '@ember/object';
+
+/**
+ * A checkbox group represents an array of arbitrary items, which differs from
+ * single checkboxes which represent boolean values. When checkboxes within a
+ * checkbox are toggled, their associated item is toggled within the group's
+ * array value.
+ *
+ * The term "item" is used to disambiguate it from "value", which has an
+ * existing meaning in the context of form fields. However, items
+ * are just arbitrary values.
+ */
+export default class RoseFormCheckboxGroupComponent extends Component {
+ // =actions
+
+ /**
+ * Returns a new copy of the @selectedItems array where the given item is:
+ * - removed from the array, if it was already present
+ * - or added to the array, if it was not already present
+ */
+ @action
+ toggleItem(item) {
+ const selectedItems = this.args.selectedItems || [];
+ const currentItems = [...selectedItems];
+
+ if (currentItems.includes(item)) {
+ const i = currentItems.indexOf(item);
+ currentItems.splice(i, 1);
+ } else {
+ currentItems.push(item);
+ }
+
+ if (this.args.onChange) this.args.onChange(currentItems);
+ }
+}
diff --git a/addons/rose/addon/components/rose/form/checkbox/group/index.stories.mdx b/addons/rose/addon/components/rose/form/checkbox/group/index.stories.mdx
new file mode 100644
index 000000000..e5a87308d
--- /dev/null
+++ b/addons/rose/addon/components/rose/form/checkbox/group/index.stories.mdx
@@ -0,0 +1,54 @@
+import { Meta, Story, Preview } from '@storybook/addon-docs/blocks';
+import { hbs } from 'ember-cli-htmlbars';
+import { action } from '@storybook/addon-actions';
+import { text, boolean, select, object } from '@storybook/addon-knobs';
+
+
+
+# Form checkboxfield group
+
+Renders a form checkboxfield group.
+
+```htmlbars
+
+
+
+```
+
+ {{
+ template: hbs`
+
+
+
+ `,
+ context: {
+ inline: boolean('inline', true),
+ disabled: boolean('disabled', false),
+ items: object('items', [
+ { id: 1, name: 'Foo' },
+ { id: 2, name: 'Bar' },
+ { id: 3, name: 'Baz' },
+ ]),
+ selectedItems: object('selectedItems', []),
+ onChange: action('changed'),
+ }
+ }}
+
diff --git a/addons/rose/addon/components/rose/form/checkbox/index.hbs b/addons/rose/addon/components/rose/form/checkbox/index.hbs
index d9b655458..c8f759924 100644
--- a/addons/rose/addon/components/rose/form/checkbox/index.hbs
+++ b/addons/rose/addon/components/rose/form/checkbox/index.hbs
@@ -6,6 +6,7 @@
id={{this.id}}
name={{@name}}
disabled={{@disabled}}
+ onChange={{@onChange}}
@type="checkbox"
@checked={{if @checked true false}}
aria-describedby="{{if @helperText (concat 'helper-text-' this.id)}} {{if @error (concat 'errors-' this.id)}}" />
diff --git a/addons/rose/app/components/rose/form/checkbox/group.js b/addons/rose/app/components/rose/form/checkbox/group.js
new file mode 100644
index 000000000..4986bf171
--- /dev/null
+++ b/addons/rose/app/components/rose/form/checkbox/group.js
@@ -0,0 +1 @@
+export { default } from 'rose/components/rose/form/checkbox/group';
diff --git a/addons/rose/package.json b/addons/rose/package.json
index 7e167be63..834dc18eb 100644
--- a/addons/rose/package.json
+++ b/addons/rose/package.json
@@ -38,6 +38,7 @@
"emberx-select": "github:adopted-ember-addons/emberx-select#bc5f774"
},
"devDependencies": {
+ "ember-get-config": "^0.3.0",
"@babel/core": "^7.15.5",
"@ember/optional-features": "^2.0.0",
"@ember/test-helpers": "^2.4.2",
@@ -50,6 +51,7 @@
"@storybook/addons": "^6.3.9",
"@storybook/api": "^6.3.12",
"@storybook/cli": "^6.3.10",
+ "@storybook/components": "^6.3.12",
"@storybook/ember": "^6.3.8",
"@storybook/ember-cli-storybook": "^0.4.0",
"babel-eslint": "^10.1.0",
@@ -57,13 +59,13 @@
"broccoli-asset-rev": "^3.0.0",
"doctoc": "^2.0.1",
"ember-auto-import": "^1.12.0",
- "ember-cli": "~3.28.0",
+ "ember-cli": "~3.28.3",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-inject-live-reload": "^2.1.0",
"ember-cli-sass": "^10.0.1",
"ember-cli-sri": "^2.1.1",
"ember-cli-terser": "^4.0.2",
- "ember-cli-update": "^0.54.6",
+ "ember-composable-helpers": "^4.5.0",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-export-application-global": "^2.0.1",
"ember-inline-svg": "^1.0.0",
@@ -73,7 +75,7 @@
"ember-page-title": "^6.2.2",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.3",
- "ember-source": "~3.24.0",
+ "ember-source": "~3.28.4",
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^3.7.0",
"ember-try": "^1.4.0",
@@ -82,6 +84,7 @@
"eslint-plugin-ember": "^10.5.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-qunit": "^6.2.0",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.4.0",
@@ -90,10 +93,11 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"sass": "^1.41.0",
- "sass-lint": "^1.13.1"
+ "sass-lint": "^1.13.1",
+ "webpack": "^5.59.1"
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
},
"ember": {
"edition": "octane"
diff --git a/addons/rose/tests/dummy/app/controllers/index.js b/addons/rose/tests/dummy/app/controllers/index.js
index 45faa7e5a..08fa2b4f1 100644
--- a/addons/rose/tests/dummy/app/controllers/index.js
+++ b/addons/rose/tests/dummy/app/controllers/index.js
@@ -1,12 +1,28 @@
import Controller from '@ember/controller';
+import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
+const possibleItems = [
+ { id: 1, name: 'foo' },
+ { id: 2, name: 'bar' },
+ { id: 3, name: 'baz' },
+];
+
export default class IndexController extends Controller {
- color = 'green';
+ // =attributes
+
+ @tracked items = [...possibleItems];
+ @tracked selectedItems = [possibleItems[2]];
+
+ // =actions
@action
- actionHandler(/*value*/) {
- // eslint-disable-next-line no-console
- //console.log('action handled');
+ checkboxGroupChanged(selected) {
+ this.selectedItems = [...selected];
+ }
+
+ @action
+ clearSelected() {
+ this.selectedItems = [];
}
}
diff --git a/addons/rose/tests/dummy/app/initializers/deprecations.js b/addons/rose/tests/dummy/app/initializers/deprecations.js
new file mode 100644
index 000000000..c955b7e4b
--- /dev/null
+++ b/addons/rose/tests/dummy/app/initializers/deprecations.js
@@ -0,0 +1,17 @@
+import { registerDeprecationHandler } from '@ember/debug';
+import config from 'ember-get-config';
+
+const isTesting = config.environment === 'test';
+
+export function initialize(/* application */) {
+ if (isTesting) {
+ // Disable all deprecations for now in tests.
+ registerDeprecationHandler((/*message, options, next*/) => {
+ return;
+ });
+ }
+}
+
+export default {
+ initialize,
+};
diff --git a/addons/rose/tests/dummy/app/templates/index.hbs b/addons/rose/tests/dummy/app/templates/index.hbs
index ed8345c31..812e1ef45 100644
--- a/addons/rose/tests/dummy/app/templates/index.hbs
+++ b/addons/rose/tests/dummy/app/templates/index.hbs
@@ -1,3 +1,28 @@
+
Checkbox Group
+
+
+
+
+
+ Items selected:
+ {{#each this.selectedItems as |selected|}}
+ {{selected.id}},
+ {{/each}}
+
+
+
+ Clear Selected Items
+
+
+
+
KeyValue Dropdown
`);
- assert.equal(find('button').disabled, true);
+ assert.true(find('button').disabled);
});
test('it adds a style class', async function (assert) {
diff --git a/addons/rose/tests/integration/components/rose/dropdown/button-test.js b/addons/rose/tests/integration/components/rose/dropdown/button-test.js
index b0bd48eb5..92129e5a7 100644
--- a/addons/rose/tests/integration/components/rose/dropdown/button-test.js
+++ b/addons/rose/tests/integration/components/rose/dropdown/button-test.js
@@ -23,7 +23,7 @@ module('Integration | Component | rose/dropdown/button', function (hooks) {
test('it is disabled when @disabled={{true}}', async function (assert) {
await render(hbs``);
- assert.equal(find('button').disabled, true);
+ assert.true(find('button').disabled);
});
test('it adds a style class', async function (assert) {
diff --git a/addons/rose/tests/integration/components/rose/form/checkbox-test.js b/addons/rose/tests/integration/components/rose/form/checkbox-test.js
index 594704918..cd131f0b1 100644
--- a/addons/rose/tests/integration/components/rose/form/checkbox-test.js
+++ b/addons/rose/tests/integration/components/rose/form/checkbox-test.js
@@ -60,17 +60,17 @@ module('Integration | Component | rose/form/checkbox', function (hooks) {
test('it is not checked by default', async function (assert) {
await render(hbs``);
- assert.equal(find('input').checked, false);
+ assert.false(find('input').checked);
});
test('it is not disabled by default', async function (assert) {
await render(hbs``);
- assert.equal(find('input').disabled, false);
+ assert.false(find('input').disabled);
});
test('it is checked when @checked={{true}}', async function (assert) {
await render(hbs``);
- assert.equal(find('input').checked, true);
+ assert.true(find('input').checked);
});
test('it marks error when @error={{true}}', async function (assert) {
@@ -80,6 +80,6 @@ module('Integration | Component | rose/form/checkbox', function (hooks) {
test('it is disabled when @disabled={{true}}', async function (assert) {
await render(hbs``);
- assert.equal(find('input').disabled, true);
+ assert.true(find('input').disabled);
});
});
diff --git a/addons/rose/tests/integration/components/rose/form/checkbox/group-test.js b/addons/rose/tests/integration/components/rose/form/checkbox/group-test.js
new file mode 100644
index 000000000..ae77a2355
--- /dev/null
+++ b/addons/rose/tests/integration/components/rose/form/checkbox/group-test.js
@@ -0,0 +1,100 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, findAll, click } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+
+module('Integration | Component | rose/form/checkbox/group', function (hooks) {
+ setupRenderingTest(hooks);
+
+ let items;
+ let selectedItems;
+
+ hooks.beforeEach(function () {
+ items = [
+ { id: 1, name: 'Foo' },
+ { id: 2, name: 'Bar' },
+ { id: 3, name: 'Baz' },
+ ];
+ selectedItems = [items[2]];
+ });
+
+ test('it renders checkboxes equal in length to an array of items', async function (assert) {
+ assert.expect(1);
+ this.items = items;
+ await render(hbs`
+
+
+
+ `);
+ assert.equal(findAll('input').length, 3);
+ });
+
+ test('it checks checkboxes for items present in a selectedItems array', async function (assert) {
+ assert.expect(1);
+ this.items = items;
+ this.selectedItems = selectedItems;
+ await render(hbs`
+
+
+
+ `);
+ assert.equal(findAll(':checked').length, 1);
+ });
+
+ test('it fires onChange when items are checked, passing an array of selected items', async function (assert) {
+ assert.expect(2);
+ this.items = items;
+ this.selectedItems = selectedItems;
+ this.onChange = (newlySelectedItems) => {
+ assert.equal(selectedItems.length, 1);
+ assert.equal(newlySelectedItems.length, 2);
+ };
+ await render(hbs`
+
+
+
+ `);
+ await click('.rose-form-checkbox:first-child input');
+ });
+
+ test('it fires onChange when items are unchecked, passing an array of selected items', async function (assert) {
+ assert.expect(2);
+ this.items = items;
+ this.selectedItems = selectedItems;
+ this.onChange = (newlySelectedItems) => {
+ assert.equal(selectedItems.length, 1);
+ assert.equal(newlySelectedItems.length, 0);
+ };
+ await render(hbs`
+
+
+
+ `);
+ await click('.rose-form-checkbox:last-child input');
+ });
+});
diff --git a/addons/rose/tests/integration/components/rose/form/radio/group-test.js b/addons/rose/tests/integration/components/rose/form/radio/group-test.js
index dfd2e4bce..4354004e7 100644
--- a/addons/rose/tests/integration/components/rose/form/radio/group-test.js
+++ b/addons/rose/tests/integration/components/rose/form/radio/group-test.js
@@ -43,13 +43,13 @@ module('Integration | Component | rose/form/radio/group', function (hooks) {
`);
- assert.equal(findAll('[type="radio"]')[0].checked, false);
- assert.equal(findAll('[type="radio"]')[1].checked, true);
+ assert.false(findAll('[type="radio"]')[0].checked);
+ assert.true(findAll('[type="radio"]')[1].checked);
await click(findAll('[type="radio"]')[0]);
- assert.equal(findAll('[type="radio"]')[0].checked, true);
- assert.equal(findAll('[type="radio"]')[1].checked, false);
+ assert.true(findAll('[type="radio"]')[0].checked);
+ assert.false(findAll('[type="radio"]')[1].checked);
});
test('it reflects active radiofield value in @selectedValue and triggers a @changed function', async function (assert) {
@@ -100,19 +100,19 @@ module('Integration | Component | rose/form/radio/group', function (hooks) {
`);
- assert.equal(findAll('[type="radio"]')[0].checked, false);
- assert.equal(findAll('[type="radio"]')[1].checked, false);
+ assert.false(findAll('[type="radio"]')[0].checked);
+ assert.false(findAll('[type="radio"]')[1].checked);
this.set('selectedValue', 'flamingo');
- assert.equal(findAll('[type="radio"]')[0].checked, false);
- assert.equal(findAll('[type="radio"]')[1].checked, true);
+ assert.false(findAll('[type="radio"]')[0].checked);
+ assert.true(findAll('[type="radio"]')[1].checked);
this.set('selectedValue', 'pegion');
- assert.equal(findAll('[type="radio"]')[0].checked, true);
- assert.equal(findAll('[type="radio"]')[1].checked, false);
+ assert.true(findAll('[type="radio"]')[0].checked);
+ assert.false(findAll('[type="radio"]')[1].checked);
this.set('selectedValue', 'dog');
- assert.equal(findAll('[type="radio"]')[0].checked, false);
- assert.equal(findAll('[type="radio"]')[1].checked, false);
+ assert.false(findAll('[type="radio"]')[0].checked);
+ assert.false(findAll('[type="radio"]')[1].checked);
});
});
diff --git a/addons/rose/tests/integration/components/rose/form/radio/radio-test.js b/addons/rose/tests/integration/components/rose/form/radio/radio-test.js
index 56c8caebc..af0be8d54 100644
--- a/addons/rose/tests/integration/components/rose/form/radio/radio-test.js
+++ b/addons/rose/tests/integration/components/rose/form/radio/radio-test.js
@@ -28,25 +28,25 @@ module('Integration | Component | rose/form/radio/radio', function (hooks) {
await render(
hbs``
);
- assert.equal(await find('input').checked, true);
+ assert.true(await find('input').checked);
});
test('it is not checked when @value and @selectedValue values are different', async function (assert) {
await render(hbs``);
- assert.equal(await find('input').checked, false);
+ assert.false(await find('input').checked);
await render(hbs``);
- assert.equal(await find('input').checked, false);
+ assert.false(await find('input').checked);
await render(
hbs``
);
- assert.equal(await find('input').checked, false);
+ assert.false(await find('input').checked);
});
test('it is not disabled by default', async function (assert) {
await render(hbs``);
- assert.equal(await find('input').disabled, false);
+ assert.false(await find('input').disabled);
});
test('it is not in error state by default', async function (assert) {
@@ -56,7 +56,7 @@ module('Integration | Component | rose/form/radio/radio', function (hooks) {
test('it is disabled when @disabled={{true}}', async function (assert) {
await render(hbs``);
- assert.equal(await find('input').disabled, true);
+ assert.true(await find('input').disabled);
});
test('it is in error state when @error={{true}}', async function (assert) {
diff --git a/addons/rose/tests/integration/modifiers/on-click-outside-test.js b/addons/rose/tests/integration/modifiers/on-click-outside-test.js
index 7318ef423..294134263 100644
--- a/addons/rose/tests/integration/modifiers/on-click-outside-test.js
+++ b/addons/rose/tests/integration/modifiers/on-click-outside-test.js
@@ -7,6 +7,7 @@ module('Integration | Modifier | on-click-outside', function (hooks) {
setupRenderingTest(hooks);
test('it fires event when an outside element is clicked', async function (assert) {
+ assert.expect(2);
this.set('clickedOutside', (element, event) => {
assert.ok(element);
assert.equal(event.target.id, 'outside');
diff --git a/package.json b/package.json
index cef044455..275cf5d0a 100755
--- a/package.json
+++ b/package.json
@@ -89,6 +89,6 @@
}
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
}
}
diff --git a/ui/admin/.editorconfig b/ui/admin/.editorconfig
index c35a00240..41302d1b0 100644
--- a/ui/admin/.editorconfig
+++ b/ui/admin/.editorconfig
@@ -12,8 +12,5 @@ insert_final_newline = true
indent_style = space
indent_size = 2
-[*.hbs]
-insert_final_newline = false
-
[*.{diff,md}]
trim_trailing_whitespace = false
diff --git a/ui/admin/.eslintrc.js b/ui/admin/.eslintrc.js
index 5062441ff..c926d2400 100644
--- a/ui/admin/.eslintrc.js
+++ b/ui/admin/.eslintrc.js
@@ -55,5 +55,10 @@ module.exports = {
'node/no-unpublished-require': 'off',
},
},
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
],
};
diff --git a/ui/admin/app/components/form/auth-method/oidc/index.hbs b/ui/admin/app/components/form/auth-method/oidc/index.hbs
index 75f421880..1e5cf26d8 100644
--- a/ui/admin/app/components/form/auth-method/oidc/index.hbs
+++ b/ui/admin/app/components/form/auth-method/oidc/index.hbs
@@ -81,7 +81,7 @@
@label={{t 'form.disable_discovered_config_validation.label'}}
@helperText={{t 'form.disable_discovered_config_validation.help'}}
@checked={{@model.attributes.disable_discovered_config_validation}}
- onChange={{fn
+ @onChange={{fn
(mut @model.attributes.disable_discovered_config_validation)
(if @model.attributes.disable_discovered_config_validation false true)
}}
diff --git a/ui/admin/app/components/form/credential-store/index.hbs b/ui/admin/app/components/form/credential-store/index.hbs
index 4da5e3ad3..8f8850784 100644
--- a/ui/admin/app/components/form/credential-store/index.hbs
+++ b/ui/admin/app/components/form/credential-store/index.hbs
@@ -145,7 +145,7 @@
@label={{t 'resources.credential-store.form.tls_skip_verify.label'}}
@helperText={{t 'resources.credential-store.form.tls_skip_verify.help'}}
@checked={{@model.attributes.tls_skip_verify}}
- onChange={{fn
+ @onChange={{fn
(mut @model.attributes.tls_skip_verify)
(if @model.attributes.tls_skip_verify false true)
}}
diff --git a/ui/admin/app/components/form/group/add-members/index.hbs b/ui/admin/app/components/form/group/add-members/index.hbs
index 9a2767a7c..49d5233cb 100644
--- a/ui/admin/app/components/form/group/add-members/index.hbs
+++ b/ui/admin/app/components/form/group/add-members/index.hbs
@@ -27,7 +27,7 @@
{{#if user.accountName}}
{{!
diff --git a/ui/admin/app/components/form/host-set/add-hosts/index.hbs b/ui/admin/app/components/form/host-set/add-hosts/index.hbs
index 9f5a0fcd1..9eaa01c32 100644
--- a/ui/admin/app/components/form/host-set/add-hosts/index.hbs
+++ b/ui/admin/app/components/form/host-set/add-hosts/index.hbs
@@ -28,7 +28,7 @@
{{host.name}}
diff --git a/ui/admin/app/components/form/role/add-principals/index.hbs b/ui/admin/app/components/form/role/add-principals/index.hbs
index af5e73e3d..403de7679 100644
--- a/ui/admin/app/components/form/role/add-principals/index.hbs
+++ b/ui/admin/app/components/form/role/add-principals/index.hbs
@@ -28,7 +28,7 @@
{{#if principal.accountName}}
{{!
diff --git a/ui/admin/app/components/form/target/add-credential-libraries/index.hbs b/ui/admin/app/components/form/target/add-credential-libraries/index.hbs
index d07c27884..ce0c51912 100644
--- a/ui/admin/app/components/form/target/add-credential-libraries/index.hbs
+++ b/ui/admin/app/components/form/target/add-credential-libraries/index.hbs
@@ -27,7 +27,7 @@
{{credentialLibrary.name}}
diff --git a/ui/admin/app/components/form/target/add-host-sets/index.hbs b/ui/admin/app/components/form/target/add-host-sets/index.hbs
index 1885700fd..ca5c7a3e4 100644
--- a/ui/admin/app/components/form/target/add-host-sets/index.hbs
+++ b/ui/admin/app/components/form/target/add-host-sets/index.hbs
@@ -29,7 +29,7 @@
{{hostSet.name}}
diff --git a/ui/admin/app/components/form/user/add-accounts/index.hbs b/ui/admin/app/components/form/user/add-accounts/index.hbs
index 03f00ded9..1e9dd1380 100644
--- a/ui/admin/app/components/form/user/add-accounts/index.hbs
+++ b/ui/admin/app/components/form/user/add-accounts/index.hbs
@@ -29,7 +29,7 @@
{{account.accountName}}
diff --git a/ui/admin/package.json b/ui/admin/package.json
index 215991910..8351cc0e5 100644
--- a/ui/admin/package.json
+++ b/ui/admin/package.json
@@ -51,7 +51,7 @@
"ember-a11y-testing": "^4.2.0",
"ember-auto-import": "^1.12.0",
"ember-breadcrumbs": "^0.2.3",
- "ember-cli": "~3.28.0",
+ "ember-cli": "~3.28.3",
"ember-cli-app-version": "^5.0.0",
"ember-cli-babel": "^7.26.6",
"ember-cli-code-coverage": "^1.0.3",
@@ -63,7 +63,6 @@
"ember-cli-sri": "^2.1.1",
"ember-cli-template-lint": "^2.0.2",
"ember-cli-terser": "^4.0.2",
- "ember-cli-update": "^0.54.6",
"ember-concurrency": "^1.3.0",
"ember-exam": "^6.1.0",
"ember-export-application-global": "^2.0.1",
@@ -75,7 +74,7 @@
"ember-page-title": "^6.2.2",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.3",
- "ember-source": "~3.24.0",
+ "ember-source": "~3.28.4",
"ember-template-lint": "^3.7.0",
"ember-template-lint-plugin-prettier": "^2.0.0",
"eslint": "^7.32.0",
@@ -83,6 +82,7 @@
"eslint-plugin-ember": "^10.5.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-qunit": "^6.2.0",
"faker": "^5.5.3",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
@@ -95,7 +95,7 @@
"sinon": "^11.1.2"
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
},
"ember": {
"edition": "octane"
diff --git a/ui/admin/tests/acceptance/accounts/create-test.js b/ui/admin/tests/acceptance/accounts/create-test.js
index e68e69695..e852a5b64 100644
--- a/ui/admin/tests/acceptance/accounts/create-test.js
+++ b/ui/admin/tests/acceptance/accounts/create-test.js
@@ -150,12 +150,12 @@ module('Acceptance | accounts | create', function (hooks) {
await fillIn('[name="name"]', 'new account');
await click('form [type="submit"]');
await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/accounts/delete-test.js b/ui/admin/tests/acceptance/accounts/delete-test.js
index 8b78b1834..da71a395a 100644
--- a/ui/admin/tests/acceptance/accounts/delete-test.js
+++ b/ui/admin/tests/acceptance/accounts/delete-test.js
@@ -93,8 +93,8 @@ module('Acceptance | accounts | delete', function (hooks) {
await visit(urls.account);
await click('.rose-layout-page-actions .rose-dropdown-button-danger');
await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
diff --git a/ui/admin/tests/acceptance/accounts/set-password-test.js b/ui/admin/tests/acceptance/accounts/set-password-test.js
index 89f9ce3e7..67939ab83 100644
--- a/ui/admin/tests/acceptance/accounts/set-password-test.js
+++ b/ui/admin/tests/acceptance/accounts/set-password-test.js
@@ -100,13 +100,13 @@ module('Acceptance | accounts | set password', function (hooks) {
// NOTE: since set password is a tabbed route with easy navigation away
// from the form, and the form does not directly operate on a model instance,
// a "cancel" flow doesn't make much sense. Disabling for now.
- // test('can cancel setting new password', async function (assert) {
- // assert.expect(1);
- // await visit(urls.setPassword);
- // await fillIn('[name="password"]', 'update password');
- // await click('form button:not([type="submit"])');
- // assert.notOk(find('[name="password"]').textContent.trim());
- // });
+ test.skip('can cancel setting new password', async function (assert) {
+ assert.expect(1);
+ await visit(urls.setPassword);
+ await fillIn('[name="password"]', 'update password');
+ await click('form button:not([type="submit"])');
+ assert.notOk(find('[name="password"]').textContent.trim());
+ });
test('errors are displayed when setting password fails', async function (assert) {
assert.expect(1);
diff --git a/ui/admin/tests/acceptance/accounts/update-test.js b/ui/admin/tests/acceptance/accounts/update-test.js
index 163b7ac9e..139beeccf 100644
--- a/ui/admin/tests/acceptance/accounts/update-test.js
+++ b/ui/admin/tests/acceptance/accounts/update-test.js
@@ -103,8 +103,8 @@ module('Acceptance | accounts | update', function (hooks) {
await fillIn('[name="name"]', 'save account');
await click('form [type="submit"]');
await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
@@ -136,12 +136,12 @@ module('Acceptance | accounts | update', function (hooks) {
await fillIn('[name="name"]', 'existing account');
await click('form [type="submit"]');
await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/auth-methods/delete-test.js b/ui/admin/tests/acceptance/auth-methods/delete-test.js
index f80721f37..d2f32c18e 100644
--- a/ui/admin/tests/acceptance/auth-methods/delete-test.js
+++ b/ui/admin/tests/acceptance/auth-methods/delete-test.js
@@ -72,8 +72,8 @@ module('Acceptance | auth methods | delete', function (hooks) {
await visit(urls.authMethod);
await click('.rose-layout-page-actions .rose-dropdown-button-danger');
await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
diff --git a/ui/admin/tests/acceptance/auth-methods/oidc-test.js b/ui/admin/tests/acceptance/auth-methods/oidc-test.js
index 3bc1f226b..ab37b1d62 100644
--- a/ui/admin/tests/acceptance/auth-methods/oidc-test.js
+++ b/ui/admin/tests/acceptance/auth-methods/oidc-test.js
@@ -102,38 +102,38 @@ module('Acceptance | auth methods | oidc', function (hooks) {
});
// FIXME: How to mock just one request routed to /auth-methods and let everything else passthrough?
- // test('errors are displayed when state update fails', async function (assert) {
- // assert.expect(2);
- // this.server.post('/auth-methods/:idMethod', (_, request) => {
- // // Only respond to state update with error
- // if (request.params.idMethod.match(/(change-state)/i)) {
- // return new Response(
- // 400,
- // {},
- // {
- // status: 400,
- // code: 'error',
- // message: 'Sorry!',
- // }
- // );
- // }
- // return request;
- // });
- // const newState = 'inactive';
- // await visit(urls.authMethod);
- // await click('.rose-layout-page-actions .rose-dropdown-trigger');
- // await click(`.rose-dropdown[open] input[value="${newState}"]`);
- // // debugger;
- // const authMethod = this.server.db.authMethods.find(instances.authMethod.id);
- // assert.notEqual(
- // newState,
- // authMethod.attributes.state,
- // 'Auth method state is not be updated.'
- // );
- // assert.ok(
- // find('[role="alert"]').textContent.trim(),
- // 'Sorry!',
- // 'Displays error message.'
- // );
- // });
+ test.skip('errors are displayed when state update fails', async function (assert) {
+ assert.expect(2);
+ this.server.post('/auth-methods/:idMethod', (_, request) => {
+ // Only respond to state update with error
+ if (request.params.idMethod.match(/(change-state)/i)) {
+ return new Response(
+ 400,
+ {},
+ {
+ status: 400,
+ code: 'error',
+ message: 'Sorry!',
+ }
+ );
+ }
+ return request;
+ });
+ const newState = 'inactive';
+ await visit(urls.authMethod);
+ await click('.rose-layout-page-actions .rose-dropdown-trigger');
+ await click(`.rose-dropdown[open] input[value="${newState}"]`);
+ // debugger;
+ const authMethod = this.server.db.authMethods.find(instances.authMethod.id);
+ assert.notEqual(
+ newState,
+ authMethod.attributes.state,
+ 'Auth method state is not be updated.'
+ );
+ assert.ok(
+ find('.rose-notification-body').textContent.trim(),
+ 'Sorry!',
+ 'Displays error message.'
+ );
+ });
});
diff --git a/ui/admin/tests/acceptance/auth-methods/update-test.js b/ui/admin/tests/acceptance/auth-methods/update-test.js
index 8060e4382..859b0ae57 100644
--- a/ui/admin/tests/acceptance/auth-methods/update-test.js
+++ b/ui/admin/tests/acceptance/auth-methods/update-test.js
@@ -102,50 +102,12 @@ module('Acceptance | auth methods | update', function (hooks) {
await fillIn('[name="name"]', 'existing auth method');
await click('form [type="submit"]');
await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
- find('.rose-form-error-message').textContent.trim(),
- 'Name is required.',
- 'Displays field-level errors.'
- );
- });
-
- test('saving an existing auth method with invalid fields displays error messages', async function (assert) {
- assert.expect(2);
- this.server.patch('/auth-methods/:id', () => {
- return new Response(
- 400,
- {},
- {
- status: 400,
- code: 'invalid_argument',
- message: 'The request was invalid.',
- details: {
- request_fields: [
- {
- name: 'name',
- description: 'Name is required.',
- },
- ],
- },
- }
- );
- });
- await visit(urls.authMethod);
- await click('form [type="button"]', 'Activate edit mode');
- await fillIn('[name="name"]', 'existing auth method');
- await click('form [type="submit"]');
- await a11yAudit();
- assert.ok(
- find('[role="alert"]').textContent.trim(),
- 'The request was invalid.',
- 'Displays primary error message.'
- );
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/authentication-test.js b/ui/admin/tests/acceptance/authentication-test.js
index f42540f4f..3c1cedd48 100644
--- a/ui/admin/tests/acceptance/authentication-test.js
+++ b/ui/admin/tests/acceptance/authentication-test.js
@@ -5,7 +5,7 @@ import {
fillIn,
click,
find,
- //findAll,
+ findAll,
getRootElement,
//setupOnerror,
} from '@ember/test-helpers';
@@ -300,23 +300,23 @@ module('Acceptance | authentication', function (hooks) {
// This test is disabled because it is no longer relevant. On deauth,
// the page is reloaded. If the user was viewing a route requiring
// authentication, they will be redirected accordingly.
- // test('deauthentication redirects to first global authenticate method', async function (assert) {
- // assert.expect(3);
- // await visit(authMethodAuthenticateURL);
- // await fillIn('[name="identification"]', 'test');
- // await fillIn('[name="password"]', 'test');
- // await click('[type="submit"]');
- // assert.ok(currentSession().isAuthenticated);
- // // Open header utilities dropdown
- // await click('.rose-header-utilities .rose-dropdown summary');
- // // Find and click on last element in dropdown - should be deauthenticate button
- // const menu = findAll(
- // '.rose-header-utilities .rose-dropdown .rose-dropdown-content button'
- // );
- // await click(menu[menu.length - 1]);
- // assert.notOk(currentSession().isAuthenticated);
- // assert.equal(currentURL(), authMethodGlobalAuthenticateURL);
- // });
+ test.skip('deauthentication redirects to first global authenticate method', async function (assert) {
+ assert.expect(3);
+ await visit(authMethodAuthenticateURL);
+ await fillIn('[name="identification"]', 'test');
+ await fillIn('[name="password"]', 'test');
+ await click('[type="submit"]');
+ assert.ok(currentSession().isAuthenticated);
+ // Open header utilities dropdown
+ await click('.rose-header-utilities .rose-dropdown summary');
+ // Find and click on last element in dropdown - should be deauthenticate button
+ const menu = findAll(
+ '.rose-header-utilities .rose-dropdown .rose-dropdown-content button'
+ );
+ await click(menu[menu.length - 1]);
+ assert.notOk(currentSession().isAuthenticated);
+ assert.equal(currentURL(), authMethodGlobalAuthenticateURL);
+ });
test('401 responses result in deauthentication', async function (assert) {
assert.expect(2);
diff --git a/ui/admin/tests/acceptance/groups/create-test.js b/ui/admin/tests/acceptance/groups/create-test.js
index 815e4a760..d3cc5fffb 100644
--- a/ui/admin/tests/acceptance/groups/create-test.js
+++ b/ui/admin/tests/acceptance/groups/create-test.js
@@ -109,12 +109,12 @@ module('Acceptance | groups | create', function (hooks) {
await visit(urls.newGroup);
await fillIn('[name="name"]', 'group name');
await click('[type="submit"]');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/groups/delete-test.js b/ui/admin/tests/acceptance/groups/delete-test.js
index c1dec7fdb..58f7498b1 100644
--- a/ui/admin/tests/acceptance/groups/delete-test.js
+++ b/ui/admin/tests/acceptance/groups/delete-test.js
@@ -76,8 +76,8 @@ module('Acceptance | groups | delete', function (hooks) {
});
await visit(urls.group);
await click('.rose-layout-page-actions .rose-dropdown-button-danger');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
diff --git a/ui/admin/tests/acceptance/groups/update-test.js b/ui/admin/tests/acceptance/groups/update-test.js
index 6d39cefbe..696a88e48 100644
--- a/ui/admin/tests/acceptance/groups/update-test.js
+++ b/ui/admin/tests/acceptance/groups/update-test.js
@@ -95,12 +95,12 @@ module('Acceptance | groups | update', function (hooks) {
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('[type="submit"]');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/roles/delete-test.js b/ui/admin/tests/acceptance/roles/delete-test.js
index a965ff63a..ba0363e1d 100644
--- a/ui/admin/tests/acceptance/roles/delete-test.js
+++ b/ui/admin/tests/acceptance/roles/delete-test.js
@@ -88,8 +88,8 @@ module('Acceptance | roles | delete', function (hooks) {
});
await visit(urls.role);
await click('.rose-layout-page-actions .rose-dropdown-button-danger');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
diff --git a/ui/admin/tests/acceptance/roles/update-test.js b/ui/admin/tests/acceptance/roles/update-test.js
index 21737c705..aca161a54 100644
--- a/ui/admin/tests/acceptance/roles/update-test.js
+++ b/ui/admin/tests/acceptance/roles/update-test.js
@@ -107,12 +107,12 @@ module('Acceptance | roles | update', function (hooks) {
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('[type="submit"]');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/users/create-test.js b/ui/admin/tests/acceptance/users/create-test.js
index b69a1f3df..12261e9f5 100644
--- a/ui/admin/tests/acceptance/users/create-test.js
+++ b/ui/admin/tests/acceptance/users/create-test.js
@@ -97,12 +97,12 @@ module('Acceptance | users | create', function (hooks) {
await visit(newUserURL);
await fillIn('[name="name"]', 'User name');
await click('[type="submit"]');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/admin/tests/acceptance/users/delete-test.js b/ui/admin/tests/acceptance/users/delete-test.js
index 14b5371fc..2146278f6 100644
--- a/ui/admin/tests/acceptance/users/delete-test.js
+++ b/ui/admin/tests/acceptance/users/delete-test.js
@@ -77,8 +77,8 @@ module('Acceptance | users | delete', function (hooks) {
});
await visit(userURL);
await click('.rose-layout-page-actions .rose-dropdown-button-danger');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
diff --git a/ui/admin/tests/acceptance/users/update-test.js b/ui/admin/tests/acceptance/users/update-test.js
index 931a58641..f7f448156 100644
--- a/ui/admin/tests/acceptance/users/update-test.js
+++ b/ui/admin/tests/acceptance/users/update-test.js
@@ -96,12 +96,12 @@ module('Acceptance | users | update', function (hooks) {
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'User name');
await click('[type="submit"]');
- assert.ok(
- find('[role="alert"]').textContent.trim(),
+ assert.equal(
+ find('.rose-notification-body').textContent.trim(),
'The request was invalid.',
'Displays primary error message.'
);
- assert.ok(
+ assert.equal(
find('.rose-form-error-message').textContent.trim(),
'Name is required.',
'Displays field-level errors.'
diff --git a/ui/desktop/.editorconfig b/ui/desktop/.editorconfig
index c35a00240..41302d1b0 100644
--- a/ui/desktop/.editorconfig
+++ b/ui/desktop/.editorconfig
@@ -12,8 +12,5 @@ insert_final_newline = true
indent_style = space
indent_size = 2
-[*.hbs]
-insert_final_newline = false
-
[*.{diff,md}]
trim_trailing_whitespace = false
diff --git a/ui/desktop/.eslintrc.js b/ui/desktop/.eslintrc.js
index 6d20176b1..44c31c752 100644
--- a/ui/desktop/.eslintrc.js
+++ b/ui/desktop/.eslintrc.js
@@ -56,5 +56,10 @@ module.exports = {
'node/no-unpublished-require': 'off',
},
},
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
],
};
diff --git a/ui/desktop/package.json b/ui/desktop/package.json
index 590e92035..bc9420931 100755
--- a/ui/desktop/package.json
+++ b/ui/desktop/package.json
@@ -72,7 +72,7 @@
"ember-a11y-testing": "^4.2.0",
"ember-auto-import": "^1.12.0",
"ember-autofocus-modifier": "^2.0.0",
- "ember-cli": "~3.28.0",
+ "ember-cli": "~3.28.3",
"ember-cli-app-version": "^5.0.0",
"ember-cli-babel": "^7.26.6",
"ember-cli-code-coverage": "^1.0.3",
@@ -95,7 +95,7 @@
"ember-page-title": "^6.2.2",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.3",
- "ember-source": "~3.24.0",
+ "ember-source": "~3.28.4",
"ember-template-lint": "^3.7.0",
"ember-template-lint-plugin-prettier": "^2.0.0",
"eslint": "^7.32.0",
@@ -103,6 +103,7 @@
"eslint-plugin-ember": "^10.5.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-qunit": "^6.2.0",
"faker": "^5.5.3",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
@@ -117,7 +118,7 @@
"stylelint-config-sass-guidelines": "^8.0.0"
},
"engines": {
- "node": ">=10 <=15"
+ "node": ">=12 <=17"
},
"ember": {
"edition": "octane"
diff --git a/ui/desktop/tests/end2end/authentication.spec.js b/ui/desktop/tests/end2end/authentication.spec.js
index 93540c0f7..3ba899d13 100644
--- a/ui/desktop/tests/end2end/authentication.spec.js
+++ b/ui/desktop/tests/end2end/authentication.spec.js
@@ -4,12 +4,19 @@ const { _electron: electron } = require('playwright');
const helpers = require('./test-helpers');
let electronApp = null;
+// Subdirectory within tests/end2end/screenshots where the screenshots of this test suite will be stored.
const screenshotsDirectory = 'authentication/';
+// Path where the Boundary Desktop client binary is generated
const executablePath = helpers.returnExecutablePath(
process.platform,
process.arch
);
+// Set login variables
+const originValue = 'http://localhost:9200';
+const loginUsername = 'admin';
+const loginPassword = 'password';
+
test.beforeEach(async () => {
electronApp = await electron.launch({
executablePath: executablePath,
@@ -34,29 +41,15 @@ test.describe('Authentication end to end test suite', async () => {
await boundaryWindow.evaluate(() =>
window.localStorage.setItem('desktop:origin', null)
);
- const originValue = 'http://localhost:9200';
- const authLoginNameValue = 'admin';
- const authLoginPasswordValue = 'password';
- // Fill the origin input
- await boundaryWindow.waitForSelector('[name=host]');
- await boundaryWindow.fill('[name=host]', originValue);
- // Take screenshot
- await boundaryWindow.screenshot({
- path: helpers.generateScreenshotPath(
- screenshotsDirectory,
- 'fillOrigin'
- ),
- fullPage: true,
- });
+ // Perform login
+ await helpers.login(
+ boundaryWindow,
+ originValue,
+ loginUsername,
+ loginPassword
+ );
- // Click the submit button
- await boundaryWindow.waitForSelector('button[type="submit"]');
- await helpers.click(boundaryWindow, 'button[type="submit"]');
-
- // Fill user & password
- await boundaryWindow.fill('[name="identification"]', authLoginNameValue);
- await boundaryWindow.fill('[name="password"]', authLoginPasswordValue);
// Take screenshot
await boundaryWindow.screenshot({
path: helpers.generateScreenshotPath(
@@ -126,32 +119,13 @@ test.describe('Authentication end to end test suite', async () => {
await boundaryWindow.evaluate(() =>
window.localStorage.setItem('desktop:origin', null)
);
- const originValue = 'http://localhost:9200';
- const authLoginNameValue = 'admin';
- const authLoginPasswordValue = '123456';
-
- // Fill the origin input
- await boundaryWindow.fill('[name=host]', originValue);
- // Take screenshot
- await boundaryWindow.screenshot({
- path: helpers.generateScreenshotPath(
- screenshotsDirectory,
- 'fillOrigin'
- ),
- fullPage: true,
- });
-
- // Click the submit button
- await boundaryWindow.waitForSelector('button[type="submit"]');
- await helpers.click(boundaryWindow, 'button[type="submit"]');
-
- // Fill user & password
- await boundaryWindow.fill('[name="identification"]', authLoginNameValue);
- await boundaryWindow.fill('[name="password"]', authLoginPasswordValue);
-
- // Click submit
- await boundaryWindow.waitForSelector('button[type="submit"]');
- await helpers.click(boundaryWindow, 'button[type="submit"]');
+ // Perform login
+ await helpers.login(
+ boundaryWindow,
+ originValue,
+ loginUsername,
+ '123456789'
+ );
// Wait for the notification
await boundaryWindow.waitForSelector('.rose-notification-body');
diff --git a/ui/desktop/tests/end2end/targets.spec.js b/ui/desktop/tests/end2end/targets.spec.js
index e71211cf1..3baa15199 100644
--- a/ui/desktop/tests/end2end/targets.spec.js
+++ b/ui/desktop/tests/end2end/targets.spec.js
@@ -4,12 +4,19 @@ const { _electron: electron } = require('playwright');
const helpers = require('./test-helpers');
let electronApp = null;
+// Subdirectory within tests/end2end/screenshots where the screenshots of this test suite will be stored.
const screenshotsDirectory = 'targets/';
+// Path where the Boundary Desktop client binary is generated
const executablePath = helpers.returnExecutablePath(
process.platform,
process.arch
);
+// Set login variables
+const originValue = 'http://localhost:9200';
+const loginUsername = 'admin';
+const loginPassword = 'password';
+
test.beforeEach(async () => {
electronApp = await electron.launch({
executablePath: executablePath,
@@ -28,30 +35,19 @@ test.afterEach(async () => {
test.describe('Targets end to end test suite', async () => {
test('Connects to a target', async () => {
const boundaryWindow = await electronApp.firstWindow(); // The window that contains the app.
+
// Override local storage origin
await boundaryWindow.evaluate(() =>
window.localStorage.setItem('desktop:origin', null)
);
- const originValue = 'http://localhost:9200';
- const authLoginNameValue = 'admin';
- const authLoginPasswordValue = 'password';
-
- // Fill the origin input
- await boundaryWindow.waitForSelector('[name=host]');
- await boundaryWindow.fill('[name=host]', originValue);
-
- // Click the submit button
- await boundaryWindow.waitForSelector('button[type="submit"]');
- await helpers.click(boundaryWindow, 'button[type="submit"]');
-
- // Fill user & password
- await boundaryWindow.fill('[name="identification"]', authLoginNameValue);
- await boundaryWindow.fill('[name="password"]', authLoginPasswordValue);
-
- // Click submit
- await boundaryWindow.waitForSelector('button[type="submit"]');
- await helpers.click(boundaryWindow, 'button[type="submit"]');
+ // Perform the login
+ await helpers.login(
+ boundaryWindow,
+ originValue,
+ loginUsername,
+ loginPassword
+ );
// Check we are in Targets
await boundaryWindow.waitForURL('**/#/scopes/global/projects/targets');
diff --git a/ui/desktop/tests/end2end/test-helpers.js b/ui/desktop/tests/end2end/test-helpers.js
index ba7e739fd..da35f237e 100644
--- a/ui/desktop/tests/end2end/test-helpers.js
+++ b/ui/desktop/tests/end2end/test-helpers.js
@@ -46,9 +46,34 @@ exports.returnExecutablePath = (platform, arch) => {
/**
* Performs a click with a workarouind due to an error with plain playwright click.
* More info about the issue here: https://github.com/microsoft/playwright/issues/1808
- * @param {*} appWindow The current electron window.
- * @param {*} selector The DOM element selector.
+ * @param {object} appWindow The electron window to perform the action.
+ * @param {string} selector The DOM element selector.
*/
exports.click = async (appWindow, selector) => {
await appWindow.$eval(selector, (element) => element.click());
};
+
+/**
+ * Performs login on the app window provided with the credentials provided.
+ * @param {object} appWindow The electron window to perform the action.
+ * @param {string} origin URL origin to set.
+ * @param {string} username Username to login.
+ * @param {string} password Password to login.
+ */
+exports.login = async (appWindow, origin, username, password) => {
+ // Fill the origin input
+ await appWindow.waitForSelector('[name=host]');
+ await appWindow.fill('[name=host]', origin);
+
+ // Click the set origin submit button
+ await appWindow.waitForSelector('button[type="submit"]');
+ await this.click(appWindow, 'button[type="submit"]');
+
+ // Fill user & password
+ await appWindow.fill('[name="identification"]', username);
+ await appWindow.fill('[name="password"]', password);
+
+ // Click submit
+ await appWindow.waitForSelector('button[type="submit"]');
+ await this.click(appWindow, 'button[type="submit"]');
+};
diff --git a/ui/desktop/tests/integration/components/dialog-detail-test.js b/ui/desktop/tests/integration/components/dialog-detail-test.js
index e3e483325..18156fb76 100644
--- a/ui/desktop/tests/integration/components/dialog-detail-test.js
+++ b/ui/desktop/tests/integration/components/dialog-detail-test.js
@@ -13,7 +13,7 @@ module('Integration | Component | dialog-detail', function (hooks) {
test('it renders with content', async function (assert) {
await render(hbs`
-
+
Test
diff --git a/ui/desktop/tests/unit/services/ipc-test.js b/ui/desktop/tests/unit/services/ipc-test.js
index d193074c5..2e3ab6ae3 100644
--- a/ui/desktop/tests/unit/services/ipc-test.js
+++ b/ui/desktop/tests/unit/services/ipc-test.js
@@ -73,7 +73,7 @@ module('Unit | Service | ipc', function (hooks) {
});
});
- test('IPCRequests reject if receiving an Error instance, where the rejection value is the parsed JSON Error message', async (assert) => {
+ test('IPCRequests reject if receiving an Error instance, where the rejection value is the parsed JSON Error message', async function (assert) {
assert.expect(1);
const stringifiedPayload = JSON.stringify({
foo: 'bar',
diff --git a/yarn.lock b/yarn.lock
index d9cd99d55..c3824f22a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -78,6 +78,27 @@
semver "^6.3.0"
source-map "^0.5.0"
+"@babel/core@^7.0.0", "@babel/core@^7.15.8":
+ 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==
+ dependencies:
+ "@babel/code-frame" "^7.15.8"
+ "@babel/generator" "^7.15.8"
+ "@babel/helper-compilation-targets" "^7.15.4"
+ "@babel/helper-module-transforms" "^7.15.8"
+ "@babel/helpers" "^7.15.4"
+ "@babel/parser" "^7.15.8"
+ "@babel/template" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@babel/types" "^7.15.6"
+ 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/core@^7.14.8", "@babel/core@^7.15.5":
version "7.15.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
@@ -99,27 +120,6 @@
semver "^6.3.0"
source-map "^0.5.0"
-"@babel/core@^7.15.8":
- 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==
- dependencies:
- "@babel/code-frame" "^7.15.8"
- "@babel/generator" "^7.15.8"
- "@babel/helper-compilation-targets" "^7.15.4"
- "@babel/helper-module-transforms" "^7.15.8"
- "@babel/helpers" "^7.15.4"
- "@babel/parser" "^7.15.8"
- "@babel/template" "^7.15.4"
- "@babel/traverse" "^7.15.4"
- "@babel/types" "^7.15.6"
- 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"
@@ -2613,6 +2613,13 @@
resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.44.0.tgz#03d127097dc9cb23052cdb7fcae59d0a9dca53e1"
integrity sha512-i01plR0EgFVz69GDrEuFgq1NheIjZcyTy3c7q+w7d096ddPVeVcRzU3LKaqCfovvLJ+6lJx40j45ecycASUUyw==
+"@glimmer/vm-babel-plugins@0.80.3":
+ version "0.80.3"
+ resolved "https://registry.yarnpkg.com/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.80.3.tgz#434b62172318cac43830d3ac29818cf2c5f111c1"
+ integrity sha512-9ej6xlm5MzHBJ5am2l0dbbn8Z0wJoYoMpM8FcrGMlUP6SPMLWxvxpMsApgQo8u6dvZRCjR3/bw3fdf7GOy0AFw==
+ dependencies:
+ babel-plugin-debug-macros "^0.3.4"
+
"@glimmer/vm@^0.42.2":
version "0.42.2"
resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.42.2.tgz#492a4f05eac587c3a37371b3c62593f20bef553d"
@@ -3514,6 +3521,36 @@
ts-dedent "^2.0.0"
util-deprecate "^1.0.2"
+"@storybook/components@^6.3.12":
+ version "6.3.12"
+ resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.3.12.tgz#0c7967c60354c84afa20dfab4753105e49b1927d"
+ integrity sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==
+ dependencies:
+ "@popperjs/core" "^2.6.0"
+ "@storybook/client-logger" "6.3.12"
+ "@storybook/csf" "0.0.1"
+ "@storybook/theming" "6.3.12"
+ "@types/color-convert" "^2.0.0"
+ "@types/overlayscrollbars" "^1.12.0"
+ "@types/react-syntax-highlighter" "11.0.5"
+ color-convert "^2.0.1"
+ core-js "^3.8.2"
+ fast-deep-equal "^3.1.3"
+ global "^4.4.0"
+ lodash "^4.17.20"
+ markdown-to-jsx "^7.1.3"
+ memoizerific "^1.11.3"
+ overlayscrollbars "^1.13.1"
+ polished "^4.0.5"
+ prop-types "^15.7.2"
+ react-colorful "^5.1.2"
+ react-popper-tooltip "^3.1.1"
+ react-syntax-highlighter "^13.5.3"
+ react-textarea-autosize "^8.3.0"
+ regenerator-runtime "^0.13.7"
+ ts-dedent "^2.0.0"
+ util-deprecate "^1.0.2"
+
"@storybook/core-client@6.3.8":
version "6.3.8"
resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.3.8.tgz#9223b9f22ab86d205dac605bcef15ba0f0068e15"
@@ -4142,6 +4179,22 @@
resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
+"@types/eslint-scope@^3.7.0":
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e"
+ integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==
+ dependencies:
+ "@types/eslint" "*"
+ "@types/estree" "*"
+
+"@types/eslint@*":
+ version "7.28.2"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.2.tgz#0ff2947cdd305897c52d5372294e8c76f351db68"
+ integrity sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
"@types/eslint@^7.2.13":
version "7.28.0"
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a"
@@ -4150,7 +4203,7 @@
"@types/estree" "*"
"@types/json-schema" "*"
-"@types/estree@*":
+"@types/estree@*", "@types/estree@^0.0.50":
version "0.0.50"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
@@ -4541,6 +4594,14 @@
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
+"@webassemblyjs/ast@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
+ integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
+ dependencies:
+ "@webassemblyjs/helper-numbers" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+
"@webassemblyjs/ast@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -4550,16 +4611,31 @@
"@webassemblyjs/helper-wasm-bytecode" "1.9.0"
"@webassemblyjs/wast-parser" "1.9.0"
+"@webassemblyjs/floating-point-hex-parser@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
+ integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
+
"@webassemblyjs/floating-point-hex-parser@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+"@webassemblyjs/helper-api-error@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
+ integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
+
"@webassemblyjs/helper-api-error@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+"@webassemblyjs/helper-buffer@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
+ integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
+
"@webassemblyjs/helper-buffer@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
@@ -4584,11 +4660,35 @@
dependencies:
"@webassemblyjs/ast" "1.9.0"
+"@webassemblyjs/helper-numbers@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
+ integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
+ dependencies:
+ "@webassemblyjs/floating-point-hex-parser" "1.11.1"
+ "@webassemblyjs/helper-api-error" "1.11.1"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/helper-wasm-bytecode@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
+ integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
+
"@webassemblyjs/helper-wasm-bytecode@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+"@webassemblyjs/helper-wasm-section@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
+ integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+
"@webassemblyjs/helper-wasm-section@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
@@ -4599,6 +4699,13 @@
"@webassemblyjs/helper-wasm-bytecode" "1.9.0"
"@webassemblyjs/wasm-gen" "1.9.0"
+"@webassemblyjs/ieee754@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
+ integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
"@webassemblyjs/ieee754@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
@@ -4606,6 +4713,13 @@
dependencies:
"@xtuc/ieee754" "^1.2.0"
+"@webassemblyjs/leb128@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
+ integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
"@webassemblyjs/leb128@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
@@ -4613,11 +4727,30 @@
dependencies:
"@xtuc/long" "4.2.2"
+"@webassemblyjs/utf8@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
+ integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
+
"@webassemblyjs/utf8@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+"@webassemblyjs/wasm-edit@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
+ integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/helper-wasm-section" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+ "@webassemblyjs/wasm-opt" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+ "@webassemblyjs/wast-printer" "1.11.1"
+
"@webassemblyjs/wasm-edit@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
@@ -4632,6 +4765,17 @@
"@webassemblyjs/wasm-parser" "1.9.0"
"@webassemblyjs/wast-printer" "1.9.0"
+"@webassemblyjs/wasm-gen@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
+ integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/ieee754" "1.11.1"
+ "@webassemblyjs/leb128" "1.11.1"
+ "@webassemblyjs/utf8" "1.11.1"
+
"@webassemblyjs/wasm-gen@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
@@ -4643,6 +4787,16 @@
"@webassemblyjs/leb128" "1.9.0"
"@webassemblyjs/utf8" "1.9.0"
+"@webassemblyjs/wasm-opt@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
+ integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+
"@webassemblyjs/wasm-opt@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
@@ -4653,6 +4807,18 @@
"@webassemblyjs/wasm-gen" "1.9.0"
"@webassemblyjs/wasm-parser" "1.9.0"
+"@webassemblyjs/wasm-parser@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
+ integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-api-error" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/ieee754" "1.11.1"
+ "@webassemblyjs/leb128" "1.11.1"
+ "@webassemblyjs/utf8" "1.11.1"
+
"@webassemblyjs/wasm-parser@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
@@ -4677,6 +4843,14 @@
"@webassemblyjs/helper-fsm" "1.9.0"
"@xtuc/long" "4.2.2"
+"@webassemblyjs/wast-printer@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
+ integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@xtuc/long" "4.2.2"
+
"@webassemblyjs/wast-printer@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
@@ -4747,6 +4921,11 @@ acorn-globals@^6.0.0:
acorn "^7.1.1"
acorn-walk "^7.1.1"
+acorn-import-assertions@^1.7.6:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
+ integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
+
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@@ -4789,6 +4968,11 @@ acorn@^8.2.4:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c"
integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==
+acorn@^8.4.1:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
+ integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
+
address@1.1.2, address@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
@@ -6324,28 +6508,6 @@ body@^5.1.0:
raw-body "~1.1.0"
safe-json-parse "~1.0.1"
-boilerplate-update@0.37.4:
- version "0.37.4"
- resolved "https://registry.yarnpkg.com/boilerplate-update/-/boilerplate-update-0.37.4.tgz#51993eccd468fab69457dff799c29b632faf942e"
- integrity sha512-BMUFsxjugQAsRXHT3QPWckpiB+0jp7YU7U7cGSDbL7IATMfJJDCE7/LGppaIzN97/3iLemkbCeRpmjZWRHYdMA==
- dependencies:
- cpr "^3.0.1"
- debug "^4.1.1"
- execa "^3.0.0"
- git-diff-apply "0.22.7"
- https-proxy-agent "^3.0.0"
- inquirer "^7.0.0"
- merge-package.json "^3.1.8"
- npm-package-arg "^7.0.0"
- npx "^10.2.0"
- open "^7.0.0"
- p-reduce "^2.0.0"
- pacote "10.2.1"
- rimraf "^3.0.0"
- semver "^6.0.0"
- tmp "0.1.0"
- which "^2.0.1"
-
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
@@ -6670,6 +6832,25 @@ broccoli-funnel-reducer@^1.0.0:
resolved "https://registry.yarnpkg.com/broccoli-funnel-reducer/-/broccoli-funnel-reducer-1.0.0.tgz#11365b2a785aec9b17972a36df87eef24c5cc0ea"
integrity sha1-ETZbKnha7JsXlyo234fu8kxcwOo=
+broccoli-funnel@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-2.0.1.tgz#6823c73b675ef78fffa7ab800f083e768b51d449"
+ integrity sha512-C8Lnp9TVsSSiZMGEF16C0dCiNg2oJqUKwuZ1K4kVC6qRPG/2Cj/rtB5kRCC9qEbwqhX71bDbfHROx0L3J7zXQg==
+ dependencies:
+ array-equal "^1.0.0"
+ blank-object "^1.0.1"
+ broccoli-plugin "^1.3.0"
+ debug "^2.2.0"
+ 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.0.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-1.2.0.tgz#cddc3afc5ff1685a8023488fff74ce6fb5a51296"
@@ -7170,7 +7351,7 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
-browserslist@4.14.2, browserslist@^3.2.6, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.16.7, browserslist@^4.17.3:
+browserslist@4.14.2, browserslist@^3.2.6, 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:
version "4.17.4"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.4.tgz#72e2508af2a403aec0a49847ef31bd823c57ead4"
integrity sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==
@@ -7286,30 +7467,6 @@ cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3:
unique-filename "^1.1.1"
y18n "^4.0.0"
-cacache@^13.0.1:
- version "13.0.1"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c"
- integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==
- dependencies:
- chownr "^1.1.2"
- figgy-pudding "^3.5.1"
- fs-minipass "^2.0.0"
- glob "^7.1.4"
- graceful-fs "^4.2.2"
- infer-owner "^1.0.4"
- lru-cache "^5.1.1"
- minipass "^3.0.0"
- minipass-collect "^1.0.2"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.2"
- mkdirp "^0.5.1"
- move-concurrently "^1.0.1"
- p-map "^3.0.0"
- promise-inflight "^1.0.1"
- rimraf "^2.7.1"
- ssri "^7.0.0"
- unique-filename "^1.1.1"
-
cacache@^15.0.5:
version "15.2.0"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.2.0.tgz#73af75f77c58e72d8c630a7a2858cb18ef523389"
@@ -7513,10 +7670,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.30001265:
- version "1.0.30001267"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz#b1cf2937175afc0570e4615fc2d2f9069fa0ed30"
- integrity sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001271:
+ version "1.0.30001271"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz#0dda0c9bcae2cf5407cd34cac304186616cc83e8"
+ integrity sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==
capture-exit@^2.0.0:
version "2.0.0"
@@ -7689,7 +7846,7 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
-chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3, chownr@^1.1.4:
+chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
@@ -7774,9 +7931,9 @@ clean-css-promise@^0.1.0:
pinkie-promise "^2.0.0"
clean-css@^3.4.5, clean-css@^4.1.11, clean-css@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
- integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178"
+ integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==
dependencies:
source-map "~0.6.0"
@@ -7897,15 +8054,6 @@ cliui@^3.2.0:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
-cliui@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
- integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
- dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
- wrap-ansi "^2.0.0"
-
cliui@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
@@ -7915,15 +8063,6 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
-cliui@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
- integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
- dependencies:
- string-width "^4.2.0"
- strip-ansi "^6.0.0"
- wrap-ansi "^6.2.0"
-
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@@ -8401,16 +8540,6 @@ cp-file@^7.0.0:
nested-error-stacks "^2.0.0"
p-event "^4.1.0"
-cpr@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/cpr/-/cpr-3.0.1.tgz#b9a55038b7cd81a35c17b9761895bd8496aef1e5"
- integrity sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=
- dependencies:
- graceful-fs "^4.1.5"
- minimist "^1.2.0"
- mkdirp "~0.5.1"
- rimraf "^2.5.4"
-
cpy@^8.1.1:
version "8.1.2"
resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935"
@@ -9381,10 +9510,10 @@ electron-rebuild@^2.0.3:
tar "^6.0.5"
yargs "^16.0.0"
-electron-to-chromium@^1.3.867:
- version "1.3.868"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.868.tgz#ed835023b57ecf0ba63dfe7d50e16b53758ab1da"
- integrity sha512-kZYCHqwJ1ctGrYDlOcWQH+/AftAm/KD4lEnLDNwS0kKwx1x6dU4zv+GuDjsPPOGn/2TjnKBaZjDyjXaoix0q/A==
+electron-to-chromium@^1.3.878:
+ version "1.3.878"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.878.tgz#baa9fb5c24b9b580f08fb245cbb52a22f8fc8fa8"
+ integrity sha512-O6yxWCN9ph2AdspAIszBnd9v8s11hQx8ub9w4UGApzmNRnoKhbulOWqbO8THEQec/aEHtvy+donHZMlh6l1rbA==
element-resize-detector@^1.2.2:
version "1.2.3"
@@ -9895,23 +10024,6 @@ ember-cli-typescript@^4.0.0, ember-cli-typescript@^4.1.0, ember-cli-typescript@^
stagehand "^1.0.0"
walk-sync "^2.2.0"
-ember-cli-update@^0.54.6:
- version "0.54.6"
- resolved "https://registry.yarnpkg.com/ember-cli-update/-/ember-cli-update-0.54.6.tgz#e9f405b4737558e53874025731568ae7c005a48c"
- integrity sha512-0YWkfACDrITm9sl3UNrP8BMYXbRt+iPbAUUv/tY3JWveat8j3aHBR1SI4MqESt3ELkLeLbftTQfU42Tx4Bl/Kg==
- dependencies:
- boilerplate-update "0.37.4"
- debug "^4.1.1"
- execa "^3.4.0"
- fs-extra "^8.0.0"
- inquirer "^7.0.0"
- npm-package-arg "^7.0.0"
- resolve "^1.10.0"
- semver "^6.0.0"
- tmp "0.1.0"
- update-notifier "^4.0.0"
- yargs "^15.1.0"
-
ember-cli-version-checker@^1.0.2:
version "1.3.1"
resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-1.3.1.tgz#0bc2d134c830142da64bf9627a0eded10b61ae72"
@@ -9953,10 +10065,10 @@ ember-cli-version-checker@^5.0.1, ember-cli-version-checker@^5.1.1, ember-cli-ve
semver "^7.3.4"
silent-error "^1.1.1"
-ember-cli@~3.28.0:
- version "3.28.0"
- resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.28.0.tgz#0a0374c9a1d08386ddf56e8098a38b71dd4453bc"
- integrity sha512-CrMs5edFQ2ingO2xfT33T4nUEl8SlvBQ7q+XO9L/GFTvFU07slHxYSvGur0cwgQfOiLnkSTnIaVF1oqBnEmfPQ==
+ember-cli@~3.28.3:
+ version "3.28.3"
+ resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.28.3.tgz#3384c3fb018b58111e30efed15a2f6a9b66b84c3"
+ integrity sha512-DddAQAddbyaOU4NAjTt8g+FoCCK/F00kbj9pcHO1lfAUpIUS9JPBoWxxZ3qO08mUNXi50pdQSPVVRWzN7mNz2g==
dependencies:
"@babel/core" "^7.13.8"
"@babel/plugin-transform-modules-amd" "^7.12.1"
@@ -10060,6 +10172,16 @@ ember-compatibility-helpers@^1.1.1, ember-compatibility-helpers@^1.1.2, ember-co
fs-extra "^9.1.0"
semver "^5.4.1"
+ember-composable-helpers@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-4.5.0.tgz#94febbdf4348e64f45f7a6f993f326e32540a61e"
+ integrity sha512-XjpDLyVPsLCy6kd5dIxZonOECCO6AA5sY5Hr6tYUbJg3s5ghFAiFWaNcYraYC+fL2yPJQAswwpfwGlQORUJZkw==
+ dependencies:
+ "@babel/core" "^7.0.0"
+ broccoli-funnel "2.0.1"
+ 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"
@@ -10498,19 +10620,21 @@ ember-source-channel-url@^3.0.0:
dependencies:
node-fetch "^2.6.0"
-ember-source@~3.24.0:
- version "3.24.5"
- resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.24.5.tgz#7e1da13286f7d1ac63b3d3a547aaeb40bc18a696"
- integrity sha512-j39L7C+q9o9qkwrwNtRN1AVGzE8TlxHm0c6xMzFZFaWMyQt3E7ov72fz3oIn17h8H7zZ1i7dl471Rbqx1GZsLw==
+ember-source@~3.28.4:
+ version "3.28.4"
+ resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.28.4.tgz#b6ac2b1e369ef533d05164c65078b4ceafdb6390"
+ integrity sha512-s7kVy0E08erAHUTI/8SZZvXt3an/xb2g5K+m4Rybvo8Tr/noMk3lIdtyQkSvmgMZ/BbvoW8spS630sO0/JN4Eg==
dependencies:
"@babel/helper-module-imports" "^7.8.3"
"@babel/plugin-transform-block-scoping" "^7.8.3"
"@babel/plugin-transform-object-assign" "^7.8.3"
"@ember/edition-utils" "^1.2.0"
- babel-plugin-debug-macros "^0.3.3"
+ "@glimmer/vm-babel-plugins" "0.80.3"
+ babel-plugin-debug-macros "^0.3.4"
babel-plugin-filter-imports "^4.0.0"
broccoli-concat "^4.2.4"
broccoli-debug "^0.6.4"
+ broccoli-file-creator "^2.1.1"
broccoli-funnel "^2.0.2"
broccoli-merge-trees "^4.2.0"
chalk "^4.0.0"
@@ -10523,9 +10647,9 @@ ember-source@~3.24.0:
ember-cli-version-checker "^5.1.1"
ember-router-generator "^2.0.0"
inflection "^1.12.0"
- jquery "^3.5.0"
+ jquery "^3.5.1"
resolve "^1.17.0"
- semver "^6.1.1"
+ semver "^7.3.4"
silent-error "^1.1.1"
ember-template-lint-plugin-prettier@^2.0.0:
@@ -10733,6 +10857,14 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
+enhanced-resolve@^5.8.3:
+ version "5.8.3"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
+ integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
enquirer@^2.3.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
@@ -10856,6 +10988,11 @@ es-get-iterator@^1.0.2:
is-string "^1.0.5"
isarray "^2.0.5"
+es-module-lexer@^0.9.0:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
+ integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@@ -11056,6 +11193,22 @@ eslint-plugin-prettier@^4.0.0:
dependencies:
prettier-linter-helpers "^1.0.0"
+eslint-plugin-qunit@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-qunit/-/eslint-plugin-qunit-6.2.0.tgz#f4efda29da99523e560848d9592c39c0590c308d"
+ integrity sha512-KvPmkIC2MHpfRxs/r8WUeeGkG6y+3qwSi2AZIBtjcM/YG6Z3k0GxW5Hbu3l7X0TDhljVCeBb9Q5puUkHzl83Mw==
+ dependencies:
+ eslint-utils "^3.0.0"
+ requireindex "^1.2.0"
+
+eslint-scope@5.1.1, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
@@ -11064,14 +11217,6 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-scope@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
- integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^4.1.1"
-
eslint-utils@^2.0.0, eslint-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
@@ -11275,7 +11420,7 @@ events-to-array@^1.0.1:
resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6"
integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=
-events@^3.0.0:
+events@^3.0.0, events@^3.2.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
@@ -11334,7 +11479,7 @@ execa@^2.0.0:
signal-exit "^3.0.2"
strip-final-newline "^2.0.0"
-execa@^3.0.0, execa@^3.4.0:
+execa@^3.0.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
@@ -11962,7 +12107,7 @@ fixturify-project@^2.1.1:
tmp "^0.0.33"
type-fest "^0.11.0"
-fixturify@^1.0.0, fixturify@^1.2.0:
+fixturify@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-1.3.0.tgz#163c468093c7c4d90b70cde39fd6325f6528b25d"
integrity sha512-tL0svlOy56pIMMUQ4bU1xRe6NZbFSa/ABTWMxW2mH38lFGc9TrNAKWcMBQ7eIjo3wqSS8f2ICabFaatFyFmrVQ==
@@ -12538,18 +12683,6 @@ git-cz@^4.3.1:
resolved "https://registry.yarnpkg.com/git-cz/-/git-cz-4.7.6.tgz#1250c486f01724e801a630b848fd8786f7e67e90"
integrity sha512-WtQEXqetJSi9LKPI77bMdSQWvLGjE93egVbR0zjXd1KFKrFvo/YE/UuGNcMeBDiwzxfQBhjyV7Hn0YUZ8Q0BcQ==
-git-diff-apply@0.22.7:
- version "0.22.7"
- resolved "https://registry.yarnpkg.com/git-diff-apply/-/git-diff-apply-0.22.7.tgz#25989575c025f45f066579233894ba8a4afb7e28"
- integrity sha512-tYExAfjrgh/ImXuOmHYnL4dC5spf3e4+mJSYUoaQTZkys3krEX303yFxhVxMTzljsWScgrWj0iGL3Lb0yROhtQ==
- dependencies:
- debug "^4.0.0"
- fixturify "^1.0.0"
- fs-extra "^8.0.0"
- tmp "0.1.0"
- uuid "^3.1.0"
- yargs "^15.0.0"
-
git-fetch-pack@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/git-fetch-pack/-/git-fetch-pack-0.1.1.tgz#7703a32cf0db80f060d2766a34ac00d02cebcdf5"
@@ -12639,6 +12772,11 @@ glob-to-regexp@^0.3.0:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+glob-to-regexp@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+
glob@7.1.4:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
@@ -12706,13 +12844,6 @@ global-dirs@^0.1.0, global-dirs@^0.1.1:
dependencies:
ini "^1.3.4"
-global-dirs@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
- integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
- dependencies:
- ini "1.3.7"
-
global-dirs@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
@@ -12969,7 +13100,7 @@ got@^9.6.0:
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4:
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4:
version "4.2.8"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
@@ -13323,7 +13454,7 @@ homedir-polyfill@^1.0.1:
dependencies:
parse-passwd "^1.0.0"
-hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.9, hosted-git-info@^3.0.2, hosted-git-info@^3.0.8, hosted-git-info@^4.0.1:
+hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.9, hosted-git-info@^3.0.8, hosted-git-info@^4.0.1:
version "3.0.8"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d"
integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==
@@ -13520,14 +13651,6 @@ https-proxy-agent@^2.2.3:
agent-base "^4.3.0"
debug "^3.1.0"
-https-proxy-agent@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81"
- integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==
- dependencies:
- agent-base "^4.3.0"
- debug "^3.1.0"
-
https-proxy-agent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b"
@@ -13712,11 +13835,6 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-ini@1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
- integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
-
ini@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
@@ -13795,7 +13913,7 @@ inquirer@^0.12.0:
strip-ansi "^3.0.0"
through "^2.3.6"
-inquirer@^7.0.0, inquirer@^7.3.3:
+inquirer@^7.3.3:
version "7.3.3"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
@@ -13870,11 +13988,6 @@ invert-kv@^1.0.0:
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-invert-kv@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
- integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
-
ip-regex@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
@@ -14150,14 +14263,6 @@ is-installed-globally@^0.1.0:
global-dirs "^0.1.0"
is-path-inside "^1.0.0"
-is-installed-globally@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
- integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
- dependencies:
- global-dirs "^2.0.1"
- is-path-inside "^3.0.1"
-
is-installed-globally@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
@@ -14212,11 +14317,6 @@ is-npm@^1.0.0:
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
-is-npm@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d"
- integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==
-
is-npm@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
@@ -14263,7 +14363,7 @@ is-path-inside@^1.0.0:
dependencies:
path-is-inside "^1.0.1"
-is-path-inside@^3.0.1, is-path-inside@^3.0.2:
+is-path-inside@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
@@ -14660,6 +14760,15 @@ jest-worker@^26.5.0, jest-worker@^26.6.2:
merge-stream "^2.0.0"
supports-color "^7.0.0"
+jest-worker@^27.0.6:
+ version "27.3.1"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2"
+ integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
joi@^12.0.0:
version "12.0.0"
resolved "https://registry.yarnpkg.com/joi/-/joi-12.0.0.tgz#46f55e68f4d9628f01bbb695902c8b307ad8d33a"
@@ -14674,7 +14783,7 @@ jpeg-js@^0.4.2:
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b"
integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==
-jquery@^3.5.0:
+jquery@^3.5.1:
version "3.6.0"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==
@@ -15056,7 +15165,7 @@ latest-version@^3.0.0:
dependencies:
package-json "^4.0.0"
-latest-version@^5.0.0, latest-version@^5.1.0:
+latest-version@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
@@ -15086,13 +15195,6 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
-lcid@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
- integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
- dependencies:
- invert-kv "^2.0.0"
-
leek@0.0.24:
version "0.0.24"
resolved "https://registry.yarnpkg.com/leek/-/leek-0.0.24.tgz#e400e57f0e60d8ef2bd4d068dc428a54345dbcda"
@@ -15243,20 +15345,6 @@ libnpmteam@^1.0.2:
get-stream "^4.0.0"
npm-registry-fetch "^4.0.0"
-libnpx@10.2.2:
- version "10.2.2"
- resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.2.tgz#5a4171b9b92dd031463ef66a4af9f5cbd6b09572"
- integrity sha512-ujaYToga1SAX5r7FU5ShMFi88CWpY75meNZtr6RtEyv4l2ZK3+Wgvxq2IqlwWBiDZOqhumdeiocPS1aKrCMe3A==
- dependencies:
- dotenv "^5.0.1"
- npm-package-arg "^6.0.0"
- rimraf "^2.6.2"
- safe-buffer "^5.1.0"
- update-notifier "^2.3.0"
- which "^1.3.0"
- y18n "^4.0.0"
- yargs "^11.0.0"
-
libnpx@^10.2.4:
version "10.2.4"
resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.4.tgz#ef0e3258e29aef2ec7ee3276115e20e67f67d4ee"
@@ -15374,6 +15462,11 @@ loader-runner@^2.4.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+loader-runner@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
+
loader-utils@2.0.0, loader-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
@@ -16299,14 +16392,6 @@ merge-descriptors@1.0.1:
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-merge-package.json@^3.1.8:
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/merge-package.json/-/merge-package.json-3.1.8.tgz#2da5ee453c3745565b2fea3bf31dc6ef81e712d7"
- integrity sha512-3/xqeMFcGqMpX79qNs3SDAsNNZ1Q31nqeH0ma4ilB++4SqDnkzmHcbDNEVy67RWIy+pdAdw6XnY31dircVG5lQ==
- dependencies:
- rfc6902-ordered "^4.0.5"
- three-way-merger "0.6.3"
-
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -16499,17 +16584,6 @@ minipass-collect@^1.0.2:
dependencies:
minipass "^3.0.0"
-minipass-fetch@^1.2.1:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.4.tgz#63f5af868a38746ca7b33b03393ddf8c291244fe"
- integrity sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ==
- dependencies:
- minipass "^3.1.0"
- minipass-sized "^1.0.3"
- minizlib "^2.0.0"
- optionalDependencies:
- encoding "^0.1.12"
-
minipass-fetch@^1.3.0, minipass-fetch@^1.3.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6"
@@ -16558,13 +16632,20 @@ minipass@^2.2.0, minipass@^2.3.5:
safe-buffer "^5.1.2"
yallist "^3.0.0"
-minipass@^3.0.0, minipass@^3.0.1, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
+minipass@^3.0.0, minipass@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
dependencies:
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==
+ dependencies:
+ yallist "^4.0.0"
+
minizlib@^2.0.0, minizlib@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
@@ -16801,7 +16882,7 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@@ -16978,10 +17059,10 @@ node-pre-gyp@^0.11.0:
semver "^5.3.0"
tar "^4"
-node-releases@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400"
- integrity sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==
+node-releases@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
+ integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==
node-uuid@~1.4.7:
version "1.4.8"
@@ -17136,16 +17217,6 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
semver "^5.6.0"
validate-npm-package-name "^3.0.0"
-npm-package-arg@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-7.0.0.tgz#52cdf08b491c0c59df687c4c925a89102ef794a5"
- integrity sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==
- dependencies:
- hosted-git-info "^3.0.2"
- osenv "^0.1.5"
- semver "^5.6.0"
- validate-npm-package-name "^3.0.0"
-
npm-package-arg@^8.0.0, npm-package-arg@^8.1.1:
version "8.1.5"
resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44"
@@ -17155,7 +17226,7 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.1.1:
semver "^7.3.4"
validate-npm-package-name "^3.0.0"
-npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.6, npm-packlist@^1.4.8:
+npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.8:
version "1.4.8"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
@@ -17173,15 +17244,6 @@ npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2:
npm-package-arg "^6.0.0"
semver "^5.4.1"
-npm-pick-manifest@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-4.0.0.tgz#5e1b392a2a6310378b9bab32332597030ca073ce"
- integrity sha512-SsYReLe/16UgSL6GKX6GO4o3RVBthVy1uuHq6kZ9mkPeQXpOHbrLZoV13i8fr3LQtET+pLPSfD13e4RIYfkX5Q==
- dependencies:
- figgy-pudding "^3.5.1"
- npm-package-arg "^7.0.0"
- semver "^5.4.1"
-
npm-profile@^4.0.2, npm-profile@^4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.4.tgz#28ee94390e936df6d084263ee2061336a6a1581b"
@@ -17191,7 +17253,7 @@ npm-profile@^4.0.2, npm-profile@^4.0.4:
figgy-pudding "^3.4.1"
npm-registry-fetch "^4.0.0"
-npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.7, npm-registry-fetch@^5.0.1, npm-registry-fetch@~8.1.1:
+npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.7, npm-registry-fetch@~8.1.1:
version "8.1.5"
resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-8.1.5.tgz#33270c6722030c2d158a970d1327dcd9a149b5c5"
integrity sha512-yZPNoJK9clx1jhSXU54kU6Aj1SV2p7mXUs1W/6OjQvek3wb1RrjDCrt4iY1+VX9eBQvvSGEpzNmYkRUaTL8rqg==
@@ -17246,7 +17308,7 @@ npm-user-validate@^1.0.1:
resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.1.tgz#31428fc5475fe8416023f178c0ab47935ad8c561"
integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw==
-npm@5.1.0, npm@~6.14.6:
+npm@~6.14.6:
version "6.14.15"
resolved "https://registry.yarnpkg.com/npm/-/npm-6.14.15.tgz#97dd51af5b5d6225b611b40c5cb4d31da1d467fe"
integrity sha512-dkcQc4n+DiJAMYG2haNAMyJbmuvevjXz+WC9dCUzodw8EovwTIc6CATSsTEplCY6c0jG4OshxFGFJsrnKJguWA==
@@ -17377,14 +17439,6 @@ npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2:
gauge "~2.7.3"
set-blocking "~2.0.0"
-npx@^10.2.0:
- version "10.2.2"
- resolved "https://registry.yarnpkg.com/npx/-/npx-10.2.2.tgz#de4be1b76e6bcbf750486925b34a07eed1db01b4"
- integrity sha512-eImmySusyeWphzs5iNh791XbZnZG0FSNvM4KSah34pdQQIDsdTDhIwg1sjN3AIVcjGLpbQ/YcfqHPshKZQK1fA==
- dependencies:
- libnpx "10.2.2"
- npm "5.1.0"
-
nth-check@^1.0.2, nth-check@^2.0.0, nth-check@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
@@ -17563,7 +17617,7 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
-open@^7.0.0, open@^7.0.2, open@^7.0.3, open@^7.2.1:
+open@^7.0.2, open@^7.0.3, open@^7.2.1:
version "7.4.2"
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
@@ -17655,15 +17709,6 @@ os-locale@^2.0.0:
lcid "^1.0.0"
mem "^1.1.0"
-os-locale@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
- integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
- dependencies:
- execa "^1.0.0"
- lcid "^2.0.0"
- mem "^4.0.0"
-
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -17823,11 +17868,6 @@ p-map@^4.0.0:
dependencies:
aggregate-error "^3.0.0"
-p-reduce@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a"
- integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==
-
p-timeout@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038"
@@ -17872,31 +17912,6 @@ package-json@^6.3.0:
registry-url "^5.0.0"
semver "^6.2.0"
-pacote@10.2.1:
- version "10.2.1"
- resolved "https://registry.yarnpkg.com/pacote/-/pacote-10.2.1.tgz#4107f72eeaaacb47eb68952ed31c050bab9d3f94"
- integrity sha512-sPHVOF7uKY8yDivKYimb5l3D8BvNNjR+9FmzkThOTtftkddGY/C6uENVkgc3HQtOpCX8R2qztkSAOI369bgLEA==
- dependencies:
- cacache "^13.0.1"
- chownr "^1.1.3"
- fs-minipass "^2.0.0"
- infer-owner "^1.0.4"
- lru-cache "^5.1.1"
- minipass "^3.0.1"
- minipass-fetch "^1.2.1"
- npm-package-arg "^7.0.0"
- npm-packlist "^1.4.6"
- npm-pick-manifest "^4.0.0"
- npm-registry-fetch "^5.0.1"
- osenv "^0.1.5"
- promise-inflight "^1.0.1"
- promise-retry "^1.1.1"
- read-package-json-fast "^1.0.3"
- semver "^6.3.0"
- ssri "^7.1.0"
- tar "^5.0.5"
- which "^2.0.1"
-
pacote@^9.1.0, pacote@^9.5.12, pacote@^9.5.3:
version "9.5.12"
resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66"
@@ -18828,7 +18843,7 @@ punycode@^1.2.4, punycode@^1.4.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-pupa@^2.0.1, pupa@^2.1.1:
+pupa@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
@@ -19250,14 +19265,6 @@ read-installed@~4.0.3:
optionalDependencies:
graceful-fs "^4.1.2"
-read-package-json-fast@^1.0.3:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz#fba77b0b0d66b1ab344e214cb0876577e749c423"
- integrity sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==
- dependencies:
- json-parse-even-better-errors "^2.3.0"
- npm-normalize-package-bin "^1.0.1"
-
"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a"
@@ -20051,19 +20058,6 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rfc6902-ordered@^4.0.5:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/rfc6902-ordered/-/rfc6902-ordered-4.0.5.tgz#054a23984401ad276aa668def89e010038e4dd95"
- integrity sha512-OsdXZ7FP8DPXd+p+qRxAYi2yFsgAzTp4+ZuvhJri6lLyZYsm3zvGGq5qrmN/jmmv06IV/KVDT062owHUc2Ec+A==
- dependencies:
- debug "^4.0.0"
- rfc6902 "^3.0.1"
-
-rfc6902@^3.0.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-3.1.1.tgz#24fc3b2568496100ac507c2e27e61ec5a1c134dd"
- integrity sha512-aHiEm2S4mQSyyIaK7NVotfmVkgOOn1K9iuuSCIKJ8eIAte/8o06Vp06Z2NcLrmMahDmA+2F6oHx33P4NOQ1JnQ==
-
rimraf@^2.2.8, rimraf@^2.3.4, rimraf@^2.4.1, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
@@ -20325,7 +20319,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0:
ajv "^6.12.4"
ajv-keywords "^3.5.2"
-schema-utils@^3.0.0:
+schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
@@ -20420,6 +20414,13 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
+serialize-javascript@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+ dependencies:
+ randombytes "^2.1.0"
+
serve-favicon@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0"
@@ -20801,6 +20802,14 @@ source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@~0.5.
buffer-from "^1.0.0"
source-map "^0.6.0"
+source-map-support@~0.5.20:
+ version "0.5.20"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
+ integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
source-map-url@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
@@ -20973,14 +20982,6 @@ ssri@^6.0.0, ssri@^6.0.1, ssri@^6.0.2:
dependencies:
figgy-pudding "^3.5.1"
-ssri@^7.0.0, ssri@^7.1.0:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.1.tgz#33e44f896a967158e3c63468e47ec46613b95b5f"
- integrity sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==
- dependencies:
- figgy-pudding "^3.5.1"
- minipass "^3.1.1"
-
ssri@^8.0.0, ssri@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
@@ -21440,7 +21441,7 @@ sumchecker@^3.0.1:
dependencies:
debug "^4.1.0"
-supports-color@8.1.1:
+supports-color@8.1.1, supports-color@^8.0.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
@@ -21583,7 +21584,12 @@ tapable@^1.0.0, tapable@^1.1.3:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.19, tar@^5.0.5, tar@^6.0.2, tar@^6.0.5, tar@^6.1.0, tar@^6.1.9:
+tapable@^2.1.1, tapable@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+
+tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.19, tar@^6.0.2, tar@^6.0.5, tar@^6.1.0, tar@^6.1.9:
version "6.1.11"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
@@ -21671,6 +21677,18 @@ terser-webpack-plugin@^4.2.3:
terser "^5.3.4"
webpack-sources "^1.4.3"
+terser-webpack-plugin@^5.1.3:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1"
+ integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==
+ dependencies:
+ jest-worker "^27.0.6"
+ p-limit "^3.1.0"
+ schema-utils "^3.1.1"
+ serialize-javascript "^6.0.0"
+ source-map "^0.6.1"
+ terser "^5.7.2"
+
terser@^4.1.2, terser@^4.6.3:
version "4.8.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
@@ -21689,6 +21707,15 @@ terser@^5.3.0, terser@^5.3.4:
source-map "~0.7.2"
source-map-support "~0.5.19"
+terser@^5.7.2:
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
+ integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.7.2"
+ source-map-support "~0.5.20"
+
test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
@@ -21743,13 +21770,6 @@ text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0:
resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4"
integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==
-three-way-merger@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/three-way-merger/-/three-way-merger-0.6.3.tgz#ad4d9cd889f0c81ab2e820301a4663ee5def0334"
- integrity sha512-sjXsAqIiluhRBvbXfri1dBI5NSqfl/fe8R3QypAR15qeMRrsBodrGeROBtve2BQnxB9Ub6Fs0e/H1OZdaELD7A==
- dependencies:
- semver "^6.0.0"
-
throttle-debounce@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
@@ -21863,7 +21883,7 @@ tmp@0.0.33, tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
-tmp@0.1.0, tmp@^0.1.0:
+tmp@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==
@@ -22510,25 +22530,6 @@ update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0:
semver-diff "^2.0.0"
xdg-basedir "^3.0.0"
-update-notifier@^4.0.0:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
- integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
- dependencies:
- boxen "^4.2.0"
- chalk "^3.0.0"
- configstore "^5.0.1"
- has-yarn "^2.1.0"
- import-lazy "^2.1.0"
- is-ci "^2.0.0"
- is-installed-globally "^0.3.1"
- is-npm "^4.0.0"
- is-yarn-global "^0.3.0"
- latest-version "^5.0.0"
- pupa "^2.0.1"
- semver-diff "^3.1.1"
- xdg-basedir "^4.0.0"
-
update-notifier@^5.0.1:
version "5.1.0"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
@@ -22717,7 +22718,7 @@ uuid-browser@^3.1.0:
resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410"
integrity sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=
-uuid@^3.1.0, uuid@^3.3.2, uuid@^3.3.3:
+uuid@^3.3.2, uuid@^3.3.3:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
@@ -22927,6 +22928,14 @@ watchpack@^1.7.4:
chokidar "^3.4.1"
watchpack-chokidar2 "^2.0.1"
+watchpack@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce"
+ integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==
+ dependencies:
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.1.2"
+
wcwidth@^1.0.0, wcwidth@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
@@ -22991,6 +23000,11 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
source-list-map "^2.0.0"
source-map "~0.6.1"
+webpack-sources@^3.2.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d"
+ integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==
+
webpack-virtual-modules@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299"
@@ -23027,6 +23041,36 @@ webpack@4, webpack@^4.43.0:
watchpack "^1.7.4"
webpack-sources "^1.4.1"
+webpack@^5.59.1:
+ version "5.59.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.59.1.tgz#60c77e9aad796252153d4d7ab6b2d4c11f0e548c"
+ integrity sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==
+ dependencies:
+ "@types/eslint-scope" "^3.7.0"
+ "@types/estree" "^0.0.50"
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/wasm-edit" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+ acorn "^8.4.1"
+ acorn-import-assertions "^1.7.6"
+ browserslist "^4.14.5"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^5.8.3"
+ es-module-lexer "^0.9.0"
+ eslint-scope "5.1.1"
+ events "^3.2.0"
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.2.4"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^4.2.0"
+ mime-types "^2.1.27"
+ neo-async "^2.6.2"
+ schema-utils "^3.1.0"
+ tapable "^2.1.1"
+ terser-webpack-plugin "^5.1.3"
+ watchpack "^2.2.0"
+ webpack-sources "^3.2.0"
+
websocket-driver@>=0.5.1:
version "0.7.4"
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
@@ -23202,15 +23246,6 @@ wrap-ansi@^5.1.0:
string-width "^3.0.0"
strip-ansi "^5.0.0"
-wrap-ansi@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
- integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@@ -23366,7 +23401,7 @@ yaml@^1.10.0, yaml@^1.7.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
-yargs-parser@20.2.4, yargs-parser@^15.0.1, yargs-parser@^18.1.2, yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^7.0.0, yargs-parser@^9.0.2, yargs-parser@~20.2.7:
+yargs-parser@20.2.4, yargs-parser@^15.0.1, yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^7.0.0, yargs-parser@~20.2.7:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
@@ -23394,24 +23429,6 @@ yargs@16.2.0, yargs@^16.0.0, yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
-yargs@^11.0.0:
- version "11.1.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766"
- integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==
- dependencies:
- cliui "^4.0.0"
- decamelize "^1.1.1"
- find-up "^2.1.0"
- get-caller-file "^1.0.1"
- os-locale "^3.1.0"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^9.0.2"
-
yargs@^14.2.3:
version "14.2.3"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"
@@ -23429,23 +23446,6 @@ yargs@^14.2.3:
y18n "^4.0.0"
yargs-parser "^15.0.1"
-yargs@^15.0.0, yargs@^15.1.0:
- version "15.4.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
- integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
- dependencies:
- cliui "^6.0.0"
- decamelize "^1.2.0"
- find-up "^4.1.0"
- get-caller-file "^2.0.1"
- require-directory "^2.1.1"
- require-main-filename "^2.0.0"
- set-blocking "^2.0.0"
- string-width "^4.2.0"
- which-module "^2.0.0"
- y18n "^4.0.0"
- yargs-parser "^18.1.2"
-
yargs@^8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"